eksctl-control-host 생성(EC2)

보안그룹이 ssh 접속을 할 수 있게 한 뒤 EC2 인스턴스 한 대를 생성합니다. (t3.micro)

 

# kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
kubectl version --client

# eksctl
# for ARM systems, set ARCH to: `arm64`, `armv6` or `armv7`
ARCH=amd64
PLATFORM=$(uname -s)_$ARCH
curl -sLO "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_$PLATFORM.tar.gz"

# (Optional) Verify checksum
curl -sL "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_checksums.txt" | grep $PLATFORM | sha256sum --check
tar -xzf eksctl_$PLATFORM.tar.gz -C /tmp && rm eksctl_$PLATFORM.tar.gz
sudo mv /tmp/eksctl /usr/local/bin

eksctl version

위의 명령어를 하나씩 실행하며 kubectl, eksctl을 설치합니다.

 

mkdir .ssh
ssh-keygen
aws ec2 import-key-pair --key-name "<key-pair-name>" --public-key-material fileb://~/.ssh/id_rsa.pub

위 명령어로 worknode 생성할 때 사용할 예정!

 

EKSCTL 명령어 실행

 eksctl create cluster \
		--name <cluster-name> \
		--version 1.29 \
		--vpc-private-subnets <subnet-id>,<subnet-id> \
		--vpc-public-subnets <subnet-id>,<subnet-id> \
		--without-nodegroup



eksctl create nodegroup \
		--cluster <cluster-name> \
		--name <nodegroup-name> \
		--node-type t3.small \
		--node-volume-size=8 \
		--nodes 1 \
		--nodes-min 1 \
		--nodes-max 2 \
		--node-private-networking \
		--ssh-access \
        --ssh-public-key <key-pair-name> \
		--managed

위에 생성한 host 서버에 해당 명령어를 입력합니다.

 

cluster 생성
nodegroup 생성

위 이미지 처럼 클러스터와 노드그룹이 생성된 것을 콘솔에서 확인할 수 있습니다.

 

aws eks update-kubeconfig --name <cluster-name> --region <region>

위 명령어를 입력해 kubeconfig를 업데이트 합니다.

 

확인^^

 

혹, 콘솔 상에서 IAM 보안주체 뭐시기 에러나면, 액세스 항목을 확인하시면 됩니다.


eksctl.yaml 파일 작성

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
 
metadata:
  name: <eks-cluster-name>
  region: ap-northeast-2
  version: "1.29"
 
vpc:
  subnets:
    private:
      ap-northeast-2a: { id: <subnet-a-id> }
      ap-northeast-2c: { id: <subnet-c-id> }
  
managedNodeGroups:
  - name: <eks-nodegroup-name>
    instanceType: t3.small
    instanceName: <eks-nodegroup-ec2-name>
    volumeSize: 8
    ssh:
      allow: true
      sourceSecurityGroupIds: ["<sg-id>"]
    minSize: 1
    desiredCapacity: 1
    maxSize: 2
    labels: { type: eks-node }
    privateNetworking: true

iam:
  withOIDC: true
  
# 참고: https://eksctl.io/usage/creating-and-managing-clusters/

위 코드에 알맞은 구성을 설정한 뒤 해당 yaml파일을 s3 버킷에 업로드 합니다.

 

eksctl 배포

aws configure 설정을 위한 user와 accesskey를 생성한 뒤 설정합니다.

 

aws s3 cp <s3-uri> .

s3에 업로드한 eksctl.yaml파일을 가져옵니다.

 

eksctl create cluster -f eksctl.yaml

위 명령어를 통해 cluster를 생성합니다.

 

위 이미지와 같이 keypair 에러가 나면 ssh-keygen 명령어로 해결합니다.

 

노드그룹 까지 잘 설정된 것을 확인할 수 있습니다.

 

eksctl delete cluster -f cluster.yaml

위 명령어를 입력하면 클러스터가 삭제됩니다.

+ Recent posts