Amazon EKS アドオンの更新 - Amazon EKS

このページの改善にご協力ください

本ユーザーガイドの改善にご協力いただけませんか? このページの下部までスクロールし、[GitHub でこのページの編集] を選択します。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。

Amazon EKS アドオンの更新

Amazon EKS は、新しいバージョンがリリース、あるいはクラスターを新しい Kubernetes マイナーバージョンに更新しても、アドオンを自動的に更新しません。既存のクラスターのアドオンを更新するには、更新を開始する必要があります。更新を開始した後、Amazon EKS がアドオンを更新します。アドオンを更新する前に、アドオンの現行のドキュメントを確認してください。利用可能なアドオンのリストについては、「使用可能な AWS の Amazon EKS アドオン」を参照してください。アドオンに IAM ロールが必要な場合、ロールの作成の詳細については、使用可能な AWS の Amazon EKS アドオン の特定のアドオンの詳細を参照してください。

前提条件

アドオンを作成する前に、次を完了します:

手順

eksctl、AWS Management Console、AWS CLI のいずれかを使用して Amazon EKS アドオンを更新できます。

eksctl
eksctl を使用して Amazon EKS アドオンを更新する方法
  1. クラスターにインストールされている現在のアドオンおよびアドオンのバージョンを確認します。my-cluster を自分のクラスター名に置き換えます。

    eksctl get addon --cluster my-cluster

    出力例は次のとおりです。

    NAME VERSION STATUS ISSUES IAMROLE UPDATE AVAILABLE coredns v1.8.7-eksbuild.2 ACTIVE 0 kube-proxy v1.23.7-eksbuild.1 ACTIVE 0 v1.23.8-eksbuild.2 vpc-cni v1.10.4-eksbuild.1 ACTIVE 0 v1.12.0-eksbuild.1,v1.11.4-eksbuild.1,v1.11.3-eksbuild.1,v1.11.2-eksbuild.1,v1.11.0-eksbuild.1

    クラスターにあるアドオンおよびバージョンによって、出力が異なる場合があります。前述の出力例では、クラスターの既存のアドオン 2 つは UPDATE AVAILABLE 列に新しいバージョンがあることがわかります。

  2. アドオンを更新します。

    1. デバイスに沿ったコマンドをコピーします。必要に応じてコマンドに次の変更を加えます。

      • my-cluster を自分のクラスター名に置き換えます。

      • region-code をクラスターのある AWS リージョン に置き換えます。

      • vpc-cni を更新する前のステップの出力で返されたアドオンの名前に置き換えます。

      • 利用可能な最新バージョンよりも前のバージョンに更新する場合、latest を使用する前のステップの出力で返されたバージョン番号に置き換えます。一部のアドオンには推奨バージョンがあります。詳細については、更新するアドオンのドキュメントを参照してください。

      • アドオンが Kubernetes サービスアカウントおよび IAM ロールを使用する場合、111122223333 をアカウント ID に置き換え、role-name を作成した既存の IAM ロールの名前に置き換えます。ロールの作成手順については、作成するアドオンのドキュメントを参照してください。サービスアカウントロールを指定するには、クラスター用に IAM OpenID Connect (OIDC) プロバイダーが必要です。クラスター用に持っているかどうかを確認、あるいは作成するには、「クラスターの IAM OIDC プロバイダーを作成する」を参照してください。

        アドオンが Kubernetes サービスアカウントおよび IAM ロールを使用しない場合、serviceAccountRoleARN: arn:aws:iam::111122223333:role/role-name 行を削除してください。

      • preserve オプションはアドオンの既存値を保存します。アドオン設定にカスタム値を設定していて、このオプションを使用しない場合、Amazon EKS は値をデフォルト値で上書きします。このオプションを使用する場合、実稼働クラスターのアドオンを更新する前に、非稼動クラスターのフィールドおよび値変更をテストすることをお勧めします。この値を overwrite に変更する場合、すべての設定が Amazon EKS のデフォルト値に変更されます。いずれかの設定にカスタム値を設定した場合、Amazon EKS のデフォルト値で上書きされる可能性があります。この値を none に変更した場合、Amazon EKS は設定の値を一切変更しませんが、更新が失敗する可能性があります。更新に失敗した場合、競合の解決に役立つエラーメッセージが返されます。

        cat >update-addon.yaml <<EOF apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code addons: - name: vpc-cni version: latest serviceAccountRoleARN: arn:aws:iam::111122223333:role/role-name resolveConflicts: preserve EOF
    2. 変更コマンドを実行して update-addon.yaml ファイルを作成します。

    3. クラスターに設定ファイルを適用します。

      eksctl update addon -f update-addon.yaml

    アドオンの更新の詳細については、eksctl ドキュメントの「アドオンの更新」を参照してください。

