Terway ベースの ACK クラスターでは、Terway が Elastic Network Interface (ENI) を使用してコンテナに IP アドレスを割り当てます。Terway が作成する各 ENI には、最大 5 つのセキュリティグループを関連付けることができます。これにより、ネットワーク構造を変更することなく、Pod に対してレイヤー化されたアクセスの制御を適用できます。
前提条件
作業を開始する前に、以下の点を確認してください。
ご利用のクラスターが Terway ネットワークプラグイン バージョン 1.1.1 以降を使用していること。Terway のスペックアップ方法については、「コンポーネントの管理」をご参照ください。
注意事項
新規 ENI のみ対象: セキュリティグループの変更は、構成を保存した後に作成される ENI のみに適用されます。既存の ENI は現在のセキュリティグループを保持します。既存ノードに新しい構成を適用するには、各ノードを削除して再度追加する必要があります。「ノードの削除」および「既存の ECS インスタンスを ACK クラスターに追加」をご参照ください。
同一 VPC 内: すべてのセキュリティグループは、クラスターと同じ VPC に属している必要があります。
同一タイプ: すべてのセキュリティグループは、同一タイプ(通常またはエンタープライズ)である必要があります。
5 グループ制限: 単一の ENI に関連付けられるセキュリティグループは最大 5 つです。Terway は、
security_groupおよびsecurity_groupsの両方をこの上限に含めてカウントします。
ENI への複数セキュリティグループの関連付け
kubectl
デフォルトでは、Terway は作成する各 ENI に 1 つのセキュリティグループのみを関連付けます。追加のセキュリティグループを関連付けるには、eni-config ConfigMap を kube-system 名前空間で編集します。
ConfigMap を編集モードで開きます。
kubectl edit cm eni-config -n kube-system既存の
security_groupフィールドと並んで、security_groupsフィールドを JSON 配列として追加します。Terway は、
security_groupおよびsecurity_groupsの両方に記載されたすべてのセキュリティグループを適用します。合計数は 5 グループを超えてはなりません。"security_group": "sg-bp19k3sj8dk3dcd7****", "security_groups": ["sg-bp1b39sjf3v49c33****","sg-bp1bpdfg35tg****"],構成を有効にするため、Terway Pod を再作成します。
kubectl delete pod -n kube-system -l app=terway-eniipすべての Terway Pod が
Running状態に戻るまで待ってから、次の手順に進みます:kubectl get pod -n kube-system -l app=terway-eniip出力は以下のようになります。
NAME READY STATUS RESTARTS AGE terway-eniip-xxxxx 1/1 Running 0 30s
構成の確認
ECS コンソール にログインします。左側のナビゲーションウィンドウで、インスタンスとイメージ > インスタンス を選択します。
インスタンスページで、確認したい ECS インスタンスを見つけ、クリックします。
インスタンス詳細ページで、ENI タブをクリックします。セカンダリ ENI に ConfigMap で指定したセキュリティグループが表示されていることを確認します。
セカンダリ ENI に依然として元のセキュリティグループのみが表示されている場合は、Terway Pod がまだ再起動していない可能性があります。kubectl get pod -n kube-system -l app=terway-eniipを実行して、すべての Terway Pod がRunning状態であることを確認した後、再度 ENI タブを確認してください。
クラスター作成時の複数セキュリティグループの関連付け
クラスター作成時に複数のセキュリティグループを設定するには、CreateCluster API 呼び出し時に terway-eniip アドオン構成内で SecurityGroupIDs パラメーターを渡します。
{
"name": "your_cluster_name",
"cluster_type": "ManagedKubernetes",
"addons": [
{
"name": "terway-eniip",
"config": "{\"IPVlan\":\"true\",\"NetworkPolicy\":\"false\",\"ENITrunking\":\"true\",\"SecurityGroupIDs\": \"[\\\"sg-foo\\\"]\" }"
}
],
....
}