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 グループの上限: 1 つの ENI に関連付けることができるセキュリティグループは最大 5 つです。この上限には、
security_groupとsecurity_groupsの両方がカウントされます。
ENI への複数のセキュリティグループの関連付け
kubectl
デフォルトでは、Terway は作成する各 ENI に 1 つのセキュリティグループのみを関連付けます。追加のセキュリティグループを関連付けるには、kube-system 名前空間にある eni-config ConfigMap を編集します。
-
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\\\"]\" }"
}
],
....
}