すべてのプロダクト
Search
ドキュメントセンター

:helm-mapkubeapisを使用してKubernetesリソースのAPIバージョンを更新し、一括アップグレードを実行します。

最終更新日:Nov 11, 2024

helm-mapkubeapisを使用して、Helmリリースのメタデータ内の廃止または削除されたKubernetes APIを、サポートされているKubernetes APIに更新できます。 ワークロードとリスクを軽減し、サービスの安定性を確保します。 このトピックでは、helm-mapkubeapisを使用して一括アップグレードを実行し、KubernetesリソースのAPIバージョンを更新する方法について説明します。

シナリオ

Kubernetes 1.22以降では、Kubernetesリソースオブジェクトに対して複数の新しいAPIバージョンがリリースされています。 上記のエラーを修正するために、KubernetesリソースのAPIバージョンを更新できます。

  • rendered manifests contain a new resource that already exists. Unable to continue with update: existing resource conflict: kind: MutatingWebhookConfiguration, namespace: , name: mse-pilot-ack-mse-pilot
  • Error: UPGRADE FAILED: rendered manifests contain a resource that already exists. Unable to continue with update: MutatingWebhookConfiguration "ack-node-local-dns-admission-controller" in namespace "" exists and cannot be imported into the current release: invalid ownership metadata; label validation error: missing key "app.kubernetes.io/managed-by": must be set to "Helm"; annotation validation error: missing key "meta.helm.sh/release-name": must be set to "ack-node-local-dns"; annotation validation error: missing key "meta.helm.sh/release-namespace": must be set to "kube-system"

    に設定する必要があります。

前提条件

Go 1.13以降がインストールされています。 詳細については、「Go 1.13」をご参照ください。

ステップ1: helm-mapkubeapisをダウンロードしてインストールする

次のコマンドを実行してhelm-mapkubeapisをダウンロードしてインストールします。

mkdir -p ${GOPATH}/src/github.com
cd $_
git clone git@github.com:helm/helm-mapkubeapis.git
cd helm-mapkubeapis
make
export HELM_LINTER_PLUGIN_NO_INSTALL_HOOK=true
helm plugin install <your_path>/helm-mapkubeapis

ステップ2: APIのバージョンを更新する

この例では、ack-node-local-dnsリリースのMutatingWebhookConfigurationリソースのAPIバージョンを更新する方法について説明します。

  1. 次のコマンドを実行して、MutatingWebhookConfigurationリソースのAPIバージョンの履歴を表示します。

    vim  ${GOPATH}/src/github.com/helm-mapkubeapis/config/Map.yaml

    期待される出力:

      - deprecatedAPI: "apiVersion: admissionregistration.k8s.io/v1beta1\nkind: MutatingWebhookConfiguration"
        newAPI: "apiVersion: admissionregistration.k8s.io/v1\nkind: MutatingWebhookConfiguration"
        deprecatedInVersion: "v1.17"
        removedInVersion: "v1.20"

    出力は、MutatingWebhookConfigurationリソースのAPIバージョンがKubernetes 1.20以降でv1beta1からv1に更新されることを示しています。

  2. 次のコマンドを実行して、ack-node-local-dnsリリースのAPIバージョンを更新する必要があるかどうかを確認します。

    helm mapkubeapis ack-node-local-dns --namespace kube-system --dry-run

    期待される出力:

    2022/01/18 14:21:57 NOTE: This is in dry-run mode, the following actions will not be executed.
    2022/01/18 14:21:57 Run without --dry-run to take the actions described below:
    2022/01/18 14:21:57
    2022/01/18 14:21:57 Release 'ack-node-local-dns' will be checked for deprecated or removed Kubernetes APIs and will be updated if necessary to supported API versions.
    2022/01/18 14:21:57 Get release 'ack-node-local-dns' latest version.
    2022/01/18 14:21:57 Check release 'ack-node-local-dns' for deprecated or removed APIs...
    2022/01/18 14:21:57 Found deprecated or removed Kubernetes API:
    "apiVersion: admissionregistration.k8s.io/v1beta1
    kind: MutatingWebhookConfiguration"
    Supported API equivalent:
    "apiVersion: admissionregistration.k8s.io/v1
    kind: MutatingWebhookConfiguration"
    2022/01/18 14:21:57 Finished checking release 'ack-node-local-dns' for deprecated or removed APIs.
    2022/01/18 14:21:57 Deprecated or removed APIs exist, updating release: ack-node-local-dns.
    2022/01/18 14:21:57 Map of release 'ack-node-local-dns' deprecated or removed APIs to supported versions, completed successfully.

    未推奨または削除されたKubernetes APIが見つかりましたが、出力で返されます。 これは、APIバージョンを更新する必要があることを示します。

  3. 次のコマンドを実行して、MutatingWebhookConfigurationリソースのAPIバージョンをv1beta1からv1に更新します。

    helm mapkubeapis ack-node-local-dns --namespace kube-system

    期待される出力:

    2022/01/18 14:31:38 Release 'ack-node-local-dns' will be checked for deprecated or removed Kubernetes APIs and will be updated if necessary to supported API versions.
    2022/01/18 14:31:38 Get release 'ack-node-local-dns' latest version.
    2022/01/18 14:31:38 Check release 'ack-node-local-dns' for deprecated or removed APIs...
    2022/01/18 14:31:38 Found deprecated or removed Kubernetes API:
    "apiVersion: admissionregistration.k8s.io/v1beta1
    kind: MutatingWebhookConfiguration"
    Supported API equivalent:
    "apiVersion: admissionregistration.k8s.io/v1
    kind: MutatingWebhookConfiguration"
    2022/01/18 14:31:38 Finished checking release 'ack-node-local-dns' for deprecated or removed APIs.
    2022/01/18 14:31:38 Deprecated or removed APIs exist, updating release: ack-node-local-dns.
    2022/01/18 14:31:38 Set status of release version 'ack-node-local-dns.v9' to 'superseded'.
    2022/01/18 14:31:38 Release version 'ack-node-local-dns.v9' updated successfully.
    2022/01/18 14:31:38 Add release version 'ack-node-local-dns.v10' with updated supported APIs.
    2022/01/18 14:31:38 Release version 'ack-node-local-dns.v10' added successfully.
    2022/01/18 14:31:38 Release 'ack-node-local-dns' with deprecated or removed APIs updated successfully to new version.
    2022/01/18 14:31:38 Map of release 'ack-node-local-dns' deprecated or removed APIs to supported versions, completed successfully.

    非推奨または削除されたAPIが新しいバージョンに正常に更新された「ack-node-local-dns」をリリースします。 は出力で返されます。 これは、MutatingWebhookConfigurationリソースのAPIバージョンがv1beta1からv1に更新されたことを示します。