EKS 엑세스 테스트

1. EKS 엑세스 테스트

~/.aws/config~/.aws/credentials 파일에서 AWS CLI를 구성하여 맡은 역할에 대한 임시 자격 증명 검색을 자동화 할 수 있습니다. 예로 세 가지 프로파일을 정의 합니다.

아래 명령어를 수행하여 ~/.aws/config에 추가합니다.

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에 추가합니다.

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 프로파일로 다음을 시험합니다.

aws sts get-caller-identity --profile dev

–profile dev 매개 변수를 지정할 때 k8sDev 역할에 대한 임시 자격 증명을 자동으로 요청 합니다. integadmin으로도 테스트하여 임시자격증명을 확인합니다.

2. AWS 프로필 사용

~/.kube/config 파일에서 aws-iam-authenticator와 함께 사용할 AWS_PROFILE을 지정하여 적절한 프로필을 사용할 수도 있습니다.

테스트 할 새 kubeconfig 파일을 생성합니다.

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 네임스페이스와 상호 작용 할 수 있습니다.

파드를 만들어 보겠습니다:

kubectl run --generator=run-pod/v1 nginx-dev --image=nginx -n development

파드를 나열할 수 있습니다.

kubectl get pods -n development

하지만 다른 네임스페이스 에는:

kubectl get pods -n integration

이번에는 integ 프로파일로 테스트해 봅니다.

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

파드를 만듭니다:

kubectl run --generator=run-pod/v1 nginx-integ --image=nginx -n integration

파드를 나열할 수 있습니다:

kubectl get pods -n integration

하지만 다른 네임스페이스 에는:

kubectl get pods -n development

이번에는 admin 프로파일로 테스트해 봅니다.

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

기본 네임스페이스에 파드를 만듭니다:

kubectl run --generator=run-pod/v1 nginx-admin --image=nginx

파드를 나열할 수 있습니다:

kubectl get pods

모든 네임 스페이스에 모든 파드를 나열 할 수 있습니다:

kubectl get pods -A

3. 다른 컨텍스트 간 전환(Optional)

동일한 kubeconfig 파일에서 여러 개의 쿠버네티스 API 액세스 키를 구성 하거나 kubectl로 여러 파일을 검색 할 수 있습니다:

export KUBECONFIG=/tmp/kubeconfig-dev:/tmp/kubeconfig-integ:/tmp/kubeconfig-admin

몇 가지 상황에서 kubeconfig 파일을 관리하는 데 도움이 되는 도구 kubectx / kubens가 있습니다:

curl -sSLO https://raw.githubusercontent.com/ahmetb/kubectx/master/kubectx && chmod 755 kubectx && sudo mv kubectx /usr/local/bin

Kubectx를 사용하여 쿠버네티스 컨텍스트를 빠르게 나열하거나 전환 할 수 있습니다:

kubectx

이번 모듈에서 IAM 그룹과 쿠버네티스 RBAC를 결합한 사용자에게 미세한 액세스를 제공하도록 EKS를 구성하는 방법을 보았습니다. 필요에 따라 다른 그룹을 만들고 클러스터에서 연결된 RBAC 액세스를 구성하고 클러스터에 대한 액세스 권한을 부여하거나 취소하기 만하면 그룹에서 사용자를 추가하거나 제거 할 수 있습니다.

사용자는 클러스터에서 관련 권한을 검색하기 위해 AWS CLI를 구성 해야 합니다.

Last updated