[EKS] ③ Node Group 생성 (AWS 콘솔)

이아영·2021년 4월 22일
3

EKS

목록 보기
3/7

드디어 Node Group을 생성해보겠다. Node Group을 생성하기 전에 몇 가지 설정이 필요하다. Pod 네트워킹을 위한 CNI 설정과 Node Group에 대한 IAM 역할 생성, 그리고 Cluster, Controle Plane, Node 보안 그룹의 인바운드 설정이 필요하다.

VPC CNI 플러그인에 대한 IAM 역할 생성

Amazon VPC CNI는 클러스터 내에서 Pod 네트워킹을 활성화 한다.

Cluster를 생성할 때 기본으로 네트워킹 추가 기능에 세팅 되어있었기 때문에 우리가 만든 Cluster에는 이미 CNI 플러그인이 설치가 되어있다.

참고 - Cluster 생성할 때 세팅 했던 내용 (Private Cluster 생성 편)

EKS 콘솔에서 Cluster 구성추가 기능 탭을 눌러 보면 VPC CNI가 있는 것을 볼 수 있다.

Amazon EKS Amazon VPC CNI 플러그인을 사용하면 Kubernetes Pod가 VPC 네트워크에서와 마찬가지로 Pod 내부에 동일한 IP 주소를 가질 수 있다.

이제 VPC CNI에 대한 역할을 생성해주기 위해 IAM 콘솔의 역할 탭에서 역할 만들기 버튼을 클릭한다.

웹 ID를 선택하고 앞에서 우리가 만들었던 자격 증명 공급자Audience(대상)을 선택해 준다.

권한 정책 연결에서 CNI라고 검색하면 AmazonEKS_CNI_Policy라는 AWS 관리형 정책이 나온다. 이 정책을 선택해주고 다음으로 넘어간다.

적당한 이름을 지어주고 역할을 만들어준다.

만든 역할의 신뢰 관계 편집을 해야한다.

방금 만든 역할의 요약신뢰 관계로 가서 신뢰 관계 편집을 클릭해준다.

신뢰 관계 편집에 들어가면 다음과 같이 세팅이 되어있을 것이다.

파란 부분을 아래와 같이 수정해준다.

aud": "sts.amazonaws.com"sub": "system:serviceaccount:kube-system:aws-node"

참고 - 신뢰 관계 편집 전체 Json
https://docs.aws.amazon.com/eks/latest/userguide/getting-started-console.html

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::<111122223333>:oidc-provider/oidc.eks.us-west-2.amazonaws.com/id/<XXXXXXXXXX45D83924220DC4815XXXXX>"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "oidc.eks.us-west-2.amazonaws.com/id/<XXXXXXXXXX45D83924220DC4815XXXXX>:sub": "system:serviceaccount:kube-system:aws-node"
        }
      }
    }
  ]
}

이제 이 역할을 VPC CNI에 붙여줄 것이다.

EKS 콘솔로 이동하여 Cluster 구성추가 기능 탭에서 vpc-cni를 선택하고 편집 버튼을 누른다.
서비스 계정 역할에 우리가 만든 CNI 역할을 붙여준다.

업데이트를 하고 잠시 기다리면 vpc-cni상태가 다시 활성으로 된다.


Node에 대한 IAM 역할 생성

IAM 콘솔에서 역할 만들기로 들어간다.

개체 선택은 AWS 서비스, 사용 사례 선택은 EC2를 해준다.

정책은 다음 AWS 관리형 정책들을 선택해준다.

  • AmazonEKSWorkerNodePolicy
  • AmazonEC2ContainerRegistryReadOnly

적당한 이름을 지어주고 역할 만들기를 완료한다.


Node 보안 그룹 생성

먼저 Node 보안 그룹을 생성만 해준다.
(생성을 해야 보안 그룹 ID가 발급되고 이를 다른 보안 그룹에서도 사용할 수 있기 때문)

보안 그룹 이름 : L23724-eks-node-group-sg-tokyo
보안 그룹 ID : sg-0de74931158730542


보안 그룹 인바운드 세팅

이제 앞에서 생성만 했놨었던 보안 그룹들에 대한 인바운드 규칙을 설정해보자.

AWS 문서에 나오는 권장 인바운드를 기준으로 세팅하겠다.

  1. Cluster 보안그룹

    Cluster 보안그룹은 Cluster를 생성하면 자동으로 생성되는데 세팅도 이미 권장 인바운드에 맞게 되어있다.

    콘솔에서는 Cluster의 구성네트워킹에서 클러스터 보안 그룹이라는 항목에서 볼 수 있고 클릭하면 해당 보안 그룹으로 이동할 수 있다.

  2. Control Plane 보안그룹

    Control Plane 보안그룹은 Cluster를 생성할 당시 우리가 만들어서 붙여주었다. 콘솔에서는 Cluster의 구성네트워킹에서 추가 보안 그룹이라는 항목에서 볼 수 있다.

    인바운드에 대한 세팅 없이 생성만 해줬었기 때문에 인바운드를 추가해 보도록 하겠다.

    문서에 나오는 권장 인바운드 트래픽은 모든 노드 보안 그룹에 대해 443 포트를 열어주라고 되어있다.

    Control Plane 보안그룹에서 방금 전 만들었던 노드 보안 그룹에 대해 443 포트를 열어준다.

  3. Node 보안그룹

    마지막으로 Node 보안그룹 인바운드를 세팅해보겠다.

    모든 노드 보안 그룹에 대해 all로 열고, 제어 플레인 보안 그룹에 대해 443, 1025-65535 포트를 여는게 권장 인바운드 트래픽이다.

EKS 보안그룹에 대한 자세한 내용은 아래 AWS 공식 문서 참고
https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/sec-group-reqs.html


Node Group 추가

Cluster의 구성컴퓨팅 탭으로 들어가면 노드 그룹을 추가할 수 있다. 노드 그룹 추가 버튼을 클릭한다.

노드 그룹의 이름을 정해주고 앞에서 만들었던 Node에 대한 IAM 역할을 선택한 후 다음으로 넘어간다.

컴퓨팅 및 조정 구성 설정은 기본 세팅을 건드리지 않았다. 상황에 맞게 변경하면 되겠다.

워커 노드는 모두 프라이빗 서브넷에 생성할 것이기 때문에 서브넷은 프라이빗 서브넷만 선택해준다.

원격 액세스 권한 허용 대상은 앞에서 만든 Node 보안 그룹을 선택해 준다.

다음을 눌러 검토를 마치고 노드 그룹을 생성해 준다.

노드 그룹 생성도 좀 걸린다...😤

10분 정도 쉬었다가 새로고침 해보면 노드 그룹이 만들어져 있다.

다음 글에서는 Bastion 서버에서 Cluster와 통신해보겠다.
(Private 구성이기 때문에 Bastion 서버에서만 접근할 수 있다.)

0개의 댓글