

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

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「**GitHub でこのページを編集する**」リンクを選択してください。

# Amazon EKS アドオン
<a name="eks-add-ons"></a>

アドオンは、Kubernetes アプリケーションをサポートする操作機能を提供するソフトウェアですが、アプリケーションに固有のものではありません。これには、監視エージェントや Kubernetes ドライバなどのソフトウェアが含まれます。これらのソフトウェアにより、クラスターは、ネットワーク、コンピューティング、およびストレージ用の基盤となる AWS リソースと相互作用できるようになります。アドオンソフトウェアは、通常、Kubernetes コミュニティや AWS のようなクラウドプロバイダ、またはサードパーティーベンダーによって構築、保守されます。Amazon EKS は、Amazon VPC CNI plugin for Kubernetes、`kube-proxy`、および、CoreDNS などのセルフマネージド型アドオンを、すべてのクラスターで自動的にインストールします。VPC CNI アドオンは Amazon EKS Hybrid Nodes と互換性がなく、ハイブリッドノードにデプロイされないことに注意してください。必要に応じて、アドオンのデフォルト設定は変更と更新が可能です。

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 によるサーバー側の適用機能を使用して実現しています。詳細については、「[Amazon EKS アドオンのためにカスタマイズできるフィールドを決定する](kubernetes-field-management.md)」を参照してください。

Amazon EKS アドオンはどの Amazon EKS ノードタイプでも使用できます。詳細については「[ノードを使用してコンピューティングリソースを管理する](eks-compute.md)」を参照してください。

Amazon EKS アドオンはAmazon EKS API、AWS マネジメントコンソール、AWS CLI、および `eksctl` を使用して、追加、更新、または削除ができます。Amazon EKS アドオンは[AWS クラウドフォーメーション](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-addon.html) を使用しても作成できます。

## 考慮事項
<a name="eks-add-ons-considerations"></a>

