EKSのセルフマネージド型の組み込みアドオンをEKSアドオンに置き換える

2024年3月31日

Amazon EKS

EKS クラスタを eksctl の Getting started に書かれている方法で作成すると、組み込みアドオン(VPC CNI, CoreDNS, kube-proxy) はセルフマネージド型のアドオンが自動的にインストールされます。Amazon EKS ネットワーキングアドオン - Amazon EKS によると、これらの組み込みアドオンは、セルフマネージド型アドオンではなく EKS アドオンを利用することが推奨されています。

この記事では、EKS クラスタを構築した後に、セルフマネージド型のアドオンから EKS アドオンに変更する方法を紹介します。eksctl は v0.175.0、EKS は 1.29 で動作確認をしました。

目次

  1. セルフマネージド型のアドオンがインストールされた EKS クラスタを作成する
  2. セルフマネージド型アドオンを置き換えるには EKS アドオンをインストールすれば OK
  3. eksctl の設定ファイルを利用して EKS アドオンに置き換える方法
  4. おまけ セルフマネージド型の組み込みアドオンの更新方法

セルフマネージド型のアドオンがインストールされた 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 ドキュメントによる更新手順

eksctl による更新手順

-技術ブログ
-