📂
Amazon EKS
  • Amazon EKS
  • 워크스페이스 생성하기
    • Cloud9 IDE 환경 구성
    • IAM 역할 생성
    • SSH & CMK Key 생성하기
  • EKS 클러스터 구축
    • EKS 클러스터 만들기
  • 쿠버네티스 대시보드 배포
    • Kubernetes 공식 대시보드 배포
  • 마이크로서비스 배포
    • 예제 애플리케이션 배포
    • 서비스 스케일(Scaling)
    • 애플리케이션 정리하기
  • 애플리케이션 배포 - Helm
    • HELM 설치
    • Helm으로 Nginx 배포
    • Helm을 사용하여 마이크로서비스 배포
    • 정리하기
  • 리소스 관리 - POD 배치
    • NodeSelector
    • Affinity and Anti-affinity
    • 더 실용적인 사용 사례
    • 정리하기
  • 리소스 관리 - Health Checks
    • Liveness 프로브 구성
    • Readiness 프로브 구성
    • 정리하기
  • 리소스 관리 - AutoScaling
    • HPA 구성하기
    • CA 구성하기
    • 정리하기
  • 네트워킹 - 서비스 노출
    • 서비스와 애플리케이션 연결
    • 서비스에 접근하기
    • 서비스 노출
    • Ingress
    • Ingress Controller
    • 정리하기
  • 네트워크 - Calico 정책
    • Calico 설치하기
    • Stars Policy Demo
    • 정리하기
  • Updating 권한설정 - RBAC
    • 테스트 POD 설치
    • 사용자 생성 및 맵핑
    • 역할과 바인딩
    • 정리하기
  • Updating 권한설정 - IAM 그룹
    • IAM Role, Group & User 생성하기
    • RBAC 설정하기
    • EKS 엑세스 테스트
    • 정리하기
  • Updating 권한설정 - Service account
    • OIDC 자격 증명 공급자 생성하기
    • IAM 역할 생성 및 지정
    • 샘플 POD 배포
    • 정리하기
  • Updating - 네트워크 - POD Security Group
    • SG 생성하기
    • RDS 생성하기
    • CNI 구성하기
    • SG 정책
    • Pod 배포하기
    • 정리하기
  • Updating - 모니터링 - Prometheus and Grafana
    • Prometheus 배포하기
    • Grafana 배포하기
    • 정리하기(Optional)
  • Updating 모니터링 - X-Ray
    • X-Ray DaemonSet 배포하기
    • 샘플 마이크로서비스 배포
    • X-Ray console 확인
    • 정리하기(Optional)
  • Updating 모니터링 - Container Insights
    • 사전 준비
    • Container Insights 구성하기
    • 부하 테스트
    • Container Insights 확인하기
    • 정리하기(Optional)
  • Updating CD - Gitops with Flux
    • 사전 준비
    • Codepipeline
    • EKS에 배포
    • 정리하기
  • Updating Argo Rollouts
  • Updating Service Mesh - AWS App Mesh
    • Fargate 및 OBSERVABILITY 구성
    • Product Catalog App 배포
    • APP MESH 설치
    • Porting to APP MESH
    • Virtual Gateway 구성
    • Canary
    • Observability
  • Updating 버전 업그레이드 - EKS Cluster
    • Upgrade EKS control Plane
    • Upgrade EKS CORE ADD-ONs
    • Upgrade Managed Node Group
Powered by GitBook
On this page
  • 1. EKS 엑세스 테스트
  • 2. AWS 프로필 사용
  • 3. 다른 컨텍스트 간 전환(Optional)

Was this helpful?

  1. Updating 권한설정 - IAM 그룹

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 역할에 대한 임시 자격 증명을 자동으로 요청 합니다. integ 및 admin으로도 테스트하여 임시자격증명을 확인합니다.

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
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를 구성 해야 합니다.

PreviousRBAC 설정하기Next정리하기

Last updated 3 years ago

Was this helpful?

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

kubectx / kubens