이어서 ... Cloud9 세팅
aws ec2 create-key-pair --key-name $ACCOUNT-key --query 'KeyMaterial' --output text > $ACCOUNT-key.pem
# 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
kubectl create ns test
kubectl create ns deploy
kubectl create ns product
test
: 여기서 기능 테스트를 시행
deploy
: 테스트가 완료된 제품을 프로덕트에 옮기기 전 통합 테스트
product
: 실제 배포 환경
kubectl set env daemonset aws-node -n kube-system ENABLE_PREFIX_DELEGATION=true
kubectl set env ds aws-node -n kube-system WARM_PREFIX_TARGET=1
기본적으로 kube-system에서 설치된 daemonset인 aws-node는 네임스페이스를 새로 만들었다 해서 새로 만든 네임스페이스에 새로 배포할 필요 없다
위의 블로그 글에서 설정한 내용 이후부터 진행한다.
이 설정을 하지 않으면 클러스터에서 접근할 수 없는 자격자라고 나온다.
# 클러스터에 대한 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을 복사하면 된다.
클러스터를 만들고 작업을 하다가 클러스터를 삭제할 때 Related Recource가 남아서 스택이 삭제가 안되는 경우가 존재해 깔끔하게 클러스터를 삭제할 수 없는 경우가 있다.
이 경우 관련 리소스를 삭제해주거나 아래 명령어로 강제 스택 삭제를 진행한다.
aws cloudformation delete-stack --stack-name <stack-name> --region $AWSREGION --retain-resources <RelatedRecource>