본문 바로가기

AWS EKS 실습/EKS 환경 구성

3. EKSCTL을 사용하여 EKS 환경 구성

1. eksctl 설치

 

$ curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp sudo mv -v /tmp/eksctl /usr/local/bin

 

$ eksctl version

0.38.0

 

ㅇ Enable eksctl bash-completion

$ eksctl completion bash >> ~/.bash_completion . /etc/profile.d/bash_completion.sh . ~/.bash_completion

 

2. EKS Cluster 생성

 

ㅇ eks yaml 생성

cat << EOF > eks-newelite.yaml
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: eks-newelite-eksctl
  region: ${AWS_REGION}
  version: "1.17"

availabilityZones: ["${AZS[0]}", "${AZS[1]}", "${AZS[2]}"]

managedNodeGroups:
- name: nodegroup
  desiredCapacity: 3
  instanceType: t3.small
  ssh:
    allow: true
    publicKeyName: eks-newelite

# To enable all of the control plane logs, uncomment below:
# cloudWatch:
#  clusterLogging:
#    enableTypes: ["*"]

secretsEncryption:
  keyARN: ${MASTER_ARN}
EOF

$ eksctl create cluster -f eks-newelite.yaml

 

ㅇ 생성된 클러스터 환경 점검

 

$ kubectl get nodes

ㅇ Export the Worker Role Name 
$ STACK_NAME=$(eksctl get nodegroup --cluster eks-newelite-eksctl -o json | jq -r '.[].StackName') ROLE_NAME=$(aws cloudformation describe-stack-resources --stack-name $STACK_NAME | jq -r '.StackResources[] | select(.ResourceType=="AWS::IAM::Role") | .PhysicalResourceId') echo "export ROLE_NAME=${ROLE_NAME}" | tee -a ~/.bash_profile

 

더보기

ㅁ 콘솔 자격 증명

 

EKS 콘솔에서 EKS Cluster에 대한 전체 엑세스 권한을 원하는 경우 사용

 

EKS 콘솔을 사용하면 클러스터의 구성 측면 뿐만 아니라 배포, 포드, 노드와 같은 Kuberentes 클러스터 객체도 볼 수 있다. 이러한 유형의 액세스를 위해서는 콘솔 IAM 사용자 또는 역할이 클러스터 내에서 권한을 부여 받아야 한다.

 

ㅇ EKS 콘솔 자격 증명을 새로 만든 클러스터로 가져옴.

 

IAM 사용자와 역할은 ConfigMap을 통해 EKS Kubernets 클러스터에 바인딩된다. aws-auth eksctl 하나의 명령으로 적용 가능

 

아래 명령어를 수행하여 IAM 열할과 ARN을 확인 한다.

$ c9builder=$(aws cloud9 describe-environment-memberships --environment-id=$C9_PID | jq -r '.memberships[].userArn')
if echo ${c9builder} | grep -q user; then
	rolearn=${c9builder}
        echo Role ARN: ${rolearn}
elif echo ${c9builder} | grep -q assumed-role; then
        assumedrolename=$(echo ${c9builder} | awk -F/ '{print $(NF-1)}')
        rolearn=$(aws iam get-role --role-name ${assumedrolename} --query Role.Arn --output text) 
        echo Role ARN: ${rolearn}
fi

ARN을 사용하면 명령을 실행하여 클러스터 내에서 자격 증명 매핑을 생성할 수 있다.

eksctl create iamidentitymapping --cluster eks-newelite-eksctl --arn ${rolearn} --group system:masters --username admin

권한은 제한되고 세분화 될 수 있지만 워크샵 클러스터이므로 콘솔 자격 증명을 관리자로 추가한다.

콘솔 내의 AWS 인증 맵에서 항목 확인 가능

 

$ kubectl describe configmap -n kube-system aws-auth