- 위 아키텍쳐를 구축하자
- 2 개의 가용 영역을 사용하며, Subnet은 각 가용 영역별로 Public 하나, Private 하나로 구성된다
- IGW와 NAT GW가 존재하며, 라우팅 테이블도 구축해야 한다
- 위 요구 사항에 따라 구축해야 한다
- VPC를 생성하자
- SUBNET을 생성하자
- 가용영역은 A,C를 사용한다. B와 D는 최신 AZ이다. 최신 가용영역은 사용 불가한 서비스나 기능이 있을 수 있기에 A와 C를 사용한다
- 위 정보에 맞게 SUBNET을 생성하자
- EKS에서 POD들은 실제 VPC의 네트워크 대역을 사용한다. 추후에 클러스터의 규모가 커질 것을 대비하여 서브넷의 IP 대역을 넉넉하게 주었다
- Internet GateWay를 생성하자
- VPC에 연결해주자
- IGW용 라우팅 테이블을 생성하자. IGW를 NAT / BASTION SUBNET과 연결해야 한다
- 내부 라우팅용 규칙과 외부로 나가는 모든 주소에 대해 IGW에 향하도록 하는 규칙을 생성하자
- 라우팅 테이블에 NAT / BASTION SUBNET을 연결하자
- NAT GW를 생성하자. 탄력적 IP 역시 할당해주자
- NAT 용 라우팅 테이블을 만들자. EKS 클러스터가 위치할 SUBNET을 NAT GW와 연결해야 한다
- 내부 라우팅용 규칙과 외부로 나가는 모든 주소에 대해 NAT GW에 향하도록 하는 규칙을 생성하자
- 라우팅 테이블에 PRIVAT SUBNET을 연결하자
- 해당 VPC 내에서 라우팅 테이블이 설정되지 않은 SUBNET은 자동으로 기본 라우팅 테이블에 연결된다
- NAT GW 라우팅 테이블을 기본 라우팅 테이블로 설정하자
- 기본으로 생성된 라우팅 테이블을 삭제하자
- 최종적으로 위와 같은 구성이 되야 한다
- 먼저, Key Pair를 생성하자. Putty를 이용해 접속할 것이므로 ppk로 생성하자
- 생성 시 다운로드 받은 ppk Key는 잘 보관하자
- 보안 그룹을 생성하자. VPC를 지정해주자
- 인바운드 규칙으로는 자신의 서버에서 SSH 접속이 가능하도록 규칙을 생성하자
- 아웃바운드의 경우, Control Plane의 Kubernetes Api Server에만 접근이 가능하도록 설정해야 하지만, 아직 EKS를 생성하지 않았으므로 넘어가자
- 이름을 지정하자
- 이미지로는 Amazon Linux 2023 AMI를 사용하자
- Flavor는 t3.micro를 선택하고, Key Pair는 위에서 생성한 Key Pair를 선택하자
- 네트워크 역시 기존에 생성한 리소스를 선택하고, 인터넷을 통해 접근해야 하므로 퍼블릭 IP도 할당해주자
- Putty에서 아까 다운로드 받은 ppk 키를 선택하자
- 파란색 부분에 Bastion Host의 퍼블릭 IP를 입력하고, 접속하자
- 잘 접속이 되었다
참조 : https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
- AWS CLI를 설치하자
- 패키지를 다운로드 받아 압축 해제하고, 설치를 실행하자
[ec2-user@ip-192-168-11-50 ~]$ /usr/local/bin/aws --version
aws-cli/2.11.10 Python/3.11.2 Linux/6.1.21-1.45.amzn2023.x86_64 exe/x86_64.amzn.2023 prompt/off
- 잘 설치되었는지 버전을 확인하자
참조 : https://kubernetes.io/ko/docs/tasks/tools/install-kubectl-linux/
curl -LO https://dl.k8s.io/release/v1.25.0/bin/linux/amd64/kubectl
- 1.25.0 버전 바이너리를 다운 받자
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
- Kubectl을 설치하자
[ec2-user@ip-192-168-11-50 ~]$ kubectl version --short
Flag --short has been deprecated, and will be removed in the future. The --short output will become the default.
Client Version: v1.25.0
Kustomize Version: v4.5.7
The connection to the server localhost:8080 was refused - did you specify the right host or port?
- 잘 설치되었는지 버전을 확인하자
- 마지막에 8080 was refused는 Kubectl 관련 Config가 설정되지 않았기 때문이다. 즉, Config 파일에 현재 유저의 정보가 없거나, Config 파일이 $HOME/.kube 디렉토리 안에 없을 때 발생하는 에러다
- 아직 EKS 생성하기 전이므로 당연히 발생하는 에러다. 넘어가도 된다
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
```> - eksctl 릴리스를 다운 받고, 압축 해제하자
```shell
sudo mv /tmp/eksctl /usr/local/bin
- 압축 해제한 바이너리 파일을 /usr/local/bin에 옮기자
[ec2-user@ip-192-168-11-50 ~]$ eksctl version
0.136.0
- 잘 설치되었는지 버전을 확인하자
EKS 구축 및 IAM 설정은 다음 편에서 이어진다