Amazon EKS アドオンのためにカスタマイズできるフィールドを決定する
Amazon EKS アドオンは、標準的なベストプラクティスによる設定を使用して、クラスターにインストールされます。Amazon EKS アドオンをクラスターに追加する方法については、「Amazon EKS アドオン」を参照してください。
Amazon EKS アドオンの設定をカスタマイズすると、高度な機能を有効にすることが可能です。Amazon EKS は Kubernetes サーバー側の適用機能を使用して、Amazon EKS で管理されていない設定の内容を上書きすることなく、Amazon EKS によるアドオンの管理を可能にします。詳細については、「Kubernetes ドキュメント」の「Server-side Applykube-controller-manager
など) によって管理されていないすべてのフィールドは、ユーザーが問題なく管理できます。
重要
Amazon EKS で管理しているフィールドを変更すると、Amazon EKS がアドオンを管理できなくなるため、アドオンの更新時にユーザーによる変更が上書きされる可能性があります。
フィールド管理構文
Kubernetes オブジェクトの詳細を表示すると、マネージド型フィールドとアンマネージド型フィールドの両方が出力に返されます。管理対象フィールドは、次のいずれかになります。
-
完全マネージド型 - フィールドのすべてのキーは Amazon EKS によって管理されます。このフィールドの値を変更すると、競合の原因となります。
-
部分的マネージド型 - フィールドの一部のキーは Amazon EKS によって管理されます。Amazon EKS によって明示的に管理されているキーに対する変更のみが競合の原因となります。
どちらのタイプのフィールドも manager: eks
でタグづけされています。
各キーは、フィールド自体を表す .
(これは常に空のセットがマッピングされます) であるか、またはサブフィールドまたは項目を表す文字列です。フィールドの管理状況の出力は、以下のタイプの宣言で構成されます。
-
f:
(name
name
は、リスト内のフィールドの名前)。 -
k:
(keys
keys
は、リスト項目のフィールドのマップ)。 -
v:
(value
value
は、リスト項目を正確な JSON 形式で記述した値)。 -
i:
(index
index
は、リスト内の項目の位置)。
出力内で、以下の CoreDNS アドオンに関する部分には、前の宣言が表示されます。
-
フルマネージド型フィールド - マネージド型フィールドに
f:
(フィールド) が指定されていますが、k:
(キー) はありません。この場合は、フィールド全体が管理されています。このフィールドの値を変更すると、競合の原因となります。次の出力では、
coredns
という名前のコンテナが、eks
によって管理されていることがわかります。args
、image
、およびimagePullPolicy
サブフィールドもeks
によって管理されています。このフィールドの値を変更すると、競合の原因となります。[...] f:containers: k:{"name":"coredns"}: .: {} f:args: {} f:image: {} f:imagePullPolicy: {} [...] manager: eks [...]
-
部分的マネージド型キー - マネージド型キーに値が指定されている場合、宣言されたキーはそのフィールドで管理されます。指定されたキーを変更すると、競合の原因となります。
次の出力では、
name
キーを使用するeks
が、config-volume
およびtmp
ボリュームセットを管理していることがわかります。[...] f:volumes: k:{"name":"config-volume"}: .: {} f:configMap: f:items: {} f:name: {} f:name: {} k:{"name":"tmp"}: .: {} f:name: {} [...] manager: eks [...]
-
部分的マネージド型フィールドへのキーの追加 - 特定のキーバリューのみが管理されている場合であれば、競合を引き起こすことなく、引数などの追加のキーをフィールドに追加できます。キーを追加する場合は、まず、そのフィールドがマネージド型でないことを確認してください。マネージド型の値を追加または変更すると、競合の原因となります。
次の出力では、
name
キーおよびname
フィールドの両方が、マネージド型であることがわかります。コンテナ名を追加または変更すると、このマネージド型のキーとの競合が発生します。[...] f:containers: k:{"name":"coredns"}: [...] f:name: {} [...] manager: eks [...]
手順
kubectl
を使用すると、任意の Amazon EKS アドオンについて、どのフィールドが Amazon EKS によって管理されているかを知ることができます。
Amazon EKS、または別の Kubernetes コントロールプレーンプロセス (kube-controller-manager
など) によって管理されていないすべてのフィールドは、ユーザーが問題なく管理できます。
-
確認するアドオンを決定します。クラスターにデプロイされた、すべての
deployments
と DaemonSets を表示するには、「AWS Management Console に Kubernetes リソースを表示する」を参照してください。 -
アドオンのマネージド型フィールドを表示するには、次のコマンドを実行します。
kubectl get type/add-on-name -n add-on-namespace -o yaml
例えば、次のコマンドを使用すると、CoreDNS アドオンの用マネージド型フィールドを表示できます。
kubectl get deployment/coredns -n kube-system -o yaml
フィールドの管理状態は、返される出力の中の、次のセクションに記載されています。
[...] managedFields: - apiVersion: apps/v1 fieldsType: FieldsV1 fieldsV1: [...]
注記
出力に、
managedFields
が表示されない場合、--show-managed-fields
をコマンドに追加し、もう一度実行します。使用しているkubectl
のバージョンによって、管理フィールドがデフォルトで返されるかどうかが決まります。
次のステップ
アドオンのために、AWS が所有していないフィールドをカスタマイズします。