Amazon EKS アドオンの管理 - Amazon EKS

Amazon EKS アドオンの管理

Amazon EKS アドオンは、Amazon EKS クラスター用のアドオンソフトウェアを厳選したセットです。すべての Amazon EKS アドオン:

  • 最新のセキュリティパッチやバグ修正が含まれています。

  • AWS によって Amazon EKS で動作することが検証されています。

  • アドオンソフトウェアの管理に必要な作業量を削減します。

Amazon EKS アドオンで新しいバージョンが利用可能になると、AWS Management Console が通知します。更新を開始すると、Amazon EKS がアドオンソフトウェアを更新します。

利用可能なアドオンのリストについては、「Amazon EKS で利用可能な Amazon EKS アドオン」を参照してください。Kubernetes フィールド管理の詳細については、「 Kubernetes フィールド管理」を参照してください。

前提条件
  • 既存の Amazon EKS クラスター。デプロイするには、「Amazon EKS の使用開始」を参照してください。

  • Kubernetes サービスアカウントおよび IAM ロールを使用するアドオンを作成する場合、クラスターに AWS Identity and Access Management (IAM) OpenID Connect (OIDC) プロバイダーが必要です。クラスター用に持っているかどうかを確認、あるいは作成するには、「クラスター用の IAM OIDC プロバイダーの作成」を参照してください。

アドオンの作成

Amazon EKS アドオンは eksctl、AWS Management Console、AWS CLI を使用して作成できます。アドオンに IAM ロールが必要な場合、ロールの作成の詳細については、Amazon EKS で利用可能な Amazon EKS アドオン の特定のアドオンの詳細を参照してください。

eksctl
前提条件

デバイスまたは AWS CloudShell にインストールされている eksctl コマンドラインツールのバージョン 0.172.0 以降。eksctl をインストールまたはアップグレードするには、eksctl ドキュメントの「インストール」を参照してください。

