翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
アドオン
このトピックでは、eksctl を使用して Amazon EKS クラスターの Amazon EKS アドオンを管理する方法について説明します。EKS アドオンは、EKS API を使用して Kubernetes 運用ソフトウェアを有効化および管理できる機能で、クラスターアドオンのインストール、設定、更新のプロセスを簡素化します。
警告
eksctl は、セルフマネージドアドオンではなく EKS アドオンとしてデフォルトのアドオン (vpc-cni、coredns、kube-proxy) をインストールするようになりました。つまり、eksctl v0.184.0 以降で作成されたクラスターでは、 eksctl utils update-* コマンドeksctl update addonの代わりに を使用する必要があります。
Cilium や Calico などの代替 CNI プラグインを使用する場合は、デフォルトのネットワークアドオンなしでクラスターを作成できます。
EKS アドオンは、EKS Pod Identity Associations を介した IAM アクセス許可の受信をサポートし、クラスター外の AWS サービスに接続できるようになりました。
アドオンの作成
Eksctl は、クラスターアドオンをより柔軟に管理できます。
設定ファイルで、必要なアドオンと、それらにアタッチするロールまたはポリシー (必要な場合) を指定できます。
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: example-cluster region: us-west-2 iam: withOIDC: true addons: - name: vpc-cni # all below properties are optional version: 1.7.5 tags: team: eks # you can specify at most one of: attachPolicyARNs: - arn:aws:iam::account:policy/AmazonEKS_CNI_Policy # or serviceAccountRoleARN: arn:aws:iam::account:role/AmazonEKSCNIAccess # or attachPolicy: Statement: - Effect: Allow Action: - ec2:AssignPrivateIpAddresses - ec2:AttachNetworkInterface - ec2:CreateNetworkInterface - ec2:DeleteNetworkInterface - ec2:DescribeInstances - ec2:DescribeTags - ec2:DescribeNetworkInterfaces - ec2:DescribeInstanceTypes - ec2:DetachNetworkInterface - ec2:ModifyNetworkInterfaceAttribute - ec2:UnassignPrivateIpAddresses Resource: '*'
attachPolicy、、attachPolicyARNsおよび のうち最大 1 つを指定できますserviceAccountRoleARN。
これらのいずれも指定しない場合、アドオンは、すべての推奨ポリシーがアタッチされたロールで作成されます。
注記
アドオンにポリシーをアタッチするには、クラスターで OIDCが有効になっている必要があります。有効になっていない場合、アタッチされたポリシーは無視されます。
その後、クラスター作成プロセス中にこれらのアドオンを作成することができます。
eksctl create cluster -f config.yaml
または、設定ファイルまたは CLI フラグを使用して、クラスターの作成後に明示的にアドオンを作成します。
eksctl create addon -f config.yaml
eksctl create addon --name vpc-cni --version 1.7.5 --service-account-role-arn <role-arn>
eksctl create addon --name aws-ebs-csi-driver --namespace-config 'namespace=custom-namespace'
ヒント
--namespace-config フラグを使用して、デフォルトの名前空間ではなくカスタム名前空間にアドオンをデプロイします。
アドオンの作成中に、アドオンのセルフマネージドバージョンがクラスターに既に存在する場合は、設定ファイルを介して resolveConflictsオプションを設定することで、潜在的なconfigMap競合を解決する方法を選択できます。例:
addons: - name: vpc-cni attachPolicyARNs: - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy resolveConflicts: overwrite
アドオン作成の場合、 resolveConflictsフィールドは 3 つの異なる値をサポートします。
-
none- EKS は値を変更しません。作成が失敗する可能性があります。 -
overwrite- EKS は、設定の変更を EKS のデフォルト値に上書きします。 -
preserve- EKS は値を変更しません。作成が失敗する可能性があります。( に似ていますがnone、preserveアドオンの更新とは異なります)。
有効なアドオンの一覧表示
クラスターで有効になっているアドオンを確認するには、以下を実行します。
eksctl get addons --cluster <cluster-name>
または
eksctl get addons -f config.yaml
アドオンのバージョンの設定
アドオンのバージョンの設定はオプションです。version フィールドを空のままにするとeksctl、アドオンのデフォルトバージョンが解決されます。特定のアドオンのデフォルトバージョンの詳細については、EKS に関する AWS ドキュメントを参照してください。デフォルトバージョンは、必ずしも利用可能な最新バージョンであるとは限りません。
アドオンバージョンは に設定できますlatest。または、 バージョンは、 v1.7.5-eksbuild.1や などの EKS ビルドタグを指定して設定できますv1.7.5-eksbuild.2。また、 v1.7.5や などのアドオンのリリースバージョンに設定することもでき1.7.5、eksbuildサフィックスタグが検出されて設定されます。
利用可能なアドオンとそのバージョンを検出する方法については、以下のセクションを参照してください。
アドオンの検出
クラスターにインストールできるアドオンを確認するには、以下を実行します。
eksctl utils describe-addon-versions --cluster <cluster-name>
これにより、クラスターの kubernetes バージョンが検出され、そのバージョンがフィルタリングされます。または、特定の kubernetes バージョンで使用できるアドオンを確認したい場合は、以下を実行します。
eksctl utils describe-addon-versions --kubernetes-version <version>
アドオンは、type、ownerおよび/または でフィルタリングして検出することもできますpublisher。たとえば、特定の所有者とタイプのアドオンを表示するには、以下を実行できます。
eksctl utils describe-addon-versions --kubernetes-version 1.22 --types "infra-management, policy-management" --owners "aws-marketplace"
types、、 ownerspublishersフラグはオプションであり、結果をフィルタリングするために一緒にまたは個別に指定できます。
アドオンの設定スキーマの検出
アドオンとバージョンを検出したら、JSON 設定スキーマを取得してカスタマイズオプションを表示できます。
eksctl utils describe-addon-configuration --name vpc-cni --version v1.12.0-eksbuild.1
これにより、このアドオンで使用できるさまざまなオプションの JSON スキーマが返されます。
設定値の操作
ConfigurationValues は、アドオンの作成時または更新時に設定ファイルで提供できます。JSON 形式と YAML 形式のみがサポートされています。
例:
addons: - name: coredns configurationValues: |- replicaCount: 2
addons: - name: coredns version: latest configurationValues: "{\"replicaCount\":3}" resolveConflicts: overwrite
注記
アドオン設定値を変更すると、設定の競合が発生することに注意してください。
Thus, we need to specify how to deal with those by setting the `resolveConflicts` field accordingly. As in this scenario we want to modify these values, we'd set `resolveConflicts: overwrite`.
さらに、get コマンドはアドオンConfigurationValuesの も取得するようになりました。例:
eksctl get addon --cluster my-cluster --output yaml
- ConfigurationValues: '{"replicaCount":3}' IAMRole: "" Issues: null Name: coredns NewerVersion: "" Status: ACTIVE Version: v1.8.7-eksbuild.3
カスタム名前空間の使用
カスタム名前空間は、アドオンの作成時に設定ファイルで指定できます。アドオンが作成されると、名前空間を更新することはできません。
設定ファイルの使用
addons: - name: aws-ebs-csi-driver version: latest namespaceConfig: namespace: custom-namespace
CLI フラグの使用
または、 --namespace-configフラグを使用してカスタム名前空間を指定することもできます。
eksctl create addon --cluster my-cluster --name aws-ebs-csi-driver --namespace-config 'namespace=custom-namespace'
get コマンドはアドオンの名前空間値も取得します。
- ConfigurationValues: "" IAMRole: "" Issues: null Name: aws-ebs-csi-driver NamespaceConfig: namespace: custom-namespace NewerVersion: "" PodIdentityAssociations: null Status: ACTIVE Version: v1.47.0-eksbuild.1
アドオンの更新
アドオンを新しいバージョンに更新し、以下を実行してアタッチするポリシーを変更できます。
eksctl update addon -f config.yaml
eksctl update addon --name vpc-cni --version 1.8.0 --service-account-role-arn <new-role>
注記
アドオンが作成されると、名前空間設定を更新することはできません。--namespace-config フラグは、アドオンの作成時にのみ使用できます。
アドオンの作成と同様に、アドオンを更新すると、そのアドオンの に以前に適用した設定変更を完全に制御できますconfigMap。具体的には、それらを保存または上書きできます。このオプション機能は、同じ設定ファイルフィールド を介して使用できます。resolveConflicts例:
addons: - name: vpc-cni attachPolicyARNs: - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy resolveConflicts: preserve
アドオンの更新の場合、 resolveConflictsフィールドは 3 つの異なる値を受け入れます。
-
none- EKS は値を変更しません。更新が失敗する可能性があります。 -
overwrite- EKS は、設定の変更を EKS のデフォルト値に上書きします。 -
preserve- EKS は 値を保持します。このオプションを選択した場合は、本番クラスターのアドオンを更新する前に、非本番クラスターでフィールドと値の変更をテストすることをお勧めします。
アドオンの削除
アドオンを削除するには、以下を実行します。
eksctl delete addon --cluster <cluster-name> --name <addon-name>
これにより、アドオンとそれに関連付けられた IAM ロールが削除されます。
クラスターを削除すると、アドオンに関連付けられたすべての IAM ロールも削除されます。
デフォルトのネットワーキングアドオンのクラスター作成の柔軟性
クラスターが作成されると、EKS は VPC CNI、CoreDNS、kube-proxy をセルフマネージドアドオンとして自動的にインストールします。Cilium や Calico などの他の CNI プラグインを使用するためにこの動作を無効にするために、eksctl はデフォルトのネットワークアドオンなしでクラスターの作成をサポートするようになりました。このようなクラスターを作成するには、次のように を設定しますaddonsConfig.disableDefaultAddons。
addonsConfig: disableDefaultAddons: true
eksctl create cluster -f cluster.yaml
CoreDNS と kube-proxy のみを使用してクラスターを作成し、VPC CNI を使用してクラスターを作成するには、 で明示的にアドオンを指定addonsしaddonsConfig.disableDefaultAddons、次のように を設定します。
addonsConfig: disableDefaultAddons: true addons: - name: kube-proxy - name: coredns
eksctl create cluster -f cluster.yaml
この変更の一環として、 が明示的に true に設定されていない場合、eksctl addonsConfig.disableDefaultAddonsはクラスターの作成中にセルフマネージド型アドオンではなく EKS アドオンとしてデフォルトアドオンをインストールするようになりました。そのため、eksctl utils update-*コマンドは eksctl v0.184.0 以降で作成されたクラスターのアドオンの更新に使用されなくなりました。
-
eksctl utils update-aws-node -
eksctl utils update-coredns -
eksctl utils update-kube-proxy
代わりに、 を今すぐ使用eksctl update addonする必要があります。
詳細については、「Amazon EKS がネットワークアドオンにクラスター作成の柔軟性を導入