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 つのセキュリティグループを関連付けることができます。Terway は、
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 ポッドが
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\\\"]\" }"
}
],
....
}