Amazon EKS アドオンを更新する - Amazon EKS

Amazon EKS アドオンを更新する

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

前提条件

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

手順

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

アドオンの更新 (eksctl)

  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 を使用する前のステップの出力で返されたバージョン番号に置き換えます。一部のアドオンには推奨バージョンがあります。詳細については、更新するアドオンのドキュメントを参照してください。アドオンのリストについては、「使用可能な AWS の Amazon EKS アドオン」を参照してください。* アドオンが Kubernetes サービスアカウントおよび IAM ロールを使用する場合、111122223333 をアカウント ID に置き換え、role-name を作成した既存の IAM ロールの名前に置き換えます。ロールの作成手順については、作成するアドオンのドキュメントを参照してください。アドオンのリストについては、「使用可能な AWS の Amazon EKS アドオン」を参照してください。サービスアカウントロールを指定するには、クラスター用に IAM OpenID Connect (OIDC) プロバイダーが必要です。クラスター用に持っているかどうかを確認、あるいは作成するには、「クラスターの IAM OIDC プロバイダーを作成する」を参照してください。

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

      • 保存オプションはアドオンの既存値を保存します。アドオン設定にカスタム値を設定していて、このオプションを使用しない場合、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 コンソール)

  1. Amazon EKS コンソールを開きます。

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

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

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

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

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

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

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

    2. アドオンのロールを設定するには、EKS Pod Identity IAM ロールとサービスアカウント用の IAM ロール (IRSA) の 2 つのオプションがあります。希望するオプションについては、以下の適切なステップに従います。選択したすべてのアドオンの [ステータス][サブスクリプションが必要] と表示されている場合、[次へ] を選択します。[ステータス][サブスクリプションが必要] と表示されていないアドオンの場合、次を実行します。

      1. [サービスアカウント用の Pod Identity IAM ロール] で、既存の EKS Pod Identity IAM ロールを使用するか、または [推奨ロールを作成] ボタンを使用して EKS Pod Identity IAM ロールを作成できます。このフィールドには、適切な信頼ポリシーを持つオプションのみが表示されます。選択するロールがない場合は、一致する信頼ポリシーを持つ既存のロールが存在しないことになります。選択したアドオンのサービスアカウント用の EKS Pod Identity IAM ロールを設定するには、[推奨ロールを作成] を選択します。ロール作成ウィザードが別のウィンドウで開きます。ウィザードは、次のようにロールの情報を自動的に入力します。EKS Pod Identity IAM ロールを作成するアドオンごとに、IAM ウィザードのステップを次のように実行します。

        • [信頼されたエンティティを選択] ステップでは、[EKS] の AWS サービスオプションと [EKS - Pod Identity] のユースケースが事前に選択されており、アドオンのために適切な信頼ポリシーが自動的に入力されます。例えば、ロールは、「EKS Pod Identity の利点」で詳述されているように、pods.eks.amazonaws.com の IAM プリンシパルを含む適切な信頼ポリシーを使用して作成されます。[Next] を選択します。

        • [許可を追加] ステップでは、ロールポリシー用の適切なマネージドポリシーがアドオンのために事前に選択されています。例えば、Amazon VPC CNI アドオンの場合、ロールは Amazon VPC CNI Plugin for Kubernetes で詳述されているように、マネージドポリシー「AmazonEKS_CNI_Policy」を使用して作成されます。[Next] を選択します。

        • [名前、確認、作成]のステップにおいて、[ロール名] で、アドオンのためにデフォルトのロール名が自動的に入力されます。例えば、Amazon VPC CNI アドオンの場合、ロールは AmazonEKSPodIdentityAmazonVPCCNIRole という名前で作成されます。[説明] では、アドオンのためにデフォルトの適切な説明が自動的に入力されます。例えば、Amazon VPC CNI アドオンの場合、ロールは AWS リソースにアクセスすることを「Amazon EKS クラスターで実行されているポッドに許可します」という説明で作成されます。[信頼ポリシー] で、アドオンのために事前入力された信頼ポリシーを表示します。[ロールの作成] を選択します。

          注記

          デフォルトのロール名を保持すると、EKS は新しいクラスターでアドオン用のロールを事前に選択したり、既存のクラスターにアドオンを追加したりできます。この名前は引き続き上書きでき、ロールはクラスター全体でアドオンのために使用できますが、ロールはドロップダウンから手動で選択する必要があります。

      2. [ステータス][サブスクリプションが必要] でなく、IRSA を使用してロールを設定するアドオンについては、IAM ポリシーを作成してロールにアタッチするために作成するアドオンに関するドキュメントを参照してください。アドオンのリストについては、「使用可能な AWS の Amazon EKS アドオン」を参照してください。IAM ロールを選択するには、クラスター用に IAM OpenID Connect (OIDC) プロバイダーが必要です。クラスター用に持っているかどうかを確認、あるいは作成するには、「クラスターの IAM OIDC プロバイダーを作成する」を参照してください。

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

    4. [設定値] で、アドオン固有の設定情報を入力します。詳細については、更新するアドオンのドキュメントを参照してください。アドオンのリストについては、「使用可能な AWS の Amazon EKS アドオン」を参照してください。[コンフリクト解決方法] で、いずれかのオプションを選択します。アドオン設定にカスタム値を設定している場合、[保存] オプションをお勧めします。このオプションを選択しない場合、Amazon EKS は値をデフォルト値で上書きします。このオプションを使用する場合、実稼働クラスターのアドオンを更新する前に、非稼動クラスターのフィールドおよび値変更をテストすることをお勧めします。

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

アドオンの更新 (AWS CLI)

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

  2. インストールされているアドオンのリストを参照してください。my-cluster の部分は、自分のクラスター名に置き換えます。

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

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

    { "addons": [ "coredns", "kube-proxy", "vpc-cni" ] }
  3. 更新するアドオンの現在のバージョンを表示します。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
  4. クラスターのバージョンで使用できるアドオンのバージョンを確認します。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 と表示されているバージョンは、デフォルトでアドオンが作成されたバージョンです。

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

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

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

    • version-number を更新する前のステップの出力で返されたバージョンに置き換えます。一部のアドオンには推奨バージョンがあります。詳細については、更新するアドオンのドキュメントを参照してください。アドオンのリストについては、「使用可能な AWS の Amazon EKS アドオン」を参照してください。* アドオンが Kubernetes サービスアカウントおよび IAM ロールを使用する場合、111122223333 をアカウント ID に置き換え、role-name を作成した既存の IAM ロールの名前に置き換えます。ロールの作成手順については、作成するアドオンのドキュメントを参照してください。アドオンのリストについては、「使用可能な AWS の Amazon EKS アドオン」を参照してください。サービスアカウントロールを指定するには、クラスター用に IAM OpenID Connect (OIDC) プロバイダーが必要です。クラスター用に持っているかどうかを確認、あるいは作成するには、「クラスターの IAM OIDC プロバイダーを作成する」を参照してください。

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

    • --resolve-conflicts PRESERVE オプションはアドオンの既存値を保存します。アドオン設定にカスタム値を設定していて、このオプションを使用しない場合、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
  6. 更新のステータスを確認します。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 に変わると更新が完了します。