EKS Anywhere (3/3) - EKS Connector를 통한 Cluster 통합 조회

2022. 1. 18. 15:51Cloud Computing/AWS

지난 포스트에서는 AWS EKS Anywhere Local Cluster를 배포하는 방법에 대하여 소개하였습니다. 이번 포스트에서는 배포된 Local Cluster 뿐 아니라 GKE, Kubeadm으로 배포된 Cluster를 EKS Connector를 이용하여 AWS Console에서 통합 조회하는 방법에 대하여 설명합니다. (테스트는 플랫폼 Architect 그룹에서 제공하는 Private Cloud인 DigitalX에서 수행하였습니다.)

 


EKS Connector를 통한 AWS Console 연결 과정


 

EKS Connector를 통해 Kubernetes Cluster를 등록할 때는 크게 다음의 과정을 거칩니다.

 

  1. Console에서 Amazon EKS → 클러스터 → 클러스터 추가 → 등록 선택
  2. 클러스터 이름과 공급자정보 선택
  3. 연결 구성에서 AmazonEKSconnectorAgentRole 선택
  4. 클러스터 등록
  5. 생성 된 Yaml 파일을 사용해 등록하려는 Kubernetes Cluster에서 리소스 생성

 

※ 연결 구성에서 AmazonEKSconnectorAgentRole이 없을 경우 아래의 AmazonEKSconnectorAgentRole 생성을 먼저 수행합니다.

 


 

AmazonEKSconnectorAgentRole 생성

 

Role 생성을 위한 파일(eks-connector-agent-trust-policy.json, eks-connector-agent-policy.json) 생성 후 AWS CLI를 통해 IAM과 정책을 생성합니다.

 

 

eks-connector-agent-trust-policy.json

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

 

eks-connector-agent-policy.json

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "SsmControlChannel",
            "Effect": "Allow",
            "Action": [
                "ssmmessages:CreateControlChannel"
            ],
            "Resource": "arn:aws:eks:*:*:cluster/*"
        },
        {
            "Sid": "ssmDataplaneOperations",
            "Effect": "Allow",
            "Action": [
                "ssmmessages:CreateDataChannel",
                "ssmmessages:OpenDataChannel",
                "ssmmessages:OpenControlChannel"
            ],
            "Resource": "*"
        }
    ]
}

 

역할 생성(AWS CLI)

aws iam create-role \
     --role-name AmazonEKSConnectorAgentRole \
     --assume-role-policy-document file://eks-connector-agent-trust-policy.json

 

정책 생성(AWS CLI)

aws iam put-role-policy \
     --role-name AmazonEKSConnectorAgentRole \
     --policy-name AmazonEKSConnectorAgentPolicy \
     --policy-document file://eks-connector-agent-policy.json

 

권한 수정(AWS Console)

  1. IAM → 역할 → AmazonEKSConnectorAgentRole 선택
  2. 권한 → 정책 연결 → AmazonEKSClusterPolicy 정책 연결
  3. 신뢰관계 → 신뢰관계 편집 후 하단 정책 포함
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "eks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

 


Local Cluster에 Yaml 배포

 

Console의 클러스터 등록 후 생성된 Yaml 파일 배포

kubectl apply -f ${Cluster_Name}.yaml

 

Cluster Role binding Yaml 템플릿 다운로드

curl -o eks-connector-clusterrole.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/eks-connector/manifests/eks-connector-console-roles/eks-connector-clusterrole.yaml

 

해당 파일의 %IAM_ARN% 부분을 실제 사용자의 ARN으로 변경

 

해당 파일 수정 후 YAML 파일 배포

kubectl apply -f eks-connector-clusterrole.yaml

 

IAM 사용자와 Cluster 연결 Yaml 템플릿 다운로드

curl -o eks-connector-console-dashboard-full-access-group.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/eks-connector/manifests/eks-connector-console-roles/eks-connector-console-dashboard-full-access-group.yaml

# 상기 템플릿은 전체 네임스페이스에 대한 권한을 주는 것으로, 
# 특정 네임스페이스에 대한 권한만 줄 경우 아래의 템플릿을 활용

# curl -o eks-connector-console-dashboard-restricted-access-group.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/eks-connector/manifests/eks-connector-console-roles/eks-connector-console-dashboard-restricted-access-group.yaml

해당 파일의 %IAM_ARN% 부분을 실제 사용자의 ARN으로 변경

 

해당 파일 수정 후 YAML 파일 배포

kubectl apply -f eks-connector-console-dashboard-full-access-group.yaml

 


EKS Connector 연결 결과

 

EKS Anywhere로 배포한 Cluster

 

AWS Console에 등록된 Cluster의 Node 정보

 

Cluster의 Node 정보

 


미리 배포된 GKE Cluster

AWS Console에 등록된 GKE Cluster의 Node 정보

 

GCP Console에서 확인한 GKE Cluster의 Node 정보


Kubeadm으로 배포한 Cluster

 

AWS Console에 등록된 Kubeadm으로 생성한 Cluster의 Node 정보
Kubeadm Master에서 확인한 Cluster의 Node 정보

 

 

위와 같이 다양한 Kubernetes 환경을 EKS Connector를 통해 AWS Console에서 통합 조회가 가능하였습니다. 아직은 통합 조회에 그치는 수준이지만 향후 좀 더 다양한 기능을 AWS Console을 통해 수행할 수 있다면 통합관리 측면에서 EKS Connector를 사용하는 점이 확실히 매력적이지 않을까 생각해봅니다.