eks provisioning

  • 위에서 aws configure 설정 필요


aws cloudformation create-stack --stack-name main-vpc-stack --template-body file://vpc-stack.yaml
VPC_STACK="main-vpc-stack"
outputs=$(aws cloudformation describe-stacks --stack-name $VPC_STACK --query "Stacks[0].Outputs" --output json)
VPC_ID=$(echo $outputs | jq -r '.[] | select(.OutputKey=="VPCId").OutputValue')
PUBLIC_SUBNET_A_ID=$(echo $outputs | jq -r '.[] | select(.OutputKey=="PublicSubnetAId").OutputValue')
PUBLIC_SUBNET_B_ID=$(echo $outputs | jq -r '.[] | select(.OutputKey=="PublicSubnetBId").OutputValue')
PUBLIC_SUBNET_C_ID=$(echo $outputs | jq -r '.[] | select(.OutputKey=="PublicSubnetCId").OutputValue')
PRIVATE_SUBNET_A_ID=$(echo $outputs | jq -r '.[] | select(.OutputKey=="PrivateSubnetAId").OutputValue')
PRIVATE_SUBNET_B_ID=$(echo $outputs | jq -r '.[] | select(.OutputKey=="PrivateSubnetBId").OutputValue')
PRIVATE_SUBNET_C_ID=$(echo $outputs | jq -r '.[] | select(.OutputKey=="PrivateSubnetCId").OutputValue')

echo "VPC_STACK: $VPC_STACK"
echo "VPC_ID: $VPC_ID"
echo "PUBLIC_SUBNET_A_ID: $PUBLIC_SUBNET_A_ID"
echo "PUBLIC_SUBNET_B_ID: $PUBLIC_SUBNET_B_ID"
echo "PUBLIC_SUBNET_C_ID: $PUBLIC_SUBNET_C_ID"
echo "PRIVATE_SUBNET_A_ID: $PRIVATE_SUBNET_A_ID"
echo "PRIVATE_SUBNET_B_ID: $PRIVATE_SUBNET_B_ID"
echo "PRIVATE_SUBNET_C_ID: $PRIVATE_SUBNET_C_ID"
cat <<EOF > eksctl-cluster-config.yaml
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: main
  region: ap-southeast-1
  version: "1.29"
  tags:
    Environment: "Production"

addons:
  - name: vpc-cni
    version: latest
  - name: coredns
    version: latest
  - name: kube-proxy
    version: latest

iam:
  withOIDC: true

vpc:
  id: $VPC_ID
  nat:
    gateway: HighlyAvailable
  subnets:
    private:
      ap-southeast-1a:
        id: $PRIVATE_SUBNET_A_ID
        name: "main-private-subnet-a"
      ap-southeast-1b:
        id: $PRIVATE_SUBNET_B_ID
        name: "main-private-subnet-b"
      ap-southeast-1c:
        id: $PRIVATE_SUBNET_C_ID
        name: "main-private-subnet-c"
    public:
      ap-southeast-1a:
        id: $PUBLIC_SUBNET_A_ID
        name: "main-public-subnet-a"
      ap-southeast-1b:
        id: $PUBLIC_SUBNET_B_ID
        name: "main-public-subnet-b"
      ap-southeast-1c:
        id: $PUBLIC_SUBNET_C_ID
        name: "main-public-subnet-c"

managedNodeGroups:
  - name: manage-group
    instanceType: t3.large
    desiredCapacity: 3
    minSize: 3
    maxSize: 5
    privateNetworking: true
    volumeSize: 20
    ssh:
      allow: true
      publicKeyName: "common"
    iam:
      withAddonPolicies:
        autoScaler: true
        ebs: true
        albIngress: true
    tags:
      eksctl.io/nodegroup-name: "manage-group"

  - name: service-group
    instanceType: t3.large
    desiredCapacity: 1
    minSize: 1
    maxSize: 5
    privateNetworking: true
    volumeSize: 20
    ssh:
      allow: true
      publicKeyName: "common"
    iam:
      withAddonPolicies:
        autoScaler: true
        ebs: true
        albIngress: true
    tags:
      eksctl.io/nodegroup-name: "service-group"
EOF
  • common.pem 파일 추가 필요

  • ssm 못하도록 하는 설정 추가 필요

eksctl create cluster -f eksctl-cluster-config.yaml

aws eks --region ap-southeast-1 update-kubeconfig --name main --alias main

k get all

Last updated

Was this helpful?