AWS Management Console
AWS Management Console を使用して Amazon EKS アドオンを更新する方法
  1. Amazon EKS コンソール (https://console.aws.amazon.com/eks/home#/clusters) を開きます。

  2. 左のナビゲーションペインで [クラスター] を選択します。

  3. アドオンを更新するクラスターの名前を選択します。

  4. [アドオン] タブを選択します。

  5. 更新するアドオンを選択します。

  6. [編集] を選択します。

  7. [アドオンの名前を設定] ページで、次を実行します:

    1. 使用する [バージョン] を選択します。アドオンには推奨バージョンがある場合があります。詳細については、更新するアドオンのドキュメントを参照してください。

    2. [IAM ロールの選択] では、ノードの IAM ロール ([未設定])、またはアドオンで使用するために作成した既存のロールを使用できます。選択するロールがない場合、既存のロールがありません。選択したオプションを問わず、作成するアドオンのドキュメントを参照し、IAM ポリシーを作成してロールにアタッチしてください。IAM ロールを選択するには、クラスター用に IAM OpenID Connect (OIDC) プロバイダーが必要です。クラスター用に持っているかどうかを確認、あるいは作成するには、「クラスターの IAM OIDC プロバイダーを作成する」を参照してください。

    3. [オプションの構成設定] を展開します。

    4. [設定値] で、アドオン固有の設定情報を入力します。詳細については、更新するアドオンのドキュメントを参照してください。

    5. [コンフリクト解決方法] で、いずれかのオプションを選択します。アドオン設定にカスタム値を設定している場合、[保存] オプションをお勧めします。このオプションを選択しない場合、Amazon EKS は値をデフォルト値で上書きします。このオプションを使用する場合、実稼働クラスターのアドオンを更新する前に、非稼動クラスターのフィールドおよび値変更をテストすることをお勧めします。

  8. [Save changes] (変更の保存) をクリックします。

AWS CLI
前提条件

ご使用のデバイスまたは AWS CloudShell で、バージョン 2.12.3 以降、または AWS Command Line Interface (AWS CLI) のバージョン 1.27.160 以降がインストールおよび設定されていること。現在のバージョンを確認するには、「aws --version | cut -d / -f2 | cut -d ' ' -f1」を参照してください。macOS の yumapt-get、または Homebrew などのパッケージマネージャは、AWS CLI の最新バージョンより数バージョン遅れることがあります。最新バージョンをインストールするには、「AWS Command Line Interface ユーザーガイド」の「AWS CLI のインストール、更新、およびアンインストール」と「aws configure でのクイック設定」を参照してください。AWS CloudShell にインストールされている AWS CLI バージョンは、最新バージョンより数バージョン遅れている可能性もあります。更新するには、「AWS CloudShellユーザーガイド」の「ホームディレクトリへの AWS CLI のインストール」を参照してください。

AWS CLI を使用して Amazon EKS アドオンを更新する方法
  1. インストールされているアドオンのリストを参照してください。my-cluster を自分のクラスター名に置き換えます。

    aws eks list-addons --cluster-name my-cluster

    出力例は次のとおりです。

    { "addons": [ "coredns", "kube-proxy", "vpc-cni" ] }
  2. 更新するアドオンの現在のバージョンを表示します。my-cluster をクラスターの名前に置き換えて、vpc-cni を更新するアドオンの名前に置き換えます。

    aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni --query "addon.addonVersion" --output text

    出力例は次のとおりです。

    v1.10.4-eksbuild.1
  3. クラスターのバージョンで使用できる アドオンのバージョンを確認します。1.30 をクラスターのバージョンに置き換えて、vpc-cni を更新するアドオンの名前に置き換えます。

    aws eks describe-addon-versions --kubernetes-version 1.30 --addon-name vpc-cni \ --query 'addons[].addonVersions[].{Version: addonVersion, Defaultversion: compatibilities[0].defaultVersion}' --output table

    出力例は次のとおりです。

    ------------------------------------------
    |          DescribeAddonVersions         |
    +-----------------+----------------------+
    | Defaultversion  |       Version        |
    +-----------------+----------------------+
    |  False          |  v1.12.0-eksbuild.1  |
    |  True           |  v1.11.4-eksbuild.1  |
    |  False          |  v1.10.4-eksbuild.1  |
    |  False          |  v1.9.3-eksbuild.1   |
    +-----------------+----------------------+

    Defaultversion 列に True と表示されているバージョンは、デフォルトでアドオンが作成されたバージョンです。

  4. アドオンを更新してください。デバイスに沿ったコマンドをコピーします。必要に応じてコマンドに次の変更を加え、変更したコマンドを実行します。このコマンドの詳細については、「Amazon EKS コマンドラインリファレンス」の「update-addon」を参照してください。

    • my-cluster を自分のクラスター名に置き換えます。

    • vpc-cni を前のステップの出力で返された更新するアドオンの名前に置き換えます。

    • version-number を更新する前のステップの出力で返されたバージョンに置き換えます。一部のアドオンには推奨バージョンがあります。詳細については、更新するアドオンのドキュメントを参照してください。

    • アドオンが Kubernetes サービスアカウントおよび IAM ロールを使用する場合、111122223333 をアカウント ID に置き換え、role-name を作成した既存の IAM ロールの名前に置き換えます。ロールの作成手順については、作成するアドオンのドキュメントを参照してください。サービスアカウントロールを指定するには、クラスター用に IAM OpenID Connect (OIDC) プロバイダーが必要です。クラスター用に持っているかどうかを確認、あるいは作成するには、「クラスターの IAM OIDC プロバイダーを作成する」を参照してください。

      アドオンが Kubernetes サービスアカウントおよび IAM ロールを使用しない場合、serviceAccountRoleARN: arn:aws:iam::111122223333:role/role-name 行を削除してください。

    • --resolve-conflicts 保存オプションはアドオンの既存値を保存します。アドオン設定にカスタム値を設定していて、このオプションを使用しない場合、Amazon EKS は値をデフォルト値で上書きします。このオプションを使用する場合、実稼働クラスターのアドオンを更新する前に、非稼動クラスターのフィールドおよび値変更をテストすることをお勧めします。この値を OVERWRITE に変更する場合、すべての設定が Amazon EKS のデフォルト値に変更されます。いずれかの設定にカスタム値を設定した場合、Amazon EKS のデフォルト値で上書きされる可能性があります。この値を NONE に変更した場合、Amazon EKS は設定の値を一切変更しませんが、更新が失敗する可能性があります。更新に失敗した場合、競合の解決に役立つエラーメッセージが返されます。

    • すべてのカスタム設定を削除する場合は、--configuration-values '{}' オプションを使用して更新を実行します。これにより、すべてのカスタム設定がデフォルト値に設定されます。カスタム設定を変更しない場合、--configuration-values フラグを指定しないでください。カスタム設定を調整する場合、{} を新しいパラメータに置き換えます。パラメータのリストを確認するには、「アドオンの作成」セクションの設定スキーマの表示ステップを参照してください。

    aws eks update-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version version-number \ --service-account-role-arn arn:aws:iam::111122223333:role/role-name --configuration-values '{}' --resolve-conflicts PRESERVE
  5. 更新のステータスを確認します。my-cluster をクラスターの名前に置き換えて、vpc-cni を更新するアドオンの名前に置き換えます。

    aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni

    出力例は次のとおりです。

    { "addon": { "addonName": "vpc-cni", "clusterName": "my-cluster", "status": "UPDATING", [...]

    ステータスが ACTIVE に変わると更新が完了します。