eksctl を使用して Amazon EKS アドオンを作成する方法
  1. クラスターバージョンで利用可能なアドオンの名前を表示します。1.29 をお持ちのクラスターのバージョンに置き換えます。

    eksctl utils describe-addon-versions --kubernetes-version 1.29 | grep AddonName

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

    "AddonName": "aws-ebs-csi-driver",
                            "AddonName": "coredns",
                            "AddonName": "kube-proxy",
                            "AddonName": "vpc-cni",
                            "AddonName": "adot",
                            "AddonName": "dynatrace_dynatrace-operator",
                            "AddonName": "upbound_universal-crossplane",
                            "AddonName": "teleport_teleport",
                            "AddonName": "factorhouse_kpow",
                            [...]
  2. 作成するアドオンで使用できるバージョンを表示します。1.29 をお持ちのクラスターのバージョンに置き換えます。name-of-addon を表示するバージョンのアドオン名に置き換えます。名前は、前のステップで返された名前のいずれかである必要があります。

    eksctl utils describe-addon-versions --kubernetes-version 1.29 --name name-of-addon | grep AddonVersion

    次の出力は、vpc-cni という名前のアドオンに対して返される内容の例です。このアドオンには複数のバージョンがあることがわかります。

    "AddonVersions": [
        "AddonVersion": "v1.12.0-eksbuild.1",
        "AddonVersion": "v1.11.4-eksbuild.1",
        "AddonVersion": "v1.10.4-eksbuild.1",
        "AddonVersion": "v1.9.3-eksbuild.1",
  3. 作成するアドオンが Amazon EKS か AWS Marketplace アドオンか判断します。AWS Marketplace にはサードパーティ製のアドオンがあり、アドオンを作成するために追加の手順を実行する必要があります。

    eksctl utils describe-addon-versions --kubernetes-version 1.29 --name name-of-addon | grep ProductUrl

    出力が返されない場合、アドオンは Amazon EKS です。出力が返された場合、アドオンは AWS Marketplace アドオンです。次の出力は、teleport_teleport という名前のアドオンのものです。

    "ProductUrl": "https://aws.amazon.com/marketplace/pp?sku=3bda70bb-566f-4976-806c-f96faef18b26"

    返される URL を含んだ AWS Marketplace のアドオンの詳細について説明します。アドオンにサブスクリプションが必要な場合、AWS Marketplace を通じてアドオンにサブスクライブできます。AWS Marketplace からアドオンを作成する場合、アドオンの作成に使用する IAM プリンシパルには、AWSServiceRoleForAWSLicenseManagerRole のサービスにリンクされたロールを作成する許可が必要です。IAM エンティティへの許可の割り当てに関する詳細については、「IAM ユーザーガイド」の「IAM アイデンティティ許可の追加と削除」を参照してください。

  4. Amazon EKS アドオンを作成します。デバイスに沿ったコマンドをコピーします。必要に応じてコマンドに次の変更を加え、変更したコマンドを実行します。

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

    • name-of-addon を作成するアドオンの名前に置き換えます。

    • 最新バージョンよりも前のバージョンのアドオンが必要な場合、latest を使用する前のステップの出力で返されたバージョン番号に置き換えます。

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

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

    • このコマンド例は、アドオンの既存のセルフマネージドバージョンがある場合、その設定を上書きします。既存のセルフマネージド型アドオンの設定を上書きしたくない場合、--force オプションを削除してください。オプションを削除し、Amazon EKS アドオンが既存のセルフマネージド型アドオンの設定を上書きする必要がある場合、Amazon EKS アドオンの作成が失敗します。その場合、競合を解決するためのエラーメッセージが表示されます。このオプションを指定する前に、自分が管理する必要がある設定を Amazon EKS アドオンが管理していないことを確認してください。これらの設定は、このオプションの指定により上書きされます。

      eksctl create addon --cluster my-cluster --name name-of-addon --version latest \ --service-account-role-arn arn:aws:iam::111122223333:role/role-name --force

コマンドにすべての利用可能なオプションのリストを確認できます。

eksctl create addon --help

利用可能なオプションの詳細については、「eksctl ドキュメント」の「アドオン」を参照してください。

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

  2. 左のナビゲーションペインで [クラスター] を選択し、次にアドオンを作成するクラスター名を選択します。

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

  4. [その他のアドオンを入手] を選択します。

  5. クラスターに追加するアドオンを選択します。必要な数だけ [Amazon EKS アドオン][AWS Marketplace アドオン] を追加できます。

    AWS Marketplace アドオンの場合、アドオンを作成するために使用する IAM プリンシパルには、AWS LicenseManager からアドオンの資格を読み取る許可が必要です。AWSLicenseManager は、ユーザーに代わってライセンスを管理する AWS リソースを許可する「AWSServiceRoleForAWSLicenseManagerRole」のサービスリンクロール (SLR) が必要になります。SLR はアカウントごとに 1 回限りの要件であり、アドオンやクラスターごとに別々の SLR を作成する必要はありません。IAM プリンシパルへの許可の割り当ての詳細については、「IAM ユーザーガイド」の「IAM ID のアクセス許可の追加および削除」を参照してください。

    インストールする AWS Marketplace アドオンがリストされていない場合は、検索ボックスにテキストを入力して、利用可能なアドオンを検索できます。[フィルタリング] オプションで、[カテゴリ][ベンダー]、または [料金モデル] によってフィルタリングして、検索結果からアドオンを選択することもできます。インストールするアドオンを選択したら、[次へ] を選択します。

  6. [選択したアドオンセッティングの設定] ページで次のことを行います。

    • [サブスクリプションオプションを表示] を選択し、[サブスクリプションのオプション] フォームを開きます。[料金の詳細][法務] のセクションを確認し、[登録] ボタンを選択して続行します。

    • [バージョン] で、インストールするバージョンを選択します。作成する個々のアドオンが別のバージョンを推奨している場合を除き、[最新] と表示されたバージョンをお勧めします。アドオンに推奨バージョンがあるかどうかを確認するには、作成しているアドオンのドキュメントを参照してください。

    • 選択したすべてのアドオンが [ステータス] の下で [サブスクリプションが必要] と表示されている場合、[次へ] を選択します。クラスターが作成された後にサブスクライブするまで、それ以上これらのアドオンを設定することはできません。[ステータス] の下で [サブスクリプションが必要] と表示されていないアドオンの場合、次のことを行います。

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

      • [オプション設定のセッティング] を選択します。

        • アドオンに設定が必要な場合、[設定値] ボックスに入力します。アドオンに設定情報が必要かどうかを判断するには、作成するアドオンのドキュメントを参照してください。

        • [競合解決方法] で利用可能なオプションをいずれか選択します。

      • [次へ] をクリックします。

  7. [確認と追加] ページで、[作成] を選択します。アドオンのインストールが完了した後、インストールしたアドオンが表示されます。

  8. インストールしたアドオンにサブスクリプションが必要な場合、次の手順を実行してください。

    1. アドオンの右下隅にある [サブスクライブ] ボタンを選択します。AWS Marketplace のアドオンのページが表示されます。[製品概要][価格情報] など、アドオンに関する情報をお読みください。

    2. アドオンページの右上にある [サブスクライブを続ける] ボタンを選択します。

    3. [利用規約] をよくお読みください。利用規約に同意する場合、[利用規約に同意] を選択します。サブスクリプションの処理に数分かかることがあります。サブスクリプションの処理中、[Amazon EKS コンソールに戻る] ボタンがグレー表示されます。

    4. サブスクリプションの処理が完了すると、[Amazon EKS コンソールに戻る] ボタンがグレー表示されなくなります。ボタンを選択し、クラスターの Amazon EKS コンソールの [アドオン] タブに戻ります。

    5. サブスクライブしているアドオンについては、[削除して再インストール] を選択し、次に [アドオンの再インストール] を選択します。アドオンのインストールに数分かかることがあります。インストールが完了すると、アドオンを設定できます。

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. 利用可能なアドオンを確認します。利用可能なすべてのアドオン、種類、発行元を確認できます。AWS Marketplace を介して利用可能なアドオンの URL も確認できます。1.29 をお持ちのクラスターのバージョンに置き換えます。

    aws eks describe-addon-versions --kubernetes-version 1.29 \ --query 'addons[].{MarketplaceProductUrl: marketplaceInformation.productUrl, Name: addonName, Owner: owner Publisher: publisher, Type: type}' --output table

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

    ---------------------------------------------------------------------------------------------------------------------------------------------------------
    |                                                                 DescribeAddonVersions                                                                 |
    +---------------------------------------------------------------+-------------------------------+------------------+--------------+---------------------+
    |                     MarketplaceProductUrl                     |             Name              |      Owner       |  Publisher   |        Type         |
    +---------------------------------------------------------------+-------------------------------+------------------+--------------+---------------------+
    |  None                                                         |  aws-ebs-csi-driver           |  aws             |  eks         |  storage            |
    |  None                                                         |  coredns                      |  aws             |  eks         |  networking         |
    |  None                                                         |  kube-proxy                   |  aws             |  eks         |  networking         |
    |  None                                                         |  vpc-cni                      |  aws             |  eks         |  networking         |
    |  None                                                         |  adot                         |  aws             |  eks         |  observability      |
    |  https://aws.amazon.com/marketplace/pp/prodview-brb73nceicv7u |  dynatrace_dynatrace-operator |  aws-marketplace |  dynatrace   |  monitoring         |
    |  https://aws.amazon.com/marketplace/pp/prodview-uhc2iwi5xysoc |  upbound_universal-crossplane |  aws-marketplace |  upbound     |  infra-management   |
    |  https://aws.amazon.com/marketplace/pp/prodview-hd2ydsrgqy4li |  teleport_teleport            |  aws-marketplace |  teleport    |  policy-management  |
    |  https://aws.amazon.com/marketplace/pp/prodview-vgghgqdsplhvc |  factorhouse_kpow             |  aws-marketplace |  factorhouse |  monitoring         |
    |  [...]                                                        |  [...]                        |  [...]           |  [...]       |  [...]              |
    +---------------------------------------------------------------+-------------------------------+------------------+--------------+---------------------+

    出力が異なる場合があります。この出力例では、タイプ networking で利用可能なアドオンが 3 種類あり、タイプ eks の発行元でアドオンが 5 種類あります。Owner 列に aws-marketplace があるアドオンは、インストールする前にサブスクリプションが必要な場合があります。URL にアクセスしてアドオンの詳細を確認したり、アドオンをサブスクライブしたりできます。

  2. アドオンごとに利用可能なバージョンを確認できます。1.29 をクラスターのバージョンに置き換え、vpc-cni を前のステップで返されたアドオンの名前に置き換えます。

    aws eks describe-addon-versions --kubernetes-version 1.29 --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 と表示されているバージョンは、デフォルトでアドオンが作成されたバージョンです。

  3. (オプション) 次のコマンドを実行して、選択したアドオンの設定オプションを調べます。

    aws eks describe-addon-configuration --addon-name vpc-cni --addon-version v1.12.0-eksbuild.1
    {
        "addonName": "vpc-cni",
        "addonVersion": "v1.12.0-eksbuild.1",
        "configurationSchema": "{\"$ref\":\"#/definitions/VpcCni\",\"$schema\":\"http://json-schema.org/draft-06/schema#\",\"definitions\":{\"Cri\":{\"additionalProperties\":false,\"properties\":{\"hostPath\":{\"$ref\":\"#/definitions/HostPath\"}},\"title\":\"Cri\",\"type\":\"object\"},\"Env\":{\"additionalProperties\":false,\"properties\":{\"ADDITIONAL_ENI_TAGS\":{\"type\":\"string\"},\"AWS_VPC_CNI_NODE_PORT_SUPPORT\":{\"format\":\"boolean\",\"type\":\"string\"},\"AWS_VPC_ENI_MTU\":{\"format\":\"integer\",\"type\":\"string\"},\"AWS_VPC_K8S_CNI_CONFIGURE_RPFILTER\":{\"format\":\"boolean\",\"type\":\"string\"},\"AWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG\":{\"format\":\"boolean\",\"type\":\"string\"},\"AWS_VPC_K8S_CNI_EXTERNALSNAT\":{\"format\":\"boolean\",\"type\":\"string\"},\"AWS_VPC_K8S_CNI_LOGLEVEL\":{\"type\":\"string\"},\"AWS_VPC_K8S_CNI_LOG_FILE\":{\"type\":\"string\"},\"AWS_VPC_K8S_CNI_RANDOMIZESNAT\":{\"type\":\"string\"},\"AWS_VPC_K8S_CNI_VETHPREFIX\":{\"type\":\"string\"},\"AWS_VPC_K8S_PLUGIN_LOG_FILE\":{\"type\":\"string\"},\"AWS_VPC_K8S_PLUGIN_LOG_LEVEL\":{\"type\":\"string\"},\"DISABLE_INTROSPECTION\":{\"format\":\"boolean\",\"type\":\"string\"},\"DISABLE_METRICS\":{\"format\":\"boolean\",\"type\":\"string\"},\"DISABLE_NETWORK_RESOURCE_PROVISIONING\":{\"format\":\"boolean\",\"type\":\"string\"},\"ENABLE_POD_ENI\":{\"format\":\"boolean\",\"type\":\"string\"},\"ENABLE_PREFIX_DELEGATION\":{\"format\":\"boolean\",\"type\":\"string\"},\"WARM_ENI_TARGET\":{\"format\":\"integer\",\"type\":\"string\"},\"WARM_PREFIX_TARGET\":{\"format\":\"integer\",\"type\":\"string\"}},\"title\":\"Env\",\"type\":\"object\"},\"HostPath\":{\"additionalProperties\":false,\"properties\":{\"path\":{\"type\":\"string\"}},\"title\":\"HostPath\",\"type\":\"object\"},\"Limits\":{\"additionalProperties\":false,\"properties\":{\"cpu\":{\"type\":\"string\"},\"memory\":{\"type\":\"string\"}},\"title\":\"Limits\",\"type\":\"object\"},\"Resources\":{\"additionalProperties\":false,\"properties\":{\"limits\":{\"$ref\":\"#/definitions/Limits\"},\"requests\":{\"$ref\":\"#/definitions/Limits\"}},\"title\":\"Resources\",\"type\":\"object\"},\"VpcCni\":{\"additionalProperties\":false,\"properties\":{\"cri\":{\"$ref\":\"#/definitions/Cri\"},\"env\":{\"$ref\":\"#/definitions/Env\"},\"resources\":{\"$ref\":\"#/definitions/Resources\"}},\"title\":\"VpcCni\",\"type\":\"object\"}}}"
    }

    出力は標準の JSON スキーマです。

    上記のスキーマで使用できる有効な設定値の例 (JSON フォーマット) を次に示します。

    {
      "resources": {
        "limits": {
          "cpu": "100m"
        }
      }
    }

    上記のスキーマで使用できる有効な設定値の例 (YAML フォーマット) を次に示します。

      resources: 
        limits: 
          cpu: 100m    
  4. Amazon EKS アドオンを作成します。デバイスに沿ったコマンドをコピーします。必要に応じてコマンドに次の変更を加え、変更したコマンドを実行します。

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

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

    • version-number を使用する前のステップの出力で返されたバージョンに置き換えます。

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

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

    • このコマンド例は、アドオンの既存のセルフマネージドバージョンの --configuration-values オプションがある場合、それを上書きします。これを、文字列やファイル入力などの目的の設定値に置き換えます。設定値を指定したくない場合、--configuration-values オプションを削除します。AWS CLI に既存のセルフマネージド型アドオンの設定を上書きされたくない場合、--resolve-conflicts OVERWRITE オプションを削除してください。オプションを削除し、Amazon EKS アドオンが既存のセルフマネージド型アドオンの設定を上書きする必要がある場合、Amazon EKS アドオンの作成が失敗します。その場合、競合を解決するためのエラーメッセージが表示されます。このオプションを指定する前に、自分が管理する必要がある設定を Amazon EKS アドオンが管理していないことを確認してください。これらの設定は、このオプションの指定により上書きされます。

    aws eks create-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 '{"resources":{"limits":{"cpu":"100m"}}}' --resolve-conflicts OVERWRITE
    aws eks create-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 'file://example.yaml' --resolve-conflicts OVERWRITE

    使用可能なすべてのオプションのリストについては、「Amazon EKS コマンドラインリファレンス」の「create-addon」を参照してください。作成したアドオンが前のステップの Owner 列に aws-marketplace が一覧表示されている場合、作成が失敗して次のエラーと同様なエラーメッセージが表示されることがあります。

    { "addon": { "addonName": "addon-name", "clusterName": "my-cluster", "status": "CREATE_FAILED", "addonVersion": "version", "health": { "issues": [ { "code": "AddonSubscriptionNeeded", "message": "You are currently not subscribed to this add-on. To subscribe, visit the AWS Marketplace console, agree to the seller EULA, select the pricing type if required, then re-install the add-on" [...]

    前の出力のエラーと同様なものが表示された場合、前のステップに出力された URL にアクセスしてアドオンをサブスクライブしてください。サブスクライブしたら create-addon コマンドを再実行します。

アドオンの更新

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

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

eksctl
前提条件

デバイスまたは AWS CloudShell にインストールされている eksctl コマンドラインツールのバージョン 0.172.0 以降。eksctl をインストールまたはアップグレードするには、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. [アドオンの名前の設定] ページで次のことを行います。

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

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

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

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

  6. [Update] (更新) を選択します。

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.29 をクラスターのバージョンに置き換えて、vpc-cni を更新するアドオンの名前に置き換えます。

    aws eks describe-addon-versions --kubernetes-version 1.29 --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. アドオンを更新してください。デバイスに沿ったコマンドをコピーします。必要に応じてコマンドに次の変更を加え、変更したコマンドを実行します。

    • 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 に変わると更新が完了します。

アドオンの削除

Amazon EKS アドオンを削除するときに次のことを行います。

  • アドオンが提供する機能にはダウンタイムはありません。

  • アドオンに IAM ロールが関連付けられている場合、その IAM ロールは削除されません。

  • Amazon EKS はアドオンの設定の管理を停止します。

  • 新しいバージョンが利用可能になると、コンソールが通知を停止します。

  • AWS ツールや API を使用してアドオンを更新することはできません。

  • 自己管理できるようにアドオンソフトウェアをクラスターに保持するか、クラスターからアドオンソフトウェアを削除するかを選択できます。そのアドオンが提供している機能に依存するクラスターにリソースがない場合のみ、クラスターからアドオンソフトウェアを削除してください。

eksctl、AWS Management Console、AWS CLI を使用して Amazon EKS アドオンをクラスターから削除できます。

eksctl
前提条件

デバイスまたは AWS CloudShell にインストールされている eksctl コマンドラインツールのバージョン 0.172.0 以降。eksctl をインストールまたはアップグレードするには、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 vpc-cni v1.10.4-eksbuild.1 ACTIVE 0 [...]

    クラスターにあるアドオンおよびバージョンによって、出力が異なる場合があります。

  2. アドオンを削除します。my-cluster をクラスターの名前に置き換えて、name-of-add-on を削除する前のステップの出力で返されたアドオン名に置き換えます。--preserve オプションを削除する場合、Amazon EKS がアドオンを管理しなくなるだけではなく、アドオンソフトウェアがクラスターから削除されます。

    eksctl delete addon --cluster my-cluster --name name-of-addon --preserve
AWS Management Console
AWS Management Console を使用して Amazon EKS アドオンを削除する方法
  1. Amazon EKS コンソール (https://console.aws.amazon.com/eks/home#/clusters) を開きます。

  2. 左のナビゲーションペインで、[クラスター] を選択し、次に Amazon EKS アドオンを削除するクラスターの名前を選択します。

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

  4. アドオンボックス右上にあるチェックボックスを選択し、次に [削除] を選択します。Amazon EKS がアドオンの設定の管理を停止しても、クラスターのアドオンソフトウェアを保持し、アドオンのすべての設定を自己管理できるようにする場合、[クラスターに保存] を選択します。アドオン名を入力して [削除] を選択します。

AWS CLI
前提条件

デバイスまたは AWS CloudShell にインストールされている eksctl コマンドラインツールのバージョン 0.172.0 以降。eksctl をインストールまたはアップグレードするには、eksctl ドキュメントの「インストール」を参照してください。

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

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

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

    { "addons": [ "coredns", "kube-proxy", "vpc-cni", "name-of-addon" ] }
  2. インストールされているアドオンを削除します。my-cluster をクラスターの名前に置き換えて、name-of-add-on を削除するアドオンの名前に置き換えます。--preserve を削除することにより、アドオンがクラスターから削除されます。

    aws eks delete-addon --cluster-name my-cluster --addon-name name-of-addon --preserve

    簡略化した出力例を次に示します。

    { "addon": { "addonName": "name-of-add-on", "clusterName": "my-cluster", "status": "DELETING", [...]
  3. 削除の状態を確認します。my-cluster をクラスターの名前に置き換えて、name-of-addon を削除するアドオンの名前に置き換えます。

    aws eks describe-addon --cluster-name my-cluster --addon-name name-of-addon

    アドオンを削除した後の出力例は次のとおりです。

    An error occurred (ResourceNotFoundException) when calling the DescribeAddon operation: No addon: name-of-addon found in cluster: my-cluster