EKS Cluster 생성 + ALB Ingress Controller + CI/CD(1)

7060 단어 awsaws

EKS Cluster 생성 + ALB Ingress Controller + CI/CD(1)

1. EKS Cluster 생성

1) EKS 클러스터 IAM User 생성

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

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

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

2) EKS 클러스터 VPC 세팅

1. VPC 생성

2. Subnet 생성

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

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

3. Internet Gateway Attach

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

4. NAT Gateway Attach

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

4. Routing Table 설정

Public Routing Table

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

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

Private Routing Table

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

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

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

1. EKS Cluster IAM Role 생성

Permissions

  • AmazonEKSClusterPolicy

Trust relationships

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

2. EKS 노드그룹 IAM Role 생성

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 클러스터 생성

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

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

5) EKS Node Group 생성

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

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

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

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

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

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

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 Cluster에서 구성 -> 컴퓨팅 -> 노드 그룹 추가를 선택합니다.

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

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

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

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

5) EC2 MGMT 서버 생성

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

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

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

참고문서

좋은 웹페이지 즐겨찾기