Amazon EKS で、LoadBalancer タイプのサービスの CIDR IP アドレスを制限する方法を教えてください。

最終更新日: 2020 年 6 月 10 日

Amazon Elastic Kubernetes Service (Amazon EKS) で LoadBalancer タイプのサービスの CIDR IP アドレスを制限したいと考えています。x

簡単な説明

type:LoadBalancer のサービスを作成すると、ソース 0.0.0.0/0 からのリクエストがデフォルトで許可されます。ロードバランサーがパブリックサブネットにある場合、リクエストはインターネット上のどこからでもワーカーノードにルーティングされます。

解決方法

環境の設定

1.    Amazon EKS クラスターを作成します。

2.    ワーカーノードを作成して起動します。

3.    kubectl をセットアップします。

4.    AWS コマンドラインインターフェイス (AWS CLI) をセットアップします。

CIDR IP アドレスの制限

1.    サービスマニフェストファイル (svc.yaml) で、.spec.loadBalancerSourceRanges フィールドを追加します。次の例をご参照ください。

apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx
  name: nginx
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer
  loadBalancerSourceRanges:
  - "143.231.0.0/16"

2.    マニフェストファイルを適用するには、次のコマンドを実行します。

$ kubectl apply -f svc.yaml

3.    セキュリティグループのインバウンドルールが変更されたことを確認するには、次の AWS CLI コマンドを実行します。

$ aws ec2 describe-security-groups --group-ids sg-XXXXXXXXXXXXXXXXX
...
    "CidrIp": "143.231.0.0/16"
...

最後に、以下の点を考慮してください。

Kubernetes の 1.14 以前のバージョンでは、CIDR 範囲のサービスリソースを再作成すると、Network Load Balancer を使用しているサービスの .spec.loadBalancerSourceRanges フィールドのみを更新できます。これらの変更は、ワーカーノードのセキュリティグループルールに反映されます。

注: サービスリソースを再作成すると、Network Load Balancer が再プロビジョニングされ、ロードバランサー内に新しい IP アドレスが作成されます。

Network Load Balancer タイプを使用するサービスでは、セキュリティグループの制限に注意してください。ノードポートと CIDR 範囲ごとに、Kubernetes コントロールプレーンが、ワーカーノードのセキュリティグループ内に 3 つのルール (トラフィック、正常性、MTU 用) を作成します。


この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合