1. EKS 엑세스 테스트
~/.aws/config
와 ~/.aws/credentials
파일에서 AWS CLI를 구성하여 맡은 역할에 대한 임시 자격 증명 검색을 자동화 할 수 있습니다. 예로 세 가지 프로파일을 정의 합니다.
아래 명령어를 수행하여 ~/.aws/config
에 추가합니다.
Copy if [ ! -d ~/.aws ]; then
mkdir ~/.aws
fi
cat << EoF >> ~/.aws/config
[profile admin]
role_arn=arn:aws:iam::${ACCOUNT_ID}:role/k8sAdmin
source_profile=eksAdmin
[profile dev]
role_arn=arn:aws:iam::${ACCOUNT_ID}:role/k8sDev
source_profile=eksDev
[profile integ]
role_arn=arn:aws:iam::${ACCOUNT_ID}:role/k8sInteg
source_profile=eksInteg
EoF
아래 명령어를 수행하여 ~/.aws/credentials
에 추가합니다.
Copy cat << EoF >> ~/.aws/credentials
[eksAdmin]
aws_access_key_id=$(jq -r .AccessKey.AccessKeyId /tmp/PaulAdmin.json)
aws_secret_access_key=$(jq -r .AccessKey.SecretAccessKey /tmp/PaulAdmin.json)
[eksDev]
aws_access_key_id=$(jq -r .AccessKey.AccessKeyId /tmp/JeanDev.json)
aws_secret_access_key=$(jq -r .AccessKey.SecretAccessKey /tmp/JeanDev.json)
[eksInteg]
aws_access_key_id=$(jq -r .AccessKey.AccessKeyId /tmp/PierreInteg.json)
aws_secret_access_key=$(jq -r .AccessKey.SecretAccessKey /tmp/PierreInteg.json)
EoF
dev 프로파일로 다음을 시험합니다.
Copy aws sts get-caller-identity --profile dev
–profile dev 매개 변수를 지정할 때 k8sDev 역할에 대한 임시 자격 증명을 자동으로 요청 합니다. integ 및 admin 으로도 테스트하여 임시자격증명을 확인합니다.
2. AWS 프로필 사용
~/.kube/config
파일에서 aws-iam-authenticator와 함께 사용할 AWS_PROFILE을 지정하여 적절한 프로필을 사용할 수도 있습니다.
테스트 할 새 kubeconfig 파일을 생성합니다.
Copy export KUBECONFIG=/tmp/kubeconfig-dev && eksctl utils write-kubeconfig eksworkshop-eksctl
cat $KUBECONFIG | yq e '.users.[].user.exec.args += ["--profile", "dev"]' - -- | sed 's/eksworkshop-eksctl./eksworkshop-eksctl-dev./g' | sponge $KUBECONFIG
kubectl 구성 파일에 --profile dev
매개 변수를 추가하여 kubectl에게 dev 프로필에 연결된 IAM 역할을 사용하도록 요청하고 접미사 -dev 를 사용하여 컨텍스트 이름을 바꿉니다.
RBAC 역할이 정의되어 있으므로 이 구성을 사용하면 development 네임스페이스와 상호 작용 할 수 있습니다.
파드를 만들어 보겠습니다:
Copy kubectl run --generator=run-pod/v1 nginx-dev --image=nginx -n development
파드를 나열할 수 있습니다.
Copy kubectl get pods -n development
하지만 다른 네임스페이스 에는:
Copy kubectl get pods -n integration
이번에는 integ 프로파일로 테스트해 봅니다.
Copy export KUBECONFIG=/tmp/kubeconfig-integ && eksctl utils write-kubeconfig eksworkshop-eksctl
cat $KUBECONFIG | yq e '.users.[].user.exec.args += ["--profile", "integ"]' - -- | sed 's/eksworkshop-eksctl./eksworkshop-eksctl-integ./g' | sponge $KUBECONFIG
파드를 만듭니다:
Copy kubectl run --generator=run-pod/v1 nginx-integ --image=nginx -n integration
파드를 나열할 수 있습니다:
Copy kubectl get pods -n integration
하지만 다른 네임스페이스 에는:
Copy kubectl get pods -n development
이번에는 admin 프로파일로 테스트해 봅니다.
Copy export KUBECONFIG=/tmp/kubeconfig-admin && eksctl utils write-kubeconfig eksworkshop-eksctl
cat $KUBECONFIG | yq e '.users.[].user.exec.args += ["--profile", "admin"]' - -- | sed 's/eksworkshop-eksctl./eksworkshop-eksctl-admin./g' | sponge $KUBECONFIG
기본 네임스페이스에 파드를 만듭니다:
Copy kubectl run --generator=run-pod/v1 nginx-admin --image=nginx
파드를 나열할 수 있습니다:
모든 네임 스페이스에 모든 파드를 나열 할 수 있습니다:
3. 다른 컨텍스트 간 전환(Optional)
동일한 kubeconfig 파일에서 여러 개의 쿠버네티스 API 액세스 키를 구성 하거나 kubectl로 여러 파일을 검색 할 수 있습니다:
Copy export KUBECONFIG=/tmp/kubeconfig-dev:/tmp/kubeconfig-integ:/tmp/kubeconfig-admin
Copy curl -sSLO https://raw.githubusercontent.com/ahmetb/kubectx/master/kubectx && chmod 755 kubectx && sudo mv kubectx /usr/local/bin
Kubectx를 사용하여 쿠버네티스 컨텍스트를 빠르게 나열하거나 전환 할 수 있습니다:
이번 모듈에서 IAM 그룹과 쿠버네티스 RBAC를 결합한 사용자에게 미세한 액세스를 제공하도록 EKS를 구성하는 방법을 보았습니다. 필요에 따라 다른 그룹을 만들고 클러스터에서 연결된 RBAC 액세스를 구성하고 클러스터에 대한 액세스 권한을 부여하거나 취소하기 만하면 그룹에서 사용자를 추가하거나 제거 할 수 있습니다.
사용자는 클러스터에서 관련 권한을 검색하기 위해 AWS CLI를 구성 해야 합니다.