Amazon EKS アドオンを使用する場合は次の点を考慮してください:
+ クラスターでアドオンの設定を行うにはアドオンを操作するための IAM 許可を、[IAM プリンシパル](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal)が持っている必要があります。詳細については「[Amazon Elastic Kubernetes Service で定義されるアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelastickubernetesservice.html#amazonelastickubernetesservice-actions-as-permissions)」で、`Addon` の名前ごとにアクションを参照してください。
+ Amazon EKS アドオンはクラスター用にプロビジョニングまたは設定するノードで実行されます。ノードタイプには Amazon EC2 インスタンス、Fargate、ハイブリッドノードがあります。
+ Amazon EKS で管理されていないフィールドを変更して、Amazon EKS アドオンのインストールをカスタマイズできます。詳細については、「[Amazon EKS アドオンのためにカスタマイズできるフィールドを決定する](kubernetes-field-management.md)」を参照してください。
+ AWS マネジメントコンソール を使用してクラスターを作成すると、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 アドオンを手動で追加することもできます。クラスターの作成にどの方法を使用するかにかかわらず、VPC CNI アドオンはハイブリッドノードにインストールされません。
+ `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` バージョンを使用します。
+ AWS からの EKS アドオンのサブセットは Amazon EKS Hybrid Nodes との互換性が検証されています。詳細については[AWSアドオン](workloads-add-ons-available-eks.md) の互換性の表を参照してください。

## アドオン用のカスタム名前空間
<a name="custom-namespace"></a>

コミュニティアドオンと AWS アドオンの場合、アドオンの作成時に必要に応じてカスタム名前空間を指定できます。特定の名前空間にアドオンをインストールした後で、その名前空間を変更するには、いったんアドオンを削除してから再作成する必要があります。

名前空間を指定しないと、アドオンには事前定義された名前空間が使用されます。

カスタム名前空間を使用すると、EKS クラスター内でアドオンオブジェクトを効率よく分類整理できるようになります。この柔軟性により、アドオンを運用上のニーズや既存の名前空間戦略に合わせて整理できます。

アドオンを作成するときに、カスタム名前空間を設定できます。詳細については、「[Amazon EKS アドオンを作成する](creating-an-add-on.md)」を参照してください。

### アドオン向けに事前定義された名前空間を取得する
<a name="_get_predefined_namespace_for_add_on"></a>

アドオン向けに事前定義された名前空間は、名前空間を指定しない場合にアドオンがインストールされる名前空間です。

アドオン向けに事前定義された名前空間を取得するには、次のコマンドを使用します。

```
aws eks describe-addon-versions --addon-name <addon-name> --query "addons[].defaultNamespace"
```

出力例:

```
[
    "kube-system"
]
```

## Amazon EKS 自動モードl の考慮事項
<a name="addon-consider-auto"></a>

Amazon EKS 自動 モードには以下のような重要なクラスター機能を提供する機能が含まれています：
+ ポッドネットワーキング
+ サービスネットワーキング
+ クラスター DNS
+ 自動スケーリング
+ ブロックストレージ
+ ロードバランサーコントローラー
+ Pod Identity エージェント
+ ノードモニタリングエージェント

自動 mode コンピューティングでは以下に示すような、一般的に使用される多くの EKS アドオンが冗長になります：
+ Amazon VPC CNI
+ kube-proxy
+ CoreDNS
+ Amazon EBS CSI ドライバー
+ EKS Pod Identity エージェント

ただし、クラスターが 自動 mode をセルフマネージド EC2 インスタンス、マネージド型ノードグループ、AWS Fargate などの他のコンピューティングオプションと組み合わせる場合、これらのアドオンは引き続き必要です。AWS はアンチアフィニティルールを用いて EKS アドオンを強化し、アドオンポッドがサポートされているコンピュートタイプのみに自動的にスケジュールされるようにしています。さらに、ユーザーは EKS アドオン `DescribeAddonVersions` API を活用して、各アドオンとその特定のバージョンでサポートされている computeTypes を検証できるようになりました。加えて EKS 自動 モードでは上記のコントローラーは AWS の所有するインフラストラクチャで実行されます。そのため、EKS 自動 モードを他のタイプのコンピューティングと組み合わせて使用している場合をのぞいて、これらのコントローラーをアカウントで見ることすらないかもしれません。組み合わせて使用している場合はクラスターにインストールしたコントローラーが表示されます。

既存のクラスターで EKS 自動モードl を有効にする予定がある場合は特定のアドオンのバージョンアップグレードが必要になる場合があります。詳細については「EKS 自動モードl の [必要なアドオンバージョン](auto-enable-existing.md#auto-addons-required)」を参照してください。

## サポート
<a name="addon-support"></a>

 AWS はサポートレベルが異なる複数のタイプのアドオンを発行します。
+  ** AWS アドオン：** これらのアドオンは によって構築され、完全にサポートされていますAWS。
  + AWS アドオンを使用して、Amazon EFS などのAWS 他のサービスと連携します。
  + 詳細については「[AWSアドオン](workloads-add-ons-available-eks.md)」を参照してください。
+  ** AWS マーケットプレイス アドオン：** これらのアドオンは独立したAWSパートナーによってスキャンAWSされ、サポートされます。
  + マーケットプレイス アドオンを使用して、Splunk によるモニタリングなど、クラスターに価値のある高度な機能を追加します。
  + 詳細については「[AWS マーケットプレイス アドオン](workloads-add-ons-available-vendors.md)」を参照してください。
+  **コミュニティアドオン**: これらのアドオンは によってスキャンされますAWSが、オープンソースコミュニティによってサポートされます。
  + コミュニティアドオンを使用すると、Kubernetes メトリクスサーバーなどの一般的なオープンソースソフトウェアのインストールの複雑さを軽減できます。
  + コミュニティアドオンは AWS によってソースからパッケージ化され、AWS はバージョンの互換性についてのみコミュニティアドオンを検証します。
  + 詳細については、「[コミュニティアドオン](community-addons.md)」を参照してください。

次の表は各アドオンタイプのサポート範囲の詳細を示しています：


| Category | 機能 |  AWSアドオン |  AWS マーケットプレイス アドオン | コミュニティアドオン | 
| --- | --- | --- | --- | --- | 
|  開発  |  AWS によって構築されました   |  はい  |  なし  |  はい  | 
|  開発  |  AWS によって検証済み   |  はい  |  なし  |  あり\$1  | 
|  開発  |  AWS パートナーによって検証済み  |  不可  |  あり  |  なし  | 
|  メンテナンス  |  AWS によってスキャンされました   |  はい  |  はい  |  はい  | 
|  メンテナンス  |  AWS によって修正されました   |  はい  |  なし  |  はい  | 
|  メンテナンス  |  AWS パートナーによってパッチが適用されました  |  不可  |  あり  |  なし  | 
|  ディストリビューション  |  AWS によって公開   |  はい  |  なし  |  はい  | 
|  ディストリビューション  |  AWS パートナーによって公開  |  不可  |  あり  |  なし  | 
|  サポート  |  AWSによる基本インストールサポート   |  はい  |  はい  |  はい  | 
|  サポート  |  フルAWSサポート  |  はい  |  なし  |  不可  | 
|  サポート  |  完全なAWSパートナーサポート  |  不可  |  あり  |  なし  | 

 `*`: コミュニティアドオンの検証には、Kubernetes バージョンの互換性のみが含まれます。例えば、クラスターにコミュニティアドオンをインストールすると、AWS はクラスターの Kubernetes バージョンと互換性があるかどうかを確認します。

 AWS マーケットプレイス アドオンは の外部ソースから追加のソフトウェア依存関係をダウンロードできますAWS。これらの外部依存関係は によってスキャンまたは検証されませんAWS。外部の依存関係を取得する AWS マーケットプレイス アドオンをデプロイするときはセキュリティ要件を考慮してください。