Zero To One
EKS에 사용자 추가하기 본문
1. 추가할 사람의 로컬에서 IAM 사용자 세부 정보를 가져온다.
aws sts get-caller-identity
출력 예시
{
"UserId": "XXXXXXXXXXXXXXXXXXXXX",
"Account": "XXXXXXXXXXXX",
"Arn": "arn:aws:iam::XXXXXXXXXXXX:user/designated_user"
}
2. 루트사용자(EKS 클러스터를 만든 사람)의 로컬에서 실행한다.
aws eks --region region update-kubeconfig --name cluster_name
예시
aws eks --region ap-northeast-2 update-kubeconfig --name pj4-staging
실행결과
> aws eks --region ap-northeast-2 update-kubeconfig --name pj4-staging
Updated context arn:aws:eks:ap-northeast-2:xxxxxxxxxxxx:cluster/pj4-staging in /home/jaehyeok/.kube/config
3. kubectl을 입력하면 오른쪽에 클러스터 이름이 있는 것을 확인할 수 있다.
4. IAM 사용자가 AWS Management Console에서 노드와 워크로드를 볼 수 있도록 clusterrole 및 clusterrolebinding 또는 role 및 rolebinding을 생성한다.
curl -o eks-console-full-access.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/docs/eks-console-full-access.yaml
실행결과
> curl -o eks-console-full-access.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/docs/eks-console-full-access.yaml
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 780 100 780 0 0 905 0 --:--:-- --:--:-- --:--:-- 904
5. 매니페스트를 적용한다.
kubectl apply -f eks-console-full-access.yaml
실행결과
> kubectl apply -f eks-console-full-access.yaml
clusterrole.rbac.authorization.k8s.io/eks-console-dashboard-full-access-clusterrole created
clusterrolebinding.rbac.authorization.k8s.io/eks-console-dashboard-full-access-binding created
6. aws-auth ConfigMap을 편집한다.
kubectl edit -n kube-system configmap/aws-auth
실행결과
> kubectl edit -n kube-system configmap/aws-auth
Error from server (NotFound): configmaps "aws-auth" not found
6-1. 오류처리
aws-auth ConfigMap을 이미 적용했는지 확인한다.
kubectl describe configmap -n kube-system aws-auth
실행결과
> kubectl describe configmap -n kube-system aws-auth
Error from server (NotFound): configmaps "aws-auth" not found
6-2. 위와 같은 오류라면 AWS Authenticator 구성 맵을 다운로드, 편집 및 적용한다.
curl -o aws-auth-cm.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-10-29/aws-auth-cm.yaml
6-3. nano 편집기 혹은 vi 편집기로 파일을 연다.
nano aws-auth-cm.yaml
6-4. <ARN ~ > 부분을 수정한다.
apiVersion: v1
kind: ConfigMap
metadata:
name: aws-auth
namespace: kube-system
data:
mapRoles: |
- rolearn: <ARN of instance role (not instance profile)>
username: system:node:{{EC2PrivateDNSName}}
groups:
- system:bootstrappers
- system:nodes
이때 rolearn은 EKS를 생성할 때 만든 arn을 넣는다.
rolearn은 IAM -> 역할에서 찾을 수 있다.
6-5. 적용
kubectl apply -f aws-auth-cm.yaml
실행 결과
> kubectl apply -f aws-auth-cm.yaml
configmap/aws-auth created
7. 사용자를 추가한다
eksctl create iamidentitymapping \
--cluster eksworkshop-eksctl \
--arn arn:aws:iam::${ACCOUNT_ID}:role/k8sAdmin \
--username admin \
--group system:masters
eksctl create iamidentitymapping \
--cluster (클러스터이름) \
--arn (1.에서 가져온 사용자 정보중 arn을 붙여넣기) \
--username (유저이름) \
--group system:masters
8. 여러명 추가도 위와 같은 명령어를 통해 넣을 수 있다.
9. 다음 명령어로 잘 추가 되었는지 확인할 수 있다.
kubectl edit -n kube-system configmap/aws-auth
빠져나오기 : ECS -> :q!
10. 클러스터에 aws-authConfigMap 적용
aws-auth ConfigMap을 이미 적용했는지 확인한다.
kubectl describe configmap -n kube-system aws-auth
이때, 추가된 사용자들이 나온다.
또한, 다음과 같은 명령어로 쉽게 볼 수 있다.
eksctl get iamidentitymapping --cluster 클러스터이름
11. AWS Authenticator 구성 맵을 다운로드, 편집 및 적용한다.
curl -o aws-auth-cm.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-10-29/aws-auth-cm.yaml
다운 후
nano aws-auth-cm.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: aws-auth
namespace: kube-system
data:
mapRoles: |
- rolearn: (iam -> 역할 -> 만든 eks역할 arn 넣기)
username: system:node:{{EC2PrivateDNSName}}
groups:
- system:bootstrappers
- system:nodes
적용
kubectl apply -f aws-auth-cm.yaml
참조
https://aws.amazon.com/ko/premiumsupport/knowledge-center/amazon-eks-cluster-access/
https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/add-user-role.html#aws-auth-configmap
https://www.eksworkshop.com/beginner/091_iam-groups/configure-aws-auth/
'AWS' 카테고리의 다른 글
EC2 중지 후 시작시 자동으로 node서버 실행 하는법 (0) | 2022.12.08 |
---|---|
AWS 요금폭탄 문제해결 (리소스관리와 요금관리는 확실하게하자) (0) | 2022.06.29 |
EKS ArgoCD를 프라이빗 레파지토리와 연결 (0) | 2022.06.06 |
S3, EC2, RDS에 관하여 (0) | 2022.03.14 |
클라우드 컴퓨팅(Cloud Computing)이란? (0) | 2022.03.14 |