LoginSignup
0
0

Amazon EKS - プライベートクラスター

Last updated at Posted at 2023-12-31

プライベートクラスター

ここでは、AWS クラウド上にデプロイされているが、アウトバウンドのインターネットアクセスを持っていないAmazon EKS クラスタをデプロイする方法について学習します。

VPC エンドポイント

クラスターの VPC サブネットには、Pod がアクセスする必要のあるすべての AWS のサービス に対して VPC エンドポイントが必要です。

サービス エンドポイント
Amazon EC2 com.amazonaws.region-code.ec2
Amazon Elastic Container Registry (コンテナイメージの取得用) com.amazonaws.region-code.ecr.api、com.amazonaws.region-code.ecr.dkr、および com.amazonaws.region-code.s3
Application Load Balancerおよび ネットワークロードバランサー com.amazonaws.region-code.elasticloadbalancing
Amazon CloudWatch Logs com.amazonaws.region-code.logs
AWS Security Token Service (サービスアカウントに IAM ロールを使用している場合に必要) com.amazonaws.region-code.sts

パターン A

CloudFormation で VPC エンドポイントを先に作成し、privateAccess を有効にする

vpc:
  clusterEndpoints:
    publicAccess:  <true|false>
    privateAccess: <true|false>

1. VPC エンドポイントを作成する(Cloudformation)

スクリーンショット 2023-12-30 17.12.11.png

2. ClusterConfig で、clusterEndpoints.privateAccess: true にする

ここでの設定は、

  • エンドポイントのプラーベートアクセス: 有効
    • クラスターの VPC 内から送信される Kubernetes API リクエストは、VPC エンドポイントを使用
  • エンドポイントのパブリックアクセス: 有効(アドレス指定有り)
    • インターネットからパブリックエンドポイントと通信するためのアドレスを指定

としています。

その他の組み合わせについては以下ドキュメントを参照。

ClusterConfig.yaml
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: cluster-demo
  region: ap-northeast-1
  version: "1.28"  

iam:
  withOIDC: true

fargateProfiles:
  - name: fargate-default
    selectors:
      - namespace: default
      - namespace: kube-system

vpc:
  subnets:
    private:
      us-east-1a:
        id: "subnet-XXXXXXXXXXXXXXXXX"
      us-east-1b:
        id: "subnet-YYYYYYYYYYYYYYYYY"
      us-east-1c:
        id: "subnet-ZZZZZZZZZZZZZZZZZ"
  clusterEndpoints:
    privateAccess: true
    publicAccess:  true
  publicAccessCIDRs: ["1.1.1.1/32", "2.2.2.0/24"]

パターン B

privateCluster を有効にすることで、完全プライベートなクラスターを作成する。
この時、冒頭で説明させていただいた、VPC エンドポイントが作成される。

privateCluster: 
  enabled: true

1. ClusterConfig で、privateCluster.enabled: true にする

ClusterConfig.yaml
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: cluster-demo
  region: ap-northeast-1
  version: "1.28"

iam:
  withOIDC: true

fargateProfiles:
  - name: fargate-default
    selectors:
      - namespace: default
      - namespace: kube-system

privateCluster:
  enabled: true

vpc:
  subnets:
    private:
      ap-northeast-1a:
        id: "subnet-XXXXXXXXXXXXXXXXX"
      ap-northeast-1c:
        id: "subnet-YYYYYYYYYYYYYYYYY"
      ap-northeast-1d:
        id: "subnet-ZZZZZZZZZZZZZZZZZ"
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0