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.155.0
以降。eksctl
をインストールまたは更新するには、「eksctl のインストールまたは更新」を参照してください。eksctl
を使用して Amazon EKS アドオンを作成する方法-
クラスターバージョンで利用可能なアドオンの名前を表示します。
をお持ちのクラスターのバージョンに置き換えます。1.27
eksctl utils describe-addon-versions --kubernetes-version
1.27
| 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", [...]
-
作成するアドオンで使用できるバージョンを表示します。
をお持ちのクラスターのバージョンに置き換えます。1.27
を表示するバージョンのアドオン名に置き換えます。名前は、前のステップで返された名前のいずれかである必要があります。name-of-addon
eksctl utils describe-addon-versions --kubernetes-version
1.27
--namename-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",
-
作成するアドオンが Amazon EKS か AWS Marketplace アドオンか判断します。AWS Marketplace にはサードパーティ製のアドオンがあり、アドオンを作成するために追加の手順を実行する必要があります。
eksctl utils describe-addon-versions --kubernetes-version
1.27
--namename-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 アイデンティティ許可の追加と削除」を参照してください。
-
Amazon EKS アドオンを作成します。デバイスに沿ったコマンドをコピーします。必要に応じてコマンドに次の変更を加え、変更したコマンドを実行します。
-
を自分のクラスター名に置き換えます。my-cluster
-
を作成するアドオンの名前に置き換えます。name-of-addon
-
最新バージョンよりも前のバージョンのアドオンが必要な場合、
を使用する前のステップの出力で返されたバージョン番号に置き換えます。latest
-
アドオンがサービスアカウントロールを使用している場合、
をアカウント ID に置き換え、111122223333
をロールの名前に置き換えます。サービスアカウントのロールを作成する手順については、作成するアドオンのドキュメントを参照してください。サービスアカウントロールを指定するには、クラスター用に IAM OpenID Connect (OIDC) プロバイダーが必要です。クラスター用に持っているかどうかを確認、あるいは作成するには、「クラスター用の IAM OIDC プロバイダーの作成」を参照してください。role-name
アドオンがサービスアカウントロールを使用していない場合、
を削除してください。
arn:aws:iam::--service-account-role-arn
111122223333
:role/
role-name
-
このコマンド例は、アドオンの既存のセルフマネージドバージョンがある場合、その設定を上書きします。既存のセルフマネージド型アドオンの設定を上書きしたくない場合、
オプションを削除してください。オプションを削除し、Amazon EKS アドオンが既存のセルフマネージド型アドオンの設定を上書きする必要がある場合、Amazon EKS アドオンの作成が失敗します。その場合、競合を解決するためのエラーメッセージが表示されます。このオプションを指定する前に、自分が管理する必要がある設定を Amazon EKS アドオンが管理していないことを確認してください。これらの設定は、このオプションの指定により上書きされます。--force
eksctl create addon --cluster
my-cluster
--namename-of-addon
--versionlatest
\--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 アドオンを作成する方法
https://console.aws.amazon.com/eks/home#/clusters
で Amazon EKS コンソール を開きます。 -
左のナビゲーションペインで [Clusters] (クラスター) を選択し、次にアドオンを作成するクラスター名を選択します。
-
[アドオン] タブを選択します。
-
[Get more add-ons] (その他のアドオンを入手) を選択します。
-
クラスターに追加するアドオンを選択します。必要な数だけ [Amazon EKS アドオン] () や [AWS Marketplace アドオン] を追加できます。[AWS Marketplace] セクションに表示される [アドオン] を選択する場合、アドオンを作成するために使用する IAM プリンシパルには、AWS LicenseManager からアドオンの資格を読み取る許可が必要です。AWSLicenseManager は、ユーザーに代わってライセンスを管理する AWS リソースを許可する「AWSServiceRoleForAWSLicenseManagerRole」のサービスリンクロール (SLR) が必要になります。SLR はアカウントごとに 1 回限りの要件であり、アドオンやクラスターごとに別々の SLR を作成する必要はありません。IAM プリンシパルへの許可の割り当ての詳細については、「IAM ユーザーガイド」の「IAM ID のアクセス許可の追加および削除」を参照してください。インストールする [AWS Marketplace add-ons] ( アドオン) が一覧にない場合は、検索ボックスにテキストを入力して、利用可能な [AWS Marketplace add-ons] ( アドオン) を検索できます。[category] (カテゴリ)、[vendor] (ベンダー)、または [pricing model] (価格モデル) で検索し、検索結果からアドオンを選択することもできます。インストールするアドオンを選択したら、[Next] (次へ) を選択します。
-
[Configure selected add-ons settings] (選択したアドオンセッティングの設定) ページで次のことを行います。
-
[Version] (バージョン) で、インストールするバージョンを選択します。作成する個々のアドオンが別のバージョンを推奨している場合を除き、[latest] (最新) と表示されたバージョンをお勧めします。アドオンに推奨バージョンがあるかどうかを確認するには、作成しているアドオンのドキュメントを参照してください。
-
選択したすべてのアドオンが [Status] (ステータス) の下で [Requires subscription] (サブスクリプションが必要) と表示されている場合、[Next] (次) を選択します。クラスターが作成された後にサブスクライブするまで、それ以上これらのアドオンを設定することはできません。[Status] (ステータス) の下で [Requires subscription] (サブスクリプションが必要) と表示されていないアドオンの場合、次のことを行います。
-
[Select IAM role] (IAM ロールの選択) では、アドオンに IAM アクセス許可が必要でない限り、デフォルトのオプションをそのまま使用します。アドオンに AWS アクセス許可が必要な場合、[Inherit from node] (ノードから継承) を選択、あるいはアドオンで使用するために作成した既存のロールを選択できます。選択するロールがない場合、既存のロールがありません。選択したオプションを問わず、作成するアドオンのドキュメントを参照し、IAM ポリシーを作成してロールにアタッチしてください。IAM ロールを選択するには、クラスター用に IAM OpenID Connect (OIDC) プロバイダーが必要です。クラスター用に持っているかどうかを確認、あるいは作成するには、「クラスター用の IAM OIDC プロバイダーの作成」を参照してください。
-
[Optional configuration settings] (オプション設定のセッティング) を選択します。
-
アドオンに設定が必要な場合、[Configuration values] (設定値) ボックスに入力します。アドオンに設定情報が必要かどうかを判断するには、作成するアドオンのドキュメントを参照してください。
-
[Conflict resolution method] (競合解決方法) で利用可能なオプションをいずれか選択します。
-
-
[Next] (次へ) をクリックします。
-
-
-
[確認と追加] ページで、[作成] を選択します。アドオンのインストールが完了した後、インストールしたアドオンが表示されます。
-
インストールしたアドオンにサブスクリプションが必要な場合、次の手順を実行してください。
-
アドオンの右下隅にある [Subscribe] (サブスクライブ) ボタンを選択します。AWS Marketplace のアドオンのページが表示されます。[Product Overview] (製品概要) や [Pricing Information] (価格情報) など、アドオンに関する情報をお読みください。
-
アドオンページの右上にある [Continue to Subscribe] (サブスクライブを続ける) ボタンを選択します。
-
[Terms and Conditions] (利用規約) をよくお読みください。利用規約に同意する場合、[Accept Terms] (利用規約に同意) を選択します。サブスクリプションの処理に数分かかることがあります。サブスクリプションの処理中、[Return to Amazon EKS Console] (Amazon EKS コンソールに戻る) ボタンがグレー表示されます。
-
サブスクリプションの処理が完了すると、[Return to Amazon EKS Console] (Amazon EKS コンソールに戻る) ボタンがグレー表示されなくなります。ボタンを選択し、クラスターの Amazon EKS コンソールの [Add-ons] (アドオン) タブに戻ります。
-
サブスクライブしているアドオンについては、[Remove and reinstall] (削除して再インストール) を選択し、次に [Reinstall add-on] (アドオンの再インストール) を選択します。アドオンのインストールに数分かかることがあります。インストールが完了すると、アドオンを設定できます。
-
- AWS CLI
-
前提条件
ご使用のデバイスまたは AWS CloudShell で、AWS CLI のバージョン
2.12.3
以降または1.27.160
以降がインストールおよび設定されていること。現在のバージョンは、aws --version | cut -d / -f2 | cut -d ' ' -f1
で確認できます。macOS のyum
、apt-get
、または Homebrew などのパッケージマネージャは、AWS CLI の最新バージョンより数バージョン遅れることがあります。最新バージョンをインストールするには、「AWS Command Line Interface ユーザーガイド」の「AWS CLI のインストール、更新、およびアンインストール」と「aws configure
でのクイック設定」を参照してください。AWS CloudShell にインストールされている AWS CLI バージョンは、最新バージョンより数バージョン遅れている可能性もあります。更新するには、「AWS CloudShell ユーザーガイド」の「ホームディレクトリへの AWS CLI のインストール」を参照してください。AWS CLI を使用して Amazon EKS アドオンを作成する方法
-
利用可能なアドオンを確認します。利用可能なすべてのアドオン、種類、発行元を確認できます。AWS Marketplace を介して利用可能なアドオンの URL も確認できます。
をお持ちのクラスターのバージョンに置き換えます。1.27
aws eks describe-addon-versions --kubernetes-version 1.27 \ --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 にアクセスしてアドオンの詳細を確認したり、アドオンをサブスクライブしたりできます。 -
アドオンごとに利用可能なバージョンを確認できます。
をクラスターのバージョンに置き換え、1.27
を前のステップで返されたアドオンの名前に置き換えます。vpc-cni
aws eks describe-addon-versions --kubernetes-version
--addon-name1.27
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
と表示されているバージョンは、デフォルトでアドオンが作成されたバージョンです。 -
(オプション) 次のコマンドを実行して、選択したアドオンの設定オプションを調べます。
aws eks describe-addon-configuration --addon-name
vpc-cni
--addon-versionv1.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
-
Amazon EKS アドオンを作成します。デバイスに沿ったコマンドをコピーします。必要に応じてコマンドに次の変更を加え、変更したコマンドを実行します。
-
を自分のクラスター名に置き換えます。my-cluster
-
を前のステップの出力で返された作成するアドオン名に置き換えます。vpc-cni
-
を使用する前のステップの出力で返されたバージョンに置き換えます。version-number
-
アドオンが Kubernetes サービスアカウントおよび IAM ロールを使用する場合、
をアカウント ID に置き換え、111122223333
を作成した既存の IAM ロールの名前に置き換えます。ロールの作成手順については、作成するアドオンのドキュメントを参照してください。サービスアカウントロールを指定するには、クラスター用に IAM OpenID Connect (OIDC) プロバイダーが必要です。クラスター用に持っているかどうかを確認、あるいは作成するには、「クラスター用の IAM OIDC プロバイダーの作成」を参照してください。role-name
アドオンが Kubernetes サービスアカウントおよび IAM ロールを使用しない場合、
を削除してください。--service-account-role-arn arn:aws:iam::
111122223333
:role/
role-name
-
このコマンド例は、アドオンの既存のセルフマネージドバージョンの
--configuration-values
オプションがある場合、それを上書きします。これを、文字列やファイル入力などの目的の設定値に置き換えます。設定値を指定したくない場合、--configuration-values
オプションを削除します。AWS CLI に既存のセルフマネージド型アドオンの設定を上書きされたくない場合、
オプションを削除してください。オプションを削除し、Amazon EKS アドオンが既存のセルフマネージド型アドオンの設定を上書きする必要がある場合、Amazon EKS アドオンの作成が失敗します。その場合、競合を解決するためのエラーメッセージが表示されます。このオプションを指定する前に、自分が管理する必要がある設定を Amazon EKS アドオンが管理していないことを確認してください。これらの設定は、このオプションの指定により上書きされます。--resolve-conflicts OVERWRITE
aws eks create-addon --cluster-name
my-cluster
--addon-namevpc-cni
--addon-versionversion-number
\ --service-account-role-arn arn:aws:iam::111122223333
:role/role-name --configuration-values '{"resources":{"limits":{"cpu":"100m"}}
}' --resolve-conflictsOVERWRITE
aws eks create-addon --cluster-name
my-cluster
--addon-namevpc-cni
--addon-versionversion-number
\ --service-account-role-arn arn:aws:iam::111122223333
:role/role-name --configuration-values 'file://example
.yaml' --resolve-conflictsOVERWRITE
使用可能なすべてのオプションのリストについては、「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.155.0
以降。eksctl
をインストールまたは更新するには、「eksctl のインストールまたは更新」を参照してください。eksctl
を使用して Amazon EKS アドオンを更新する方法-
クラスターにインストールされている現在のアドオンおよびアドオンのバージョンを確認します。
を自分のクラスター名に置き換えます。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
列に新しいバージョンがあることがわかります。 -
アドオンを更新します。
-
デバイスに沿ったコマンドをコピーします。必要に応じてコマンドに次の変更を加えます。
-
を自分のクラスター名に置き換えます。my-cluster
-
をクラスターのある AWS リージョン に置き換えます。region
-
を更新する前のステップの出力で返されたアドオンの名前に置き換えます。vpc-cni
-
利用可能な最新バージョンよりも前のバージョンに更新する場合、
を使用する前のステップの出力で返されたバージョン番号に置き換えます。一部のアドオンには推奨バージョンがあります。詳細については、更新するアドオンのドキュメントを参照してください。latest
-
アドオンが Kubernetes サービスアカウントおよび IAM ロールを使用する場合、
をアカウント ID に置き換え、111122223333
を作成した既存の IAM ロールの名前に置き換えます。ロールの作成手順については、作成するアドオンのドキュメントを参照してください。サービスアカウントロールを指定するには、クラスター用に IAM OpenID Connect (OIDC) プロバイダーが必要です。クラスター用に持っているかどうかを確認、あるいは作成するには、「クラスター用の IAM OIDC プロバイダーの作成」を参照してください。role-name
アドオンが 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
addons: - name:vpc-cni
version:latest
serviceAccountRoleARN: arn:aws:iam::111122223333
:role/role-name
resolveConflicts:preserve
EOF
-
-
変更コマンドを実行して
update-addon.yaml
ファイルを作成します。 -
クラスターに設定ファイルを適用します。
eksctl update addon -f update-addon.yaml
アドオン更新の詳細については、「
eksctl
ドキュメント」の「アドオン」を参照してください。 -
-
- AWS Management Console
-
AWS Management Console を使用して Amazon EKS アドオンを更新する方法
https://console.aws.amazon.com/eks/home#/clusters
で Amazon EKS コンソール を開きます。 -
左のナビゲーションペインで、[Clusters] (クラスター) を選択し、次にアドオンを設定するクラスター名を選択します。
-
[アドオン] タブを選択します。
-
アドオンボックスの右上にあるボックスを選択し、次に [Edit] (編集) を選択します。
-
[Configure
name of addon
] (アドオンの名前の設定) ページで次のことを行います。-
使用する [Version] (バージョン) を選択します。アドオンには推奨バージョンがある場合があります。詳細については、更新するアドオンのドキュメントを参照してください。
-
[Select IAM role] (IAM ロールの選択) では、[Inherit from node] (ノードから継承) またはアドオンで使用するために作成した既存のロールを選択できます。選択するロールがない場合、既存のロールがありません。選択したオプションを問わず、作成するアドオンのドキュメントを参照し、IAM ポリシーを作成してロールにアタッチしてください。IAM ロールを選択するには、クラスター用に IAM OpenID Connect (OIDC) プロバイダーが必要です。クラスター用に持っているかどうかを確認、あるいは作成するには、「クラスター用の IAM OIDC プロバイダーの作成」を参照してください。
-
Code editor
には、アドオン固有の設定情報を入力します。詳細については、更新するアドオンのドキュメントを参照してください。 -
[Conflict resolution method] (コンフリクト解決方法) で、いずれかのオプションを選択します。アドオン設定にカスタム値を設定している場合、[Preserve] (保存) オプションをお勧めします。このオプションを選択しない場合、Amazon EKS は値をデフォルト値で上書きします。このオプションを使用する場合、実稼働クラスターのアドオンを更新する前に、非稼動クラスターのフィールドおよび値変更をテストすることをお勧めします。
-
-
[更新] を選択します。
- AWS CLI
-
前提条件
ご使用のデバイスまたは AWS CloudShell で、AWS CLI のバージョン
2.12.3
以降または1.27.160
以降がインストールおよび設定されていること。現在のバージョンは、aws --version | cut -d / -f2 | cut -d ' ' -f1
で確認できます。macOS のyum
、apt-get
、または Homebrew などのパッケージマネージャは、AWS CLI の最新バージョンより数バージョン遅れることがあります。最新バージョンをインストールするには、「AWS Command Line Interface ユーザーガイド」の「AWS CLI のインストール、更新、およびアンインストール」と「aws configure
でのクイック設定」を参照してください。AWS CloudShell にインストールされている AWS CLI バージョンは、最新バージョンより数バージョン遅れている可能性もあります。更新するには、「AWS CloudShell ユーザーガイド」の「ホームディレクトリへの AWS CLI のインストール」を参照してください。AWS CLI を使用して Amazon EKS アドオンを更新する方法
-
インストールされているアドオンのリストを参照してください。
を自分のクラスター名に置き換えます。my-cluster
aws eks list-addons --cluster-name
my-cluster
出力例は次のとおりです。
{ "addons": [ "coredns", "kube-proxy", "vpc-cni" ] }
-
更新するアドオンの現在のバージョンを表示します。
をクラスターの名前に置き換えて、my-cluster
を更新するアドオンの名前に置き換えます。vpc-cni
aws eks describe-addon --cluster-name
my-cluster
--addon-namevpc-cni
--query "addon.addonVersion" --output text出力例は次のとおりです。
v1.10.4-eksbuild.1
-
クラスターのバージョンに使用できるアドオンのバージョンを確認できます。
をクラスターのバージョンに置き換えて、1.27
を更新するアドオンの名前に置き換えます。vpc-cni
aws eks describe-addon-versions --kubernetes-version
--addon-name1.27
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
と表示されているバージョンは、デフォルトでアドオンが作成されたバージョンです。 -
アドオンを更新してください。デバイスに沿ったコマンドをコピーします。必要に応じてコマンドに次の変更を加え、変更したコマンドを実行します。
-
を自分のクラスター名に置き換えます。my-cluster
-
を前のステップの出力で返された更新するアドオンの名前に置き換えます。vpc-cni
-
を更新する前のステップの出力で返されたバージョンに置き換えます。一部のアドオンには推奨バージョンがあります。詳細については、更新するアドオンのドキュメントを参照してください。version-number
-
アドオンが Kubernetes サービスアカウントおよび IAM ロールを使用する場合、
をアカウント ID に置き換え、111122223333
を作成した既存の IAM ロールの名前に置き換えます。ロールの作成手順については、作成するアドオンのドキュメントを参照してください。サービスアカウントロールを指定するには、クラスター用に IAM OpenID Connect (OIDC) プロバイダーが必要です。クラスター用に持っているかどうかを確認、あるいは作成するには、「クラスター用の IAM OIDC プロバイダーの作成」を参照してください。role-name
アドオンが 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-namevpc-cni
--addon-versionversion-number
\ --service-account-role-arn arn:aws:iam::111122223333
:role/role-name
--configuration-values '{}'
--resolve-conflictsPRESERVE
-
-
更新のステータスを確認します。
をクラスターの名前に置き換えて、my-cluster
を更新するアドオンの名前に置き換えます。vpc-cni
aws eks describe-addon --cluster-name
my-cluster
--addon-namevpc-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.155.0
以降。eksctl
をインストールまたは更新するには、「eksctl のインストールまたは更新」を参照してください。eksctl
を使用して Amazon EKS アドオンを削除する方法-
クラスターに現在インストールされているアドオンを確認します。
を自分のクラスター名に置き換えます。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 [...]
クラスターにあるアドオンおよびバージョンによって、出力が異なる場合があります。
-
アドオンを削除します。
をクラスターの名前に置き換えて、my-cluster
を削除する前のステップの出力で返されたアドオン名に置き換えます。name-of-add-on
オプションを削除する場合、Amazon EKS がアドオンを管理しなくなるだけではなく、アドオンソフトウェアがクラスターから削除されます。--preserve
eksctl delete addon --cluster
my-cluster
--namename-of-addon
--preserve
-
- AWS Management Console
-
AWS Management Console を使用して Amazon EKS アドオンを削除する方法
https://console.aws.amazon.com/eks/home#/clusters
で Amazon EKS コンソール を開きます。 -
左のナビゲーションペインで、[Clusters] (クラスター) を選択し、次に Amazon EKS アドオンを削除するクラスターの名前を選択します。
-
[アドオン] タブを選択します。
-
アドオンボックス右上にあるチェックボックスを選択し、次に [Remove] (削除) を選択します。Amazon EKS がアドオンの設定の管理を停止しても、クラスターのアドオンソフトウェアを保持し、アドオンのすべての設定を自己管理できるようにする場合、[Preserve on the cluster] (クラスターに保存) を選択します。アドオン名を入力して [Remove] (削除) を選択します。
- AWS CLI
-
前提条件
デバイスまたは AWS CloudShell にインストールされている
eksctl
コマンドラインツールのバージョン0.155.0
以降。eksctl
をインストールまたは更新するには、「eksctl のインストールまたは更新」を参照してください。AWS CLI を使用して Amazon EKS アドオンを削除する方法
-
インストールされているアドオンのリストを参照してください。
を自分のクラスター名に置き換えます。my-cluster
aws eks list-addons --cluster-name
my-cluster
出力例は次のとおりです。
{ "addons": [ "coredns", "kube-proxy", "vpc-cni", "
name-of-addon
" ] } -
インストールされているアドオンを削除します。
をクラスターの名前に置き換えて、my-cluster
を削除するアドオンの名前に置き換えます。name-of-add-on
を削除することにより、アドオンがクラスターから削除されます。--preserve
aws eks delete-addon --cluster-name
my-cluster
--addon-namename-of-addon
--preserve
簡略化した出力例を次に示します。
{ "addon": { "addonName": "
name-of-add-on
", "clusterName": "my-cluster
", "status": "DELETING", [...] -
削除の状態を確認します。
をクラスターの名前に置き換えて、my-cluster
を削除するアドオンの名前に置き換えます。name-of-addon
aws eks describe-addon --cluster-name
my-cluster
--addon-namename-of-addon
アドオンを削除した後の出力例は次のとおりです。
An error occurred (ResourceNotFoundException) when calling the DescribeAddon operation: No addon:
name-of-addon
found in cluster:my-cluster
-