AWS EKS 클러스터를 생성하고 해당 EKS에 접속하기 위해서는 2가지 방법이 있다.
- EC2 접속
- AWS CLI 접속
필자는 EC2로 쉽게 실습해서 접속하는 방법을 소개합니다.
이후 EKS를 생성하고 접속은 물론, Node 그룹을 만들며, Pod까지 생성 후 Pod에 접속까지 해보겠습니다.
1) EKS 클러스터 환경 접속을 위한 전용 EC2(Bastion Server) 생성
1-1) EC2 생성
1) EC2를 생성할 Subnet 선택 -> 작업 -> 서브넷 설정 편집 -> 자동할당 IP 설정 체크(활성화)
2) EC2 생성 - AWS Linux 2023 OS 선택 - 생성
1-2) EC2에서 EKS를 사용하기 위한 IAM 역할 생성
1) IAM 역할 생성 - AdministratorAccess 정책 추가 후 생성 #실제론 필요한 EKS 권한만 넣을 것
1-3) 서버에 접속해서 필요한 라이브러리 설치 (aws cli, docker, kubectl, helm, eksctl)
# aws cli2 설치
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
./aws/install
# docker 설치
sudo su
yum install -y docker
systemctl start docker
systemctl enable docker
usermod -a -G docker ec2-user
# Kubectl 1.27버전 다운로드
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.27.1/2023-04-19/bin/linux/amd64/kubectl
chmod +x ./kubectl
HOME=/home/ec2-user
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin
echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
# kubectl 자동완성 설정
kubectl completion bash | tee /etc/bash_completion.d/kubectl > /dev/null
# helm 설치
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
# eksctl 설치
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
mv /tmp/eksctl /usr/local/bin
1-4) EC2에 직전에 생성한 IAM 역할 넣어주기
1) EC2 선택 - 작업 - 보안 - IAM 역할 수정 - 방금생성한거 선택 - IAM 역할 업데이트
세팅은 여기까지 해주고 AWS EKS 생성
2) EKS 클러스터 생성
2-1) EKS 클러스터 IAM 생성
1) IAM 역할 생성 - AWS서비스 - 사용사례:EKS - Cluster - 생성
2-2) EKS 클러스터 sg 생성
1) 보안그룹 생성
2) Port:443 - Source:BastionEC2 보안그룹
3) 생성
2-3) EKS 클러스터 생성
1) AWS EKS - 클러스터추가 - 이름입력 - 버전은 1.27 - 클러스터 관리자 액세스 허용
2) 추후 노드와 같은 VPC 및 서브넷 선택 - 퍼블릭 및 프라이빗 엔드포인트 액세스
3) 제어 플레인 로깅 모두 켜기
4) GuardDuty EKS 런타임 모니터링 빼고 다 체크
5) 생성
약 5~15분정도 이후 생성 완료
3) EC2 (Bastion)에서 AWS EKS 접속하기 (등록하기)
3-1) EC2에 EKS Cluster User Key 설정하기
1) 계정선택 - 보안자격증명 - 액세스 키 - 액세스 키 만들기
2) Bastion EC2 접속하기
$ aws configure
"""
Access Key 입력
Secret Key 입력
ap-northeast-2
json
"""
3-2) EC2에서 생성한 EKS 접속하기
$ aws eks update-kubeconfig --name "AWS EKS에서 생성한 이름" #""제거 후 입력
3-3) Cluster 접속 테스트
$ kubectl get svc
4) Node Group 생성하기
1) AWS EKS 콘솔에서 해당 클러스터 선택
2) 컴퓨팅 - 노드 그룹 추가 - IAM 정책 선택
2-1) IAM 정책은 AmazonEKSWorkerNodePolicy가 포함된것 #필자는 AdministratorAccess 룰 적용
3) AMI 선택 - 인스턴스 유형 선택 - 디스크 선택 - 원하는 노드 선택
4) EKS와 동일한 서브넷 2개 선택 - 생성
2~10분 이내에 생성 완료
4-1) Node 생성 확인하기
1) Bastion EC2 접속
$ kubectl get nodes #생성된 개수 뜨면 성공
5) Pod 생성 후 접속하기
5-1) pod 생성하기 위한 yaml 파일 만들기
$ vi nginx-pod.yaml
"""
apiVersion: v1
kind: Pod
metadata:
name: my-nginx-pod
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
"""
$ kubectl apply -f nginx-pod.yaml #yaml 파일 배포
$ kubectl get pods #생성 pods 확인
$ kubectl describe pod my-nginx-pod #생성된 pod 세부사항 확인
$ kubectl port-forward pod/my-nginx-pod 8080:80 #포트포워팅 실행
5-2) 생성된 Pod에 접속하기
kubectl exec -it my-nginx-pod -- /bin/bash