1일 1커밋🌱

2 분 소요

1. EKS Cluster 생성

1) EKS 클러스터 IAM User 생성

EKS-1

클러스터를 생성할 IAM User를 생성한다.

EKS-2

나의 경우에는 Admin 권한으로 IAM User를 생성해줬다.

그 후에는 위에서 생성한 IAM User로 로그인한다.

2) EKS 클러스터 VPC 세팅

1. VPC 생성

EKS-3

2. Subnet 생성

EKS-4

EKS-5

EKS-6

Public Subnet 2개, Private Subnet 2개를 만들어준다.

EKS-7

EKS-8

Public Subnet에는 퍼블릭 IPv4 주소를 자동 할당 활성화 시켜준다.

3. Internet Gateway Attach

EKS-9

EKS-10

위에서 생성한 VPC에 연결해준다.

4. NAT Gateway Attach

EKS-11

NAT Gateway를 생성할 때는 위에서 생성한 퍼블릭 서브넷 중 하나를 선택한다.

5. Routing Table 설정

Public Routing Table

EKS-12

EKS-13

서브넷 연결 편집을 눌러 위에서 생성한 퍼블릭 서브넷 2개를 연결시켜준다.

EKS-14

위에서 생성한 Internet Gateway 0.0.0.0/0으로 라우팅 추가해준다.

Private Routing Table

EKS-15

EKS-16

서브넷 연결 편집을 눌러 위에서 생성한 프라이빗 서브넷 2개를 연결시켜준다.

EKS-17

위에서 생성한 NAT Gateway 0.0.0.0/0으로 라우팅 추가해준다.

3) EKS 클러스터 및 노드그룹 IAM Role 생성

1. EKS Cluster IAM Role 생성

EKS-18

Permissions

  • AmazonEKSClusterPolicy

Trust relationships

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "eks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

2. EKS 노드그룹 IAM Role 생성

EKS-19

Permissions

  • AmazonEKSWorkerNodePolicy
  • AmazonEC2ContainerRegistryReadOnly
  • AmazonEKS_CNI_Policy

Trust relationships

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "eks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

4) EKS 클러스터 생성

EKS-20

위에서 생성한 Cluster IAM Role을 선택한다.

EKS-21

위에서 생성한 VPC와 프라이빗 서브넷들을 선택하고 보안그룹은 그대로 두면 기본 보안 그룹이 생성된다. 또한 클러스터 엔드포인트 액세스는 퍼블릭 및 프라이빗으로 설정한다.

5) EKS Node Group 생성

1. EKS 노드그룹 보안그룹 생성

https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/sec-group-reqs.html

다음 설명서에 나와있는 것처럼 EKS 노드 보안 그룹을 생성한다.

EKS-22

2. EKS 노드그룹 생성을 위한 Launch templates 생성

EKS-23

해당 이미지는 Public AMI이고 EKS 버전에 맞는 기본 이미지를 선택하면 된다.

EKS-24

키 페어를 선택하고 위에서 생성한 보안그룹을 선택해준다.

MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="//"

--//
Content-Type: text/x-shellscript; charset="us-ascii"
#!/bin/bash
set -ex
B64_CLUSTER_CA=[EKS Cluster Certificate authority]
API_SERVER_URL=[EKS Cluster API server endpoint]
K8S_CLUSTER_DNS_IP=[EKS Cluster DNS IP]
/etc/eks/bootstrap.sh [EKS Cluster Name] --kubelet-extra-args '--node-labels=eks.amazonaws.com/nodegroup-image=[EKS WorkerNode Base Image ID],eks.amazonaws.com/capacityType=ON_DEMAND,eks.amazonaws.com/nodegroup=[생성할 NodeGroup Name]' --b64-cluster-ca $B64_CLUSTER_CA --apiserver-endpoint $API_SERVER_URL --dns-cluster-ip $K8S_CLUSTER_DNS_IP

--//--

사용자 데이터에 다음과 같은 내용을 입력하고 시작 템플릿 생성을 완료한다.

3. EKS 노드그룹 생성

EKS-25

EKS Cluster에서 구성 -> 컴퓨팅 -> 노드 그룹 추가를 선택합니다.

EKS-26

위에서 생성한 NodeGroup IAM Role을 선택합니다.

EKS-27

위에서 생성한 NodeGroup Template을 선택합니다.

EKS-28

상황에 맞게 크기를 선택합니다.

EKS-29

위에서 생성한 프라이빗 서브넷 2개를 선택합니다.

5) EC2 MGMT 서버 생성

EKS-30

퍼블릭 서브넷 중 하나를 선택해서 EC2를 생성합니다.

https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/sec-group-reqs.html 에서 볼 수 있듯이 EKS 클러스터 보안그룹에 MGMT EC2에서 접근 가능하도록 다음 인바운드 규칙을 추가해준다.

EKS-31

EC2 서버에 접속해 다음과 같은 설정을 해준다.

# 1. kubectl 설치
$ aws configure   # 위에서 생성한 IAM USER Access_Key, Secret_Key 설정
$ curl –o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.19.6/2021-01-05/bin/linux/amd64/kubectl
$ chmod +x ./kubectl
$ mkdir –p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin
$ kubectl version –short –client

# 2. kubeconfig 설정
$ aws sts get-caller-identity
$ aws eks –region [region code] update-kubeconfig –name [eks cluster name]
$ kubectl get svc

참고문서

태그:

카테고리:

업데이트:

댓글남기기