해당 실습을 서울(ap-northeast-2) 및 오레곤(us-west-2) 리전에서 정상 동작하는것을 확인하였습니다. 다른 리전에서 실습을 진행할때 문제가 발생하는 경우에는 해당 깃헙 리포지토리 https://github.com/youngwjung/eks-adv-workshop에 이슈를 생성해주시기 바랍니다.
AWS Workshop Studio 또는 각자 사용 가능한 AWS 계정으로 AWS 관리콘솔에 로그인
CloudShell 실행
바이너리를 저장할 디렉토리 생성
{
mkdir ~/bin
echo export PATH="$HOME/bin:$PATH" >> ~/.bashrc
export PATH="$HOME/bin:$PATH"
}
Terraform 설치
{
wget <https://releases.hashicorp.com/terraform/1.9.4/terraform_1.9.4_linux_amd64.zip>
unzip terraform_1.9.4_linux_amd64.zip terraform -d $HOME/bin
rm terraform_1.9.4_linux_amd64.zip
terraform --version
}
Helm 설치
curl <https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3> | HELM_INSTALL_DIR=$HOME/bin bash
실습에서 사용할 Terraform 코드 다운로드
git clone <https://github.com/youngwjung/eks-adv-workshop.git> \\
&& cd eks-adv-workshop
EC2 Spot 서비스 역할 생성
aws iam create-service-linked-role --aws-service-name spot.amazonaws.com
실습에 사용할 Terraform 코드가 있는 브랜치로 이동
git checkout cluster
EKS 클러스터 생성
{
terraform init
terraform apply --auto-approve \\
--target module.vpc \\
--target random_string.domain_prefix \\
--target aws_route53_zone.this \\
--target aws_route53_record.ns \\
--target module.eks \\
--target aws_eks_addon.coredns \\
--target module.karpenter \\
--target kubernetes_namespace.karpenter \\
--target helm_release.karpenter-crd \\
--target helm_release.karpenter
}
쿠버네티스 필수 라이브러리 설치
terraform apply --refresh=false --auto-approve
특정 리소스 생성(e.g. aws-ebs-csi-driver)에 실패하는 경우에는 위의 명령어 재실행
Ingress-NGINX 차트 설치에 실패하는 경우에는 AWS Load Balancer Controller 재생성 후 위의 명령어 재실행
{
kubectl -n kube-system scale deploy aws-load-balancer-controller --replicas=0
kubectl -n kube-system scale deploy aws-load-balancer-controller --replicas=1
}
kubeconfig 파일 생성
$(terraform output --raw update_kubeconfig)
생성된 노드 확인
kubectl get node
생성된 노드 유형 확인
kubectl get nodeclaim
생성된 Pod 확인
kubectl get pod -A