Amazon EKS アドオン
アドオンは、Kubernetes アプリケーションにサポート操作機能を提供するソフトウェアですが、アプリケーションに固有のものではありません。これには、クラスターがネットワーク、コンピューティング、およびストレージの基盤となる AWS リソースと対話できるようにする可観測性エージェントや Kubernetes ドライバーなどのソフトウェアが含まれます。アドオンソフトウェアは、通常、Kubernetes コミュニティや AWS のようなクラウドプロバイダ、またはサードパーティーベンダーによって構築、保持されます。Amazon EKS は、Amazon VPC CNI plugin for Kubernetes、kube-proxy
、および CoreDNS などのセルフマネージド型アドオンを、すべてのクラスターで自動的にインストールします。必要に応じて、アドオンのデフォルト設定は変更と更新が可能です。
Amazon EKS アドオンは、Amazon EKS クラスター用に厳選されたアドオンセットのインストールと管理を実行します。Amazon EKS アドオンには、最新のセキュリティパッチ、バグ修正が含まれており、また Amazon EKS と連携するために AWS により検証されています。Amazon EKS アドオンを使用すると、Amazon EKS クラスターの安全性と安定性を一貫して保証でき、アドオンのインストール、設定、および更新に必要となる作業量を削減できます。セルフマネージド型のアドオン (kube-proxy
など) がすでにクラスターで実行されており、Amazon EKS アドオンとして利用可能な場合、kube-proxy
Amazon EKS アドオンをインストールすれば、その機能からのメリットを活用できるようになります。
Amazon EKS API を使用することで、Amazon EKS アドオンのための、Amazon EKS 管理の特定の設定フィールドを更新できます。Amazon EKS で管理されていない設定フィールドは、アドオンの起動後に Kubernetes クラスター内で直接変更することもできます。これには、アドオン向けの特定の設定フィールドの定義が含まれます (該当する場合)。これらの変更は、一度実行されると Amazon EKS によって上書きされることはありません。これは、Kubernetes によるサーバー側の適用機能を使用して実現しています。詳細については、「 Kubernetes フィールド管理」を参照してください。
Amazon EKS アドオンは、どの Amazon EKS ノードタイプでも使用できます。
考慮事項
-
クラスターでアドオンの設定を行うには、アドオンを操作するための IAM 許可を、IAM プリンシパルが持っている必要があります。詳細については、「Amazon Elastic Kubernetes Service で定義されるアクション」で、
Addon
の名前ごとにアクションを参照してください。 -
Amazon EKS アドオンは、クラスター用にプロビジョニングまたは設定するノードで実行されます。ノードタイプには、Amazon EC2 インスタンスと Fargate が含まれます。
-
Amazon EKS で管理されていないフィールドを変更して、Amazon EKS アドオンのインストールをカスタマイズできます。詳細については、「 Kubernetes フィールド管理」を参照してください。
-
AWS Management Console を使用してクラスターを作成すると、Amazon EKS
kube-proxy
、Amazon VPC CNI plugin for Kubernetes、および CoreDNS Amazon EKS アドオンが自動的にクラスターに追加されます。また、eksctl
を使用してconfig
ファイルでクラスターを作成する場合は、eksctl
は Amazon EKS アドオンを持つクラスターを作成できます。config
ファイルなしでeksctl
を使用して、または他のツールを使用して、クラスターを作成する場合は、Amazon EKS アドオンではなく、セルフマネージド型のkube-proxy
、Amazon VPC CNI plugin for Kubernetes、および CoreDNS のアドオンがインストールされます。これらは自分で管理することが可能で、また、クラスターの作成後に Amazon EKS アドオンを手動で追加することもできます。 -
eks:addon-cluster-admin
ClusterRoleBinding
はcluster-admin
ClusterRole
をeks:addon-manager
Kubernetes ID にバインドします。このロールには、eks:addon-manager
ID が Kubernetes 名前空間を作成し、アドオンを名前空間にインストールするために必要なアクセス許可があります。eks:addon-cluster-admin
ClusterRoleBinding
が削除されても、Amazon EKS クラスターは引き続き機能しますが、Amazon EKS はアドオンを管理できなくなります。次のプラットフォームバージョンから始まるすべてのクラスターは、新しいClusterRoleBinding
バージョンを使用します。Kubernetes バージョン EKS プラットフォームのバージョン 1.20 eks.14 1.21 eks.17 1.22 eks.12 1.23 eks.8 1.24 eks.6 1.25 eks.3 1.26 eks.2
Amazon EKS アドオンは、Amazon EKS API、AWS Management ConsoleAWS CLI、および eksctl
を使用して、追加、更新、または削除ができます。詳細については、「Amazon EKS アドオンの管理」を参照してください。Amazon EKS アドオンは、AWS CloudFormation を使用しても作成できます。
Amazon EKS で利用可能な Amazon EKS アドオン
以下の Amazon EKS アドオンをクラスターで作成できます。eksctl
、AWS Management Console、または AWS CLI を使用して、使用可能なアドオンの最新リストをいつでも表示できます。使用可能なすべてのアドオンを確認したり、アドオンをインストールしたりするには、アドオンの作成 を参照してください。アドオンが IAM アクセス権限を要求する場合、クラスター用に IAM OpenID Connect (OIDC) プロバイダーが必要です。既に存在しているかどうかを確認する、または作成するには「クラスター用の IAM OIDC プロバイダーの作成」を参照してください。アドオンはインストール後に、更新または削除できます。
アドオンを選択すると、そのアドオンとそのインストール要件について詳しく知ることができます。
-
名前 -
vpc-cni
-
説明 — クラスターにネイティブ VPC ネットワークを提供するKubernetes コンテナネットワークインターフェイス (CNI) プラグイン
。このアドオンのセルフマネージドタイプまたはマネージドタイプが、デフォルトで各 Amazon EC2 ノードにインストールされます。 -
必要な IAM アクセス権限 — このアドオンは Amazon EKS の サービスアカウントの IAM ロール 機能を利用します。クラスターが
IPv4
ファミリーを使用する場合は、AmazonEKS_CNI_Policy のアクセス権限が必要です。クラスターがIPv6
ファミリーを使用する場合は、IPv6 モードのアクセス許可を持つ IAM ポリシーを作成する必要があります。次のコマンドで、IAM ロールを作成し、そのロールにポリシーの 1 つをアタッチして、アドオンが使用する Kubernetes サービスアカウントに注釈を付けることができます。 my-cluster
をクラスターの名前に置き換え、AmazonEKSVPCCNIRole
をロールの名前に置き換えます。クラスターがIPv6
ファミリを使用する場合は、AmazonEKS_CNI_Policy
を作成したポリシーの名前に置き換えてください。このコマンドを使用するには、デバイスにeksctl
がインストールされている必要があります。別のツールを使用してロールを作成し、ポリシーをアタッチして、Kubernetes サービスアカウントに注釈を付ける必要がある場合は、「IAM ロールを引き受けるための Kubernetes サービスアカウントの設定」を参照してください。eksctl create iamserviceaccount --name aws-node --namespace kube-system --cluster
my-cluster
--role-name "AmazonEKSVPCCNIRole
" \ --role-only --attach-policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
--approve -
追加情報 — アドオンの構成可能な設定の詳細については、GitHub の「aws-vpc-cni-k8s
」を参照してください。プラグインの詳細については、「提案: AWS VPC 経由の Kubernetes ネットワーク用 CNI プラグイン 」を参照してください。アドオンの作成方法の詳細については、「Amazon EKS アドオンの作成」を参照してください。 -
更新情報 – 一度に更新できるマイナーバージョンは 1 つのみです。例えば、現在のバージョンが
1.24.
で、これをx
-eksbuild.y
1.26.
に更新する場合は、現在のバージョンをx
-eksbuild.y
1.25.
に更新してから、再度x
-eksbuild.y
1.26.
に更新する必要があります。アドオンの更新の詳細については、「Amazon EKS アドオンの更新」を参照してください。x
-eksbuild.y
-
名前 -
coredns
-
説明 – Kubernetes クラスター DNS として機能する、柔軟で拡張可能な DNS サーバーです。このアドオンのセルフマネージドタイプまたはマネージドタイプが、クラスターの作成時にデフォルトでインストールされました。1 つ以上のノードで Amazon EKS クラスターを起動すると、クラスターにデプロイされたノード数に関係なく、デフォルトで CoreDNS イメージの 2 つのレプリカがデプロイされます。CoreDNS の Pods は、クラスター内のすべての Pods の名前解決を行います。クラスターに AWS Fargate プロファイル が含まれ、名前空間が CoreDNS
deployment
の名前空間と一致している場合、CoreDNS Pods を Fargate ノードにデプロイできます。 -
必要な IAM アクセス権限 — このアドオンにはアクセス権限は必要ありません。
-
追加情報 — CoreDNS の詳細については、Kubernetesドキュメントの「Using CoreDNS for Service
」(サービス検出のための CoreDNS の使用) と「Customizing DNS Service 」(DNS サービスのカスタマイズ) を参照してください。
-
名前 -
kube-proxy
-
説明 – 各 Amazon EC2 ノードのネットワークルールを管理します。これにより、Pods とのネットワーク通信が可能になります。このアドオンのセルフマネージドタイプまたはマネージドタイプが、デフォルトでクラスター内の各 Amazon EC2 ノードにインストールされます。
-
必要な IAM アクセス権限 — このアドオンにはアクセス権限は必要ありません。
-
追加情報 —
kube-proxy
の詳細については、Kubernetes ドキュメントのkube-proxy
を参照してください。 -
更新情報 — 現在のバージョンを更新する前に、次の要件を考慮してください。
-
Amazon EKS クラスターの
Kube-proxy
は、Kubernetes と同じ互換性およびスキューポリシーが適用されます。 -
Kube-proxy
は、Amazon EC2 ノードのkubelet
と同じマイナーバージョンである必要があります。 -
Kube-proxy
は、クラスターのコントロールプレーンのマイナーバージョンよりも新しいものにすることはできません。 -
Amazon EC2 ノードの
kube-proxy
バージョンは、コントロールプレーンより 2 つ以上前のマイナーバージョンにすることはできません。例えば、コントロールプレーンが Kubernetes 1.26 を実行している場合、kube-proxy
マイナーバージョンは 1.24 より前にすることはできません。 -
最近クラスターを新しい Kubernetes マイナーバージョンに更新した場合、Amazon EC2 ノードを同じマイナーバージョンに更新した後で、
kube-proxy
をノードと同じマイナーバージョンに更新してください。
-
-
名前 -
aws-ebs-csi-driver
-
説明 — クラスターに Amazon EBS ストレージを提供する、Kubernetes コンテナストレージインターフェイス (CSI) プラグイン。
-
必要な IAM アクセス権限 — このアドオンは Amazon EKS の サービスアカウントの IAM ロール 機能を利用します。GitHub のサンプルポリシー
のアクセス権限を使用して、IAM ポリシーを作成する必要があります。次のコマンドで、IAM ロールを作成し、そのロールにポリシーの 1 つをアタッチして、アドオンが使用する Kubernetes サービスアカウントに注釈を付けることができます。 my-cluster
をクラスターの名前に、AmazonEKS_EBS_CSI_DriverRole
をロールの名前に、AmazonEBSCSIDriverPolicy
を作成したポリシーの名前に置き換えてください。このコマンドを使用するには、デバイスにeksctl
がインストールされている必要があります。別のツールを使用してロールを作成し、ポリシーをアタッチして、Kubernetes サービスアカウントに注釈を付ける必要がある場合は、「IAM ロールを引き受けるための Kubernetes サービスアカウントの設定」を参照してください。eksctl create iamserviceaccount --name ebs-csi-controller-sa --namespace kube-system --cluster
my-cluster
\ --role-name "AmazonEKS_EBS_CSI_DriverRole
" --role-only --attach-policy-arn arn:aws:iam::aws:policy/AmazonEBSCSIDriverPolicy
--approve -
追加情報 — ドライバーの詳細については、GitHub の「Amazon EBS CSI driver
」(Amazon EBS CSI ドライバー) を参照してください。GitHub でテスト用のサンプル をデプロイできます。
-
名前 -
adot
-
説明 – AWS Distro for OpenTelemetry
(ADOT) は、安全な本番環境対応の、AWS によってサポートされている OpenTelemetry プロジェクトのディストリビューションです。 -
必要な IAM アクセス権限 — このアドオンは Amazon EKS の サービスアカウントの IAM ロール 機能を利用します。AmazonPrometheusRemoteWriteAccess、AWSXrayWriteOnlyAccess
、CloudWatchAgentServerPolicy AWS マネージドポリシーのアクセス権限。次のコマンドで、IAM ロールを作成し、それに管理ポリシーをアタッチして、アドオンが使用する Kubernetes サービスアカウントに注釈を付けることができます。 my-cluster
をクラスターの名前に、AmazonEKS_ADOT_Collector_Role
をロールの名前に置き換えます。このコマンドを使用するには、デバイスにeksctl
がインストールされている必要があります。別のツールを使用してロールを作成し、ポリシーをアタッチして、Kubernetes サービスアカウントに注釈を付ける必要がある場合は、「IAM ロールを引き受けるための Kubernetes サービスアカウントの設定」を参照してください。eksctl create iamserviceaccount --name adot-collector --namespace default --cluster
my-cluster
--role-name "AmazonEKS_ADOT_Collector_Role
" \ --attach-policy-arn arn:aws:iam::aws:policy/AmazonPrometheusRemoteWriteAccess \ --attach-policy-arn arn:aws:iam::aws:policy/AWSXrayWriteOnlyAccess \ --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy --approve -
追加情報 — 詳細については、AWS Distro for OpenTelemetry ドキュメントの「EKS アドオンを使用した AWS Distro for OpenTelemetry の開始方法
」を参照してください。
注記
Amazon GuardDuty は、アジアパシフィック (メルボルン) リージョンではご利用いただけません。
-
名前 -
aws-guardduty-agent
-
説明 – Amazon GuardDuty は、AWS CloudTrail 管理イベントや Amazon VPC フローログなどの基本的なデータソースを分析および処理するセキュリティモニタリングサービスです。Amazon GuardDuty は、Kubernetes 監査ログやランタイムモニタリングなどの機能も処理します。
-
必要な IAM アクセス権限 — このアドオンにはアクセス権限は必要ありません。
-
追加情報 – 詳細については、「Amazon GuardDuty における Amazon EKS Protection」を参照してください。
-
Amazon EKS クラスターで潜在的なセキュリティの脅威を検出するには、Amazon GuardDuty ランタイムモニタリングを有効にし、GuardDuty セキュリティエージェントを Amazon EKS クラスターにデプロイします。
-
GuardDuty は、現時点では ARM64 ノードをサポートしていません。
-
独立系ソフトウェアベンダーによる追加の Amazon EKS アドオン
前述の Amazon EKS アドオンのリストに加えて、独立系ソフトウェアベンダーのさまざまな運用ソフトウェア Amazon EKS アドオンを追加することもできます。アドオンを選択すると、そのアドオンとそのインストール要件について詳しく知ることができます。
-
パブリッシャー - Dynatrace
-
名前 -
dynatrace_dynatrace-operator
-
バージョン -
v0.8.2-eksbuild.0
-
名前空間 -
dynatrace
-
サービスアカウント名 - サービスアカウントはこのアドオンでは使用されません。
-
AWS マネージド IAM ポリシー - このアドオンでは管理ポリシーは使用されません。
-
カスタム IAM アクセス許可 - このアドオンではカスタムアクセス許可は使用されません。
-
セットアップと使用方法 -「dynatrace ドキュメント」の「Kubernetes モニタリング
」を参照してください。
-
パブリッシャー - Factorhouse
-
名前 -
factorhouse_kpow
-
バージョン -
v90.2.3-eksbuild.0
-
名前空間 -
factorhouse
-
サービスアカウント名 -
kpow
-
AWS マネージド IAM ポリシー - AWSLicenseManagerConsumptionPolicy
-
必要な IAM ロールを作成するコマンド - 次のコマンドでは、クラスターの IAM OpenID Connect (OIDC) プロバイダーが必要です。既に存在しているかどうかを確認する、または作成するには「クラスター用の IAM OIDC プロバイダーの作成」を参照してください。
my-cluster
をクラスターの名前に置き換え、my-role-name
を IAM ロールの名前に置き換えます。このコマンドを使用するには、デバイスにeksctl
がインストールされている必要があります。別のツールを使用してロールを作成し、Kubernetes サービスアカウントに注釈を付ける必要がある場合は、「IAM ロールを引き受けるための Kubernetes サービスアカウントの設定」を参照してください。eksctl create iamserviceaccount --name kpow --namespace factorhouse --cluster
my-cluster
--role-name "my-kpow-role
" \ --role-only --attach-policy-arn arn:aws:iam::aws:policy/service-role/AWSLicenseManagerConsumptionPolicy --approve -
カスタム IAM アクセス許可 - このアドオンではカスタムアクセス許可は使用されません。
-
セットアップと使用方法 - 「Kpow ドキュメント」の「AWS Marketplace LM
」を参照してください。
-
パブリッシャー - Kubecost
-
名前 -
kubecost_kubecost
-
バージョン -
v1.98.0-eksbuild.1
-
名前空間 -
kubecost
-
サービスアカウント名 - サービスアカウントはこのアドオンでは使用されません。
-
AWS マネージド IAM ポリシー - このアドオンでは管理ポリシーは使用されません。
-
カスタム IAM アクセス許可 - このアドオンではカスタムアクセス許可は使用されません。
-
セットアップと使用方法 - 「Kubecost ドキュメント」の「Amazon EKS インテグレーション
」を参照してください。 -
クラスターがバージョン
1.23
以降の場合は、Amazon EBS CSI ドライバー がクラスターにインストールされている必要があります。そうでない場合、エラーが発生します。
-
パブリッシャー - Nirmata
-
名前 -
nirmata_kyverno
-
バージョン -
v1.8.1-eksbuild.0
-
名前空間 -
kyverno
-
サービスアカウント名 -
kyverno
-
AWS マネージド IAM ポリシー - AWSLicenseManagerConsumptionPolicy
-
必要な IAM ロールを作成するコマンド - 次のコマンドでは、クラスターの IAM OpenID Connect (OIDC) プロバイダーが必要です。既に存在しているかどうかを確認する、または作成するには「クラスター用の IAM OIDC プロバイダーの作成」を参照してください。
my-cluster
をクラスターの名前に置き換え、my-kyverno-role
をロールの名前に置き換えます。このコマンドを使用するには、デバイスにeksctl
がインストールされている必要があります。別のツールを使用してロールを作成し、Kubernetes サービスアカウントに注釈を付ける必要がある場合は、「IAM ロールを引き受けるための Kubernetes サービスアカウントの設定」を参照してください。eksctl create iamserviceaccount --name kyverno --namespace kyverno --cluster
my-cluster
--role-name "my-kyverno-role
" \ --role-only --attach-policy-arn arn:aws:iam::aws:policy/service-role/AWSLicenseManagerConsumptionPolicy --approve -
カスタム IAM アクセス許可 - このアドオンではカスタムアクセス許可は使用されません。
-
セットアップと使用方法 -「Nirmata ドキュメント」の「Nirmata Kyverno Enterprise
」を参照してください。
-
パブリッシャー - Teleport
-
名前 -
teleport_teleport
-
バージョン -
v10.3.1-eksbuild.0
-
名前空間 -
teleport
-
サービスアカウント名 - サービスアカウントはこのアドオンでは使用されません。
-
AWS マネージド IAM ポリシー - このアドオンでは管理ポリシーは使用されません。
-
カスタム IAM アクセス許可 - このアドオンではカスタムアクセス許可は使用されません。
-
セットアップと使用方法 -「Teleport ドキュメント」の「How Teleport Works
」(テレポートの仕組み) を参照してください。
-
パブリッシャー - Tetrate
-
名前 -
tetrate-io_istio-distro
-
バージョン -
v1.15.3-eksbuild.0
-
名前空間 -
istio-system
-
サービスアカウント名 - サービスアカウントはこのアドオンでは使用されません。
-
AWS マネージド IAM ポリシー - このアドオンでは管理ポリシーは使用されません。
-
カスタム IAM アクセス許可 - このアドオンではカスタムアクセス許可は使用されません。
-
セットアップと使用方法 -「Tetrate Istio Distro
」のウェブサイトを参照してください。
-
パブリッシャー - Upbound
-
名前 -
upbound_universal-crossplane
-
バージョン -
v1.9.1-eksbuild.0
-
名前空間 -
upbound-system
-
サービスアカウント名 - サービスアカウントはこのアドオンでは使用されません。
-
AWS マネージド IAM ポリシー - このアドオンでは管理ポリシーは使用されません。
-
カスタム IAM アクセス許可 - このアドオンではカスタムアクセス許可は使用されません。
-
セットアップと使用方法 -「Upbound ドキュメント」の「Upbound Universal Crossplane (UXP)
」(アップバウンドユニバーサルクロスプレーン (UXP)) を参照してください。