EKS でクラスターサブネットとセキュリティグループの変更ができるようになりました

先日 EKS でクラスターサブネットとセキュリティグループの変更が可能になったので、試してみました。

クラスターサブネットとセキュリティグループとは?

クラスターサブネットはコントロールプレーンとノードや Kubernetes リソースを配置する VPC との通信を可能にするために、 EKS が ENI を作成するサブネットになります。

クラスターを作成すると、Amazon EKS は、指定したサブネットに 2~4 つの Elastic Network Interface を作成します。これらのネットワークインターフェイスは、クラスターと VPC 間の通信を可能にします。これらのネットワークインターフェイスでは、kubectl exec や kubectl logs などの Kubernetes の機能も有効化されます。Amazon EKS が作成した各ネットワークインターフェイスの説明には、テキスト Amazon EKS cluster-name が書き込まれます。
Amazon EKS VPC およびサブネットの要件と考慮事項

これらのサブネットはノードが存在するサブネットとは必ずしも一致しません。
クラスターサブネットを変更するユースケースとしては、 IP が足りなくなってネットワーク構成を変更したい場面などが想定されます。
EKS Best Practices Guides にもコントロールプレーンと通信する ENI を配置するサブネットとノードを配置するサブネットを分けるケースの記載があります。

Kubernetes worker nodes can run in the cluster subnets, but it is not recommended. During cluster upgrades Amazon EKS provisions additional ENIs in the cluster subnets. When your cluster scales out, worker nodes and pods may consume the available IPs in the cluster subnet. Hence in order to make sure there are enough available IPs you might want to consider using dedicated cluster subnets with /28 netmask.
VPC and Subnet Considerations - EKS Best Practices Guides -

最初はクラスターサブネットとノードを配置するサブネットを同じにしていたけれど、Kubernetes リソースの増加等で IP が足りなくなった場合、クラスターサブネットの変更も視野に入れつつ再設計できるので取れる選択肢が広がりました。
ちなみに、利用する AZ を増やした場合等に新しい AZ のサブネットを追加することはできません。

追加するサブネットはすべて、クラスターの作成時に最初に提供したのと同じ一連の AZ 内にある必要があります。
Amazon EKS VPC およびサブネットの要件と考慮事項 - Amazon EKS -

また、今回変更できるようになったセキュリティグループは上記 ENI に付与されるセキュリティグループになります。
こちらはノードとコントロールプレーンの通信を追加で制御したい場合に利用できます。

クラスターサブネットを変更してみた

AWS Management Console、AWS CLI の最新バージョン、AWS CloudFormation、および eksctl のバージョン v0.164.0-rc.0 以降から更新できます。
Amazon EKS VPC およびサブネットの要件と考慮事項 - Amazon EKS -

上記記載の通り複数の方法で変更できますが、今回はマネジメントコンソールでやってみます。
クラスターサブネットおよびセキュリティグループの変更はネットワーキングManage VPC resources から実施可能です。

事前に ENI を確認しておくと、クラスターサブネットとして指定した 2 つのサブネットにそれぞれ 1 個ずつ存在する状況です。

サブネットとして、クラスターを作成した時に指定したサブネットと同じ VPC かつ同じ AZ のサブネットが選択できるので、追加して 変更を保存 をクリックします。

注意書きが記載されたポップアップが出るので、クラスター名を入力して 確認 を押します。

変更履歴から確認すると、タイプ VpcConfigUpdate として更新が行われていました。

大体 6~7 分程度かかり、クラスターサブネットを変更できました。

結果、 ENI がデプロイされるサブネットが増えてました。

セキュリティグループも変更してみた

同じように Manage VPC resources から変更できますが、変更できるのは追加のセキュリティグループの方です。

追加のセキュリティグループ はコントロールプレーンとの通信用 ENI にのみアタッチされるセキュリティグループです。
クラスターセキュリティグループは ENI にも「作成したマネージドノードグループ内のノードのネットワークインターフェイス」にもアタッチされるセキュリティグループです。

Amazon EKS は、同様に作成される次のリソースに、セキュリティグループを自動的に関連付けます。
・2—4 エラスティックネットワークインターフェイス (これ以降、ネットワークインターフェイス) は、クラスターの作成時に作成されます。
・作成したマネージドノードグループ内のノードのネットワークインターフェイス。
デフォルトのルールでは、すべてのトラフィックがクラスターとノード間で自由に行き来することができます。また、任意の送信先へのすべてのアウトバウンドトラフィックが許可されています。クラスターを作成すると、オプションで独自のセキュリティグループを指定できます。その場合、Amazon EKS は、指定したセキュリティグループをクラスター用に作成するネットワークインターフェイスにも関連付けます。ただし、作成したノードグループには関連付けられません。
Amazon EKS セキュリティグループの要件および考慮事項

セキュリティグループについても、変更時は確認用のポップアップがでます。

セキュリティグループについても 6~7 分程度で変更できました。

まとめ

EKS を構築後に設定変更可能な内容が増えました。
頻繁に設定変更するようなものでは無いと思いますが、純粋に選択肢が増えたのでより便利に EKS を活用できますね!