注)この先のアップデートで変更あるかと思います
EKSアドオン
EKSクラスタを作成するとネットワークに関するコンポーネントがデフォルトでdeployされています
これらは現在、EKSアドオンとして管理されるリソースとなっています
これはそこまでガチガチに管理されたリソースというわけではなく、他のリソースと同じくk8sクラスタにdeployされているだけのものなので、変更が可能であり、それはドキュメントにもあるようにアドオンを使用する上で認められた運用です
このフィールドの変更について、 EKSアドオンが管理されているフィールドを変更した場合、その後のEKSアドオンの更新によって再度アドオンのデフォルトに戻されてしまいます
(アドオンの管理にk8sのserver-side applyを使っているそうなので、--force-conflictsオプションで上書きしているものと思われます)
どのフィールドをEKSアドオンが管理しているか、という点については、こちらのドキュメントにある通り
kubectlコマンドで確認できますか、k8s v1.21の時点ではこれに加えて、--show-managed-fieldsオプションを付ける必要があります
例えばcorednsの場合は
kubectl get deployment/coredns -n kube-system -o yaml --show-managed-fields
といった具合です
表示されたyamlの中の、spec.managedFields
のうち、 manager: eks
となっているフィールドがEKSアドオンの管理しているフィールドになります
リソースは?
アドオンが管理しているフィールドを参照する方法はわかったのですが、管理しているリソースはどれなのかがわかっていません
現在の時点で、ドキュメント等は存在しないとのことでした(この先作られるかも?)
ので、現在リリースされている3種類のEKSアドオンが管理しているリソースを記しておきます
以下、namespacedなリソースのnamespaceは全て kube-system
です
vpc-cni
v1.10.1-eksbuild.1
- ClusterRole / aws-node
- ClusterRoleBinding / aws-node
- CustomResourceDefinition / eniconfigs.crd.k8s.amazonaws.com
- DaemonSet / aws-node
- ServiceAccount / aws-node
coredns
v1.8.4-eksbuild.1
- ClusterRole / system:coredns
- ClusterRoleBinding / system:coredns
- ConfigMap / coredns
- Deployment / coredns
- ServiceAccount / coredns
- Services / kube-dns
kube-proxy
v1.21.2-eksbuild.2
- ClusterRoleBinding / eks:kube-proxy
- ConfigMap / kube-proxy
- ConfigMap / kube-proxy-config
- DaemonSet / kube-proxy
- ServiceAccount / kube-proxy
繰り返しますが
これは記載のバージョン時点でのものです
この先のアップデートで変更がある可能性があります