본문 바로가기

AWS EKS 실습/EKS Beginner

Create An OIDC Identity Provider

Cluster에서 Service Accounts를 위한 IAM Role을 사용하기 위해서는 IAM Console에서 OIDC identity provider를 생성해야 한다.

 

먼저 eksctl version을 확인하여 0.5.1보다 버전이 낮다면 eksctl을 업그레이드 해야 한다.

eksctl version

docs.aws.amazon.com/eks/latest/userguide/eksctl.html#installing-eksctl 참고

 

The eksctl command line utility - Amazon EKS

The GitTag version should be at least 0.38.0. If not, check your terminal output for any installation or upgrade errors, or replace the address in step 1 with https://github.com/weaveworks/eksctl/releases/download/0.38.0/eksctl_Linux_amd64.tar.gz and compl

docs.aws.amazon.com

cluster에 OIDC Identity Provider를 생성한다.

eksctl utils associate-iam-oidc-provider --cluster eksworkshop-eksctl --approve

IAM Console에서 OIDC provider를 볼 수 있다. 

 

 

이 예제에서는 AmazonS3ReadOnlyAccess에 대한 get과 list 권한이 있어야 한다.

aws iam list-policies --query 'Policies[?PolicyName==`AmazonS3ReadOnlyAccess`].Arn'
[
    "arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess"
]

 

S3에 Read-Only로 Service Account에게 제공하기 위한 IAM Role은 다음과 같이 생성한다.

eksctl create iamserviceaccount \
    --name iam-test \
    --namespace default \
    --cluster eks-newelite-eksctl \
    --attach-policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess \
    --approve \
    --override-existing-serviceaccounts

iam-test가 정상적으로 만들어졌는지 확인한다.

 

kubectl get sa iam-test
kubectl describe sa iam-test

필요한 구성을 완료하여 두개의 kubernetes Job을 실행한다. Job은 새로 생성된 IAM Role로

 

- job-s3.yaml:  aws s3 ls (이 job은 성공해야 함)

- job-ec2.yaml: aws ec2 describe-instance --region ${AWS_REGION} (이 job은 실패해야 함)

Job에 대한 설명 (clarkshim.tistory.com/80

 

잡 리소스 및 스케줄링

작업을 완료한 후 종료되는 테스크만 실행하길 원하는 경우가 있다. 하지만 레플리케이션컨트롤러, 레플리카셋 및 데몬셋은 작업의 완료를 고려하지 않고 계속적으로 태스크를 실행한다. 따라

clarkshim.tistory.com

 

ㅁ List S3 buckets

 

만들어진 iam-test 서비스 어카운트가 S3 buckets을 리스트 할 수 있는지 테스트 해본다.

 

mkdir ~/environment/irsa

cat <<EoF> ~/environment/irsa/job-s3.yaml
apiVersion: batch/v1
kind: Job
metadata:
  name: eks-iam-test-s3
spec:
  template:
    metadata:
      labels:
        app: eks-iam-test-s3
    spec:
      serviceAccountName: iam-test
      containers:
      - name: eks-iam-test
        image: amazon/aws-cli:latest
        args: ["s3", "ls"]
      restartPolicy: Never
EoF

kubectl apply -f ~/environment/irsa/job-s3.yaml

job이 만들어지면 확인해보자

 

kubectl get job -l app=eks-iam-test-s3
kubectl logs -l app=eks-iam-test-s3

ㅁ List EC2 Instances

 

cat <<EoF> ~/environment/irsa/job-ec2.yaml
apiVersion: batch/v1
kind: Job
metadata:
  name: eks-iam-test-ec2
spec:
  template:
    metadata:
      labels:
        app: eks-iam-test-ec2
    spec:
      serviceAccountName: iam-test
      containers:
      - name: eks-iam-test
        image: amazon/aws-cli:latest
        args: ["ec2", "describe-instances", "--region", "${AWS_REGION}"]
      restartPolicy: Never
  backoffLimit: 0
EoF

kubectl apply -f ~/environment/irsa/job-ec2.yaml

 

kubectl get job -l app=eks-iam-test-ec2

 

kubectl logs -l app=eks-iam-test-ec2

 

ㅁ Cleanup

 

kubectl delete -f ~/environment/irsa/job-s3.yaml
kubectl delete -f ~/environment/irsa/job-ec2.yaml

eksctl delete iamserviceaccount \
    --name iam-test \
    --namespace default \
    --cluster eksworkshop-eksctl \
    --wait

rm -rf ~/environment/irsa/

'AWS EKS 실습 > EKS Beginner' 카테고리의 다른 글

EKS Network 정책 실습 (w/Calico)  (0) 2021.02.26
Security Groups For Pods  (0) 2021.02.26
Kubernetes access 관리를 위한 IAM Groups 사용  (1) 2021.02.25
Intro to RBAC  (0) 2021.02.24
Autoscaling with HPA and CA  (0) 2021.02.24