반응형
외부 호스트에서 새로운 IAM 정보로 AWS EKS의 kubernetes API로 kubectl 명령을 날릴 수 있는 방법을 안내한다.
기본적인 AWS 사용법 및 IAM 서비스에 대한 이해도가 있다는 것을 바탕으로 안내한다.
STEP 1 : IAM 사용자에게 할당할 정책 생성 및 할당
아래의 json 내용으로 RBAC을 설정할 IAM 계정에 할당할 정책을 생성한 후 할당한다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"eks:ListFargateProfiles",
"eks:UpdateClusterVersion",
"eks:ListNodegroups",
"eks:DescribeFargateProfile",
"eks:ListTagsForResource",
"eks:ListUpdates",
"eks:DescribeUpdate",
"eks:DescribeCluster",
"eks:UpdateClusterConfig"
],
"Resource": [
"arn:aws:eks:<리전>:<계정 ID : 12자리 숫자>:fargateprofile/*/*/*",
"arn:aws:eks:<리전>:<계정 ID : 12자리 숫자>:cluster/*"
]
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "eks:ListClusters",
"Resource": "*"
}
]
}
그 다음, 제대로 IAM 정책이 추가되었는지 확인하기 위해 아래 명령어를 실행한다.
$ aws eks list-clusters
{
"clusters": [
"test-cluster-1",
"test-cluster-2"
]
}
위처럼 json 형태로 데이터가 조회되면 성공이다.
STEP 2 : EKS 클러스터의 kubernetes API에 요청을 날릴 수 있는 master 계정에서 configMap을 수정하여 요청을 날릴 수 있는 유저 추가
EKS 클러스터, 즉 쿠버네티스 내부에서 관리하는 configMap을 수정하여 kubernetes API로 요청을 날릴 수 있는 계정의 정보를 추가해주어야 한다.
여기서는 위에서 정책을 추가해준 IAM 계정에 대한 정보를 추가한다.
아래와 같이 추가할 수 있다. :
# 해당 명령은 master 계정으로 실행해야한다.
# 아래 명령어를 통해 aws-auth라는 이름의 configmap을 수정한다.
$ kubectl edit -n kube-system configmap/aws-auth
# 위 명령을 실행하면 아래와 같이 출력된다.
apiVersion: v1
data:
mapRoles: |
- groups:
- system:bootstrappers
- system:nodes
rolearn: arn:aws:iam::<AWS 계정 ID>:role/doc-test-nodes-NodeInstanceRole-WDO5P42N3ETB
username: system:node:{{EC2PrivateDNSName}}
mapUsers: |
[]
kind: ConfigMap
metadata:
creationTimestamp: "2020-06-22T05:22:04Z"
name: aws-auth
namespace: kube-system
resourceVersion: "780"
selfLink: /api/v1/namespaces/kube-system/configmaps/aws-auth
uid: dcc31de5-3838-11e8-af26-02e00430057c
# 내용을 아래처럼 수정한 후 저장한다.
apiVersion: v1
data:
mapRoles: |
- groups:
- system:bootstrappers
- system:nodes
rolearn: arn:aws:iam::<AWS 계정 ID>:role/doc-test-nodes-NodeInstanceRole-WDO5P42N3ETB
username: system:node:{{EC2PrivateDNSName}}
mapUsers: | # 여기서 유저 정보를 아래와 같이 추가한다.
- userarn: arn:aws:iam::<AWS 계정 ID>:user/<IAM 계정 이름>
username: <IAM 계정 이름>
groups:
- system:masters
kind: ConfigMap
metadata:
creationTimestamp: "2020-06-22T05:22:04Z"
name: aws-auth
namespace: kube-system
resourceVersion: "780"
selfLink: /api/v1/namespaces/kube-system/configmaps/aws-auth
uid: dcc31de5-3838-11e8-af26-02e00430057c
STEP 3 : AWS CLI 명령으로 kubeconfig 자동 설정
위에서 정책을 부여한 IAM 계정 정보로 aws configure 설정을 완료한 후, 아래 명령어를 통해 EKS 클러스터에 대한 kubeconfig 설정 작업을 진행한다.
$ aws eks --region <리전 코드> update-kubeconfig --name <클러스터명>
명령어가 정상적으로 실행되면, 콘솔 창에 아래와 비슷하게 텍스트가 출력된다.
Updated context arn:aws:eks:<리전 코드>:<계정 ID>:cluster/<클러스터명> in /home/ssm-user/.kube/config
그 다음, 아래 명령어를 실행하여 kubernetes API로 요청이 잘 전송되는지 확인한다.
$ kubectl get svc
참고 링크
반응형
'개발관련 > AWS' 카테고리의 다른 글
AWS SSM(Session Manager)을 이용하여 Pem key 필요 없이 AWS EC2에 접속하는 방법 (0) | 2020.08.20 |
---|---|
AWS에서 사용하고 있는 IP CIDR 확인하는 법 (0) | 2020.07.15 |
CloudWatch 이상 동작 탐지 기능 사용하기 (0) | 2020.01.22 |
AWS EKS 클러스터 구축하기 (0) | 2020.01.17 |
S3에서 pdf파일을 바로 다운로드 되도록 설정하는 방법 (0) | 2018.08.24 |