안녕하세요. 번개장터 백엔드 엔지니어 박상조입니다.
아래 링크의 AWS에서 제공하는 EKS구성 강의를 참고하였습니다. https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/getting-started.html
구성하기에 앞서 VPC와 subnet은 생성되어 있다고 가정하겠습니다.
EKS 클러스터가 사용할 보안그룹을 생성합니다.
생성이 시작되면 Status가 CREATING이 되며 생성이 완료될 때 까지 기다립니다.
필수 사항은 아니지만, AWS CLI를 이용하면 kubeconfig 생성이 쉬워지기 때문에 설치하시기를 권장합니다. 아래 링크를 참조하시기 바랍니다.
https://docs.aws.amazon.com/cli/latest/userguide/installing.html
아래 명령어를 통해 AWS CLI의 버전을 확인합니다.
aws --version
1.16.18버전 이하라면 kubeconfig를 생성할 수 없습니다.
kubectl이란 k8s를 운영하기 위한 CLI 도구 입니다.
운영체제에 맞게 kubectl을 설치 합니다. 공식 문서는 여기를 참고하세요.
Linux
https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-07-26/bin/linux/amd64/aws-iam-authenticator
MacOS
https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-07-26/bin/darwin/amd64/aws-iam-authenticator
Windows
https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-07-26/bin/windows/amd64/aws-iam-authenticator.exe
chmod +x ./aws-iam-authenticator
/usr/local/bin으로 파일을 옮겨 터미널에서 사용할 수 있게합니다.
aws-iam-authenticator가 잘 동작하는지 확인합니다.
aws-iam-authenticator help
aws eks update-kubeconfig --name
ClusterName에는 EKS 마스터 클러스터를 만들 때 썼던 이름을 사용합니다.
실행:
kubectl get svc
결과:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
svc/kubernetes ClusterIP 10.100.0.1 443/TCP 1m
결과가 위처럼 나오면 성공입니다.
이제 쿠버네티스 마스터 클러스터를 구성하고 kubectl까지 연결해 운영할 수 있게 만들었습니다. 이제 작업자 노드를 만들고 연결해 실제로 k8s 환경을 구성해 보겠습니다. 작업자 노드는 CloudFormation을 통해 만들어집니다.
AWS CloudFormation 콘솔을 엽니다.(https://console.aws.amazon.com/cloudformation/)
Create stack을 선택 합니다.
템플릿을 정해야 하는데 기존 템플릿에 수정사항이 있으면 다운로드 후 설정해서 사용합니다.
기본 템플릿:
https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2018-11-07/amazon-eks-nodegroup.yaml
세부사항을 설정합니다.
EKS Cluster에 EKS 마스터 클러스터를 만들 때 사용했던 이름을 사용합니다.
다른 이름을 사용하면 마스터 클러스터에 연결이 되지 않습니다.
공식 AMI가 아직 서울 region에 없기 때문에 빌드해서 사용해야 합니다.
https://github.com/awslabs/amazon-eks-ami
위 프로젝트를 보고 빌드하시면 되는데 클론하신 후 eks-worker-al2.json 파일에서 aws_region을 ap-northeast-2로 바꿔주셔야 빌드가 됩니다.
그 외 **VPC, Subnets**등은 자신의 환경에 맞게 설정하고 Next를 눌러 줍니다.
작업자 노드는 마스터에 연결해야 제대로 동작할 수 있습니다. 그럼 마스터에서 노드에 연결을 해 보도록 하겠습니다.
아래 링크에서 구성 맵을 다운로드합니다.
https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2018-11-07/aws-auth-cm.yaml
아래 명령어를 통해 연결해 줍니다.
kubectl apply -f aws-auth-cm.yaml
그 후
kubectl get nodes -w
로 방금 연결한 노드가 Ready 상태가 될 때까지 기다립니다.
이제 기본적인 k8s환경 구성이 끝났습니다. 이제 k8s를 사용해서 각자 운영환경을 구축해 나갈 수 있습니다. 다음 포스팅은 helm과 ingress, 배포환경 구성에 대해 다룰 생각입니다.
읽어주셔서 감사합니다.