EKS クラスタを eksctl の Getting started に書かれている方法で作成すると、組み込みアドオン(VPC CNI, CoreDNS, kube-proxy) はセルフマネージド型のアドオンが自動的にインストールされます。Amazon EKS ネットワーキングアドオン - Amazon EKS によると、これらの組み込みアドオンは、セルフマネージド型アドオンではなく EKS アドオンを利用することが推奨されています。
この記事では、EKS クラスタを構築した後に、セルフマネージド型のアドオンから EKS アドオンに変更する方法を紹介します。eksctl は v0.175.0、EKS は 1.29 で動作確認をしました。
目次
- セルフマネージド型のアドオンがインストールされた EKS クラスタを作成する
- セルフマネージド型アドオンを置き換えるには EKS アドオンをインストールすれば OK
- eksctl の設定ファイルを利用して EKS アドオンに置き換える方法
- おまけ セルフマネージド型の組み込みアドオンの更新方法
セルフマネージド型のアドオンがインストールされた EKS クラスタを作成する
eksctl の Getting started で紹介されている cluster.yaml を利用して EKS クラスタを作成すると、セルフマネージド型のアドオンが自動的にインストールされます。
eksctl create cluster -f cluster.yaml
cluster.yaml
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: basic-cluster
region: eu-north-1
nodeGroups:
- name: ng-1
instanceType: m5.large
desiredCapacity: 10
インストールされたアドオンは、以下のように kubectl get pods -n kube-system
コマンドで確認することができます。
NAME READY STATUS RESTARTS AGE
aws-node-g5ghn 1/1 Running 0 2m
aws-node-zfc9s 1/1 Running 0 2m
coredns-7bcbfc4774-g6gg8 1/1 Running 0 1m
coredns-7bcbfc4774-hftng 1/1 Running 0 1m
kube-proxy-djkp7 1/1 Running 0 3m
kube-proxy-mpdsp 1/1 Running 0 3m
セルフマネージド型アドオンを置き換えるには EKS アドオンをインストールすれば OK
セルフマネージド型のアドオンは、EKS アドオンをインストールすることで置き換えることができます。置き換えになるので、セルフマネージド型のアドオンをアンインストールする必要はありません。
詳細は以下の AWS ドキュメントの手順に従ってください。
eksctl の設定ファイルを利用して EKS アドオンに置き換える方法
AWS ドキュメントには、手続き型で EKS アドオンをインストールする方法が記載されていますが、以下のように eksctl の設定ファイルにアドオンを記載することでもインストールすることができます。アドオンのバージョンは記事を書いた時点のものなので、必要に応じて更新してください。
cluster.yaml
addons:
- name: vpc-cni
version: v1.18.0-eksbuild.1
attachPolicyARNs:
- arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
- name: kube-proxy
version: v1.29.1-eksbuild.2
- name: coredns
version: v1.11.1-eksbuild.6
以下のようにアドオンの更新コマンドを実行すれば OK です。組み込みアドオンを上書きインストールするときには --force
オプションが必要です。
eksctl create addon -f cluster.yaml --force
VPN CNI プラグインは、サービスアカウントの IAM ロールを使用する Amazon VPC CNI plugin for Kubernetes の設定 - Amazon EKS で説明されているように、VPC CNI 用の Service Account の IAM ロールを作成する必要があります。上記設定ファイルのattachPolicyARNs:
にかかれている部分がそれに相当します。AWS のドキュメントでは Service Account である aws-node を新しいものに置き換える手順がありますが、eksctl は設定ファイルに上記のように書くだけで Service Account も新しいものに置き換えてくれました。
おまけ セルフマネージド型の組み込みアドオンの更新方法
EKS アドオンが推奨されていますが、セルフマネージド型アドオンのまま更新をすることもできます。
AWS ドキュメントによる更新手順
- セルフマネージド型アドオンを更新する (VPC CNI)
- セルフマネージド型アドオンを更新する (CoreDNS)
- Kubernetes kube-proxy アドオンの使用 - セルフマネージド型アドオンを更新する
eksctl による更新手順