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

所要時間1分
0

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

簡単な説明

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

解決方法

注意: AWS Command Line Interface (AWS CLI) コマンドの実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

環境の設定

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

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

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

4.    AWS CLI をセットアップします

5.    AWS Load Balancer Controller をセットアップします

**注意:**AWS ロードバランサーコントローラーは、タイプ LoadBalancer の AWS ネットワークロードバランサーの次のバージョンをサポートしています。NLB IP モード (バージョン 2.0.0 以上) と NLB インスタンスモード (2.2.0 以上)

**重要:**LoadBalancer タイプのサービス用に新しいネットワークロードバランサーをプロビジョニングする場合は、AWS ロードバランサーコントローラーを使用することをお勧めします。Kubernetes インツリーサービスロードバランサーコントローラの代わりに AWS ロードバランサーコントローラーを使用します。

CIDR IP アドレスの制限

1.    サービスマニフェストファイル (svc.yaml) で、.spec.loadBalancerSourceRanges フィールドを追加します。以下はその例です。

apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx
  name: nginx
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-type: "external"
    service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "instance"
    service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing"
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"
...

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

NLB IP モードを使用する場合、 .spec.loadbalancersSourceRanges フィールドはデフォルトで無視されています。この場合、次の注釈を使用します。

service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: preserve_client_ip.enabled=true

この注釈は、クライアント IP の保存を有効にします。

Network Load Balancer タイプを使用するサービスでは、セキュリティグループの最大制限に注意してください。各ノードポートとサブネット CIDR 範囲について、コントローラはワーカーノードのセキュリティグループにルールを作成します。


関連情報

クラスター認証

Kubernetes サービス

AWS公式
AWS公式更新しました 3年前