EKS 구축 - eksctl yml 기반 eks 배포

반영환·2023년 9월 2일
0

eks

목록 보기
4/9
post-thumbnail

EKS 구축 - eksctl cmd 기반 eks 배포

이어서 ... Cloud9 세팅

Cluster와 NodeGroup 만들기

키페어 생성 (워커노드 ssh용)

aws ec2 create-key-pair --key-name $ACCOUNT-key --query 'KeyMaterial' --output text > $ACCOUNT-key.pem

클러스터 및 노드그룹 생성 yml파일

# file name : eks_setup_env.yml
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: ${ACCOUNT}-cluster
  region: ${AWSREGION}
  version: "1.24"

vpc:
  subnets:
    private:
      ap-northeast-2a:
        id: <subnet-id>
      ap-northeast-2b:
        id: <subnet-id>
    public:
      ap-northeast-2a:
        id: <subnet-id>
      ap-northeast-2b:
        id: <subnet-id>

managedNodeGroups: # node group setting
  - name: ${ACCOUNT}-nodegroup
    instanceType: t3.small # 원하는 인스턴스 유형
    minSize: 2
    maxSize: 5
    desiredCapacity: 2
    volumeSize: 20
    ssh: # SSH 접근 설정 (필요한 경우)
      allow: true
      publicKeyName: ${ACCOUNT}-key # C9 세팅할 때 EC2 Key 등록했던 Key의 이름을 작성. ex ekskey-${ACCOUNT}
    privateNetworking: true

iam:
  withOIDC: true
# 환경변수 인코딩
envsubst < eks_setup_env.yml > eks_setup_product.yml

eksctl create cluster -f eks_setup_product.yml

Name Space 생성하기

kubectl create ns test
kubectl create ns deploy
kubectl create ns product

test : 여기서 기능 테스트를 시행
deploy : 테스트가 완료된 제품을 프로덕트에 옮기기 전 통합 테스트
product : 실제 배포 환경

Daemonset 파라미터 수정

kubectl set env daemonset aws-node -n kube-system ENABLE_PREFIX_DELEGATION=true

IP 사용 개수 증설

네트워크 인터페이스 (ENI) VPC plugin 수정

kubectl set env ds aws-node -n kube-system WARM_PREFIX_TARGET=1

기본적으로 kube-system에서 설치된 daemonset인 aws-node는 네임스페이스를 새로 만들었다 해서 새로 만든 네임스페이스에 새로 배포할 필요 없다

Cloud9 접근 권한 설정하기

위의 블로그 글에서 설정한 내용 이후부터 진행한다.

이 설정을 하지 않으면 클러스터에서 접근할 수 없는 자격자라고 나온다.

권한 확인하기

# 클러스터에 대한 IAM 권한 확인하기
eksctl get iamidentitymapping --cluster $ACCOUNT-cluster --region=$AWSREGION

권한 추가하기

# Role 추가하기
eksctl create iamidentitymapping --cluster $ACCOUNT-cluster --region=$AWSREGION \
    --arn arn:aws:iam::<계정ID>:role/<만들었던 역할 이름> --username <맵핑할 사용자 이름> --group system:masters \
    --no-duplicate-arns

# User 맵핑하기
eksctl create iamidentitymapping --cluster $ACCOUNT-cluster --region=$AWSREGION \
    --arn arn:aws:iam::<계정ID>:user/<맵핑할 사용자 이름> --username <맵핑할 사용자 이름> --group system:masters \
    --no-duplicate-arns

권한을 다시 확인하고 클러스터 대시보드에 들어가면 알림창이 사라진 것을 볼 수 있다.

arn:aws:iam::<계정ID>:user/<맵핑할 사용자 이름> 는 IAM에 들어가 사용자의 arn을 복사하고,
arn:aws:iam::<계정ID>:role/<만들었던 역할 이름> 는 IAM에 들어가 역할의 arn을 복사하면 된다.

CloudFormation 스택 삭제 안될 때

클러스터를 만들고 작업을 하다가 클러스터를 삭제할 때 Related Recource가 남아서 스택이 삭제가 안되는 경우가 존재해 깔끔하게 클러스터를 삭제할 수 없는 경우가 있다.

이 경우 관련 리소스를 삭제해주거나 아래 명령어로 강제 스택 삭제를 진행한다.

aws cloudformation delete-stack --stack-name <stack-name> --region $AWSREGION --retain-resources <RelatedRecource>
profile
최고의 오늘을 꿈꾸는 개발자

0개의 댓글