2022. 1. 18. 15:51ㆍCloud 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를 등록할 때는 크게 다음의 과정을 거칩니다.
- Console에서 Amazon EKS → 클러스터 → 클러스터 추가 → 등록 선택
- 클러스터 이름과 공급자정보 선택
- 연결 구성에서 AmazonEKSconnectorAgentRole 선택
- 클러스터 등록
- 생성 된 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)
- IAM → 역할 → AmazonEKSConnectorAgentRole 선택
- 권한 → 정책 연결 → AmazonEKSClusterPolicy 정책 연결
- 신뢰관계 → 신뢰관계 편집 후 하단 정책 포함
{
"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
미리 배포된 GKE Cluster
Kubeadm으로 배포한 Cluster
위와 같이 다양한 Kubernetes 환경을 EKS Connector를 통해 AWS Console에서 통합 조회가 가능하였습니다. 아직은 통합 조회에 그치는 수준이지만 향후 좀 더 다양한 기능을 AWS Console을 통해 수행할 수 있다면 통합관리 측면에서 EKS Connector를 사용하는 점이 확실히 매력적이지 않을까 생각해봅니다.
'Cloud Computing > AWS' 카테고리의 다른 글
Cloud Assessment Pack (Part 3) - AWS Migration HUB: 수집 데이터 확인 (0) | 2022.05.09 |
---|---|
Cloud Assessment Pack (Part 2) - AWS ADS: Agentless, Import방식 자원 수집 (0) | 2022.03.07 |
Cloud Assessment Pack (Part 1) - 소개 및 AWS ADS (0) | 2022.01.28 |
EKS Anywhere (2/3) - EKS Anywhere Local Cluster 설치 (0) | 2022.01.17 |
EKS Anywhere (1/3) - EKS Anywhere 소개 (0) | 2022.01.17 |