Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

Study_note

AWS EKS Load Balancer Controller 및 IAM OIDC Provider 본문

Kubernetes

AWS EKS Load Balancer Controller 및 IAM OIDC Provider

Study_note 2022. 10. 27. 13:42

lb 컨트롤러를 생성하다 IAM OIDC Provider 생성하는걸 깜빡해서 삽질한김에 이참에 정리한다

 

우선  IAM OIDC Provider 란?

IAM의 엔터티로서 Google이나 Salesforce와 같은 OpenID Connect(OIDC) 표준을 지원하는 외부 자격 증명 공급자(IdP) 서비스를 설명합니다. 

 

OpenID Connect를 이용하여 외부 서비스를 통해 사용자 인증을 구현할 수 있는 기술 리소스다.

 

구체적인 내용은 다음 블로그 참조

https://coffeewhale.com/kubernetes/authentication/oidc/2020/05/04/auth03/

 

k8s 인증 완벽이해 #3 - OpenID Connect

쿠버네티스 인증 완벽 이해 시리즈 3탄, OpenID Connect를 이용한 쿠버네티스 인증에 대해서 살펴보는 시간을 가져 보겠습니다.

coffeewhale.com

 

쿠버네티스가 직접 관리하는 사용자 계정을 의미하는 service account에 IAM role을 사용하기 위해, 생성한 클러스터 IAM OIDC provider가 존재해야 합니다.

 

우선 기존에 oidc 공급자가 있는지 확인하기 위해  OIDC provider URL 출력하는 명령어 실행

aws eks describe-cluster --name eks-demo --query "cluster.identity.oidc.issuer" --output text

아래와 같이 출력 확인 가능 하다

https://oidc.eks.ap-northeast-2.amazonaws.com/id/C000FD8FD10DAAFC9317A3BA73B34334

 

출력한 값을 가지고 아래와 같이 IAM OIDC identity provider 확인 후 값이 출력되면 생성된것이고 

aws iam list-open-id-connect-providers | grep C000FD8FD10DAAFC9317A3BA73B34334

만약 확인 결과 oidc 공급자가 없다면 아래 같이 생성 하면 

eksctl utils associate-iam-oidc-provider \
    --region ${AWS_REGION} \
    --cluster eks-demo \ # 클러스터 이름
    --approve

아래와 같이 생성 값 확인 가능

oidc가 생성된것을 확인했다면 IAM 정책을 다운 받고 아래 명령어를 통해 iamserviceaccount를 위한 policy 생성한다.

curl -o iam_policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.4.4/docs/install/iam_policy.json

aws iam create-policy \
    --policy-name AWSLoadBalancerControllerIAMPolicy \
    --policy-document file://iam_policy.json

 

정책을 사용하는 iamserviceaccount 생성

eksctl create iamserviceaccount \
  --cluster eks-demo \
  --region ap-northeast-2 \ # 디폴트로 리전 지정안했기 때문에 명시해줘야한다
  --namespace kube-system \
  --name aws-load-balancer-controller \
  --role-name "AmazonEKSLoadBalancerControllerRole" \
  --attach-policy-arn=arn:aws:iam::181878816407:policy/AWSLoadBalancerControllerIAMPolicy \
  --approve

다음으로 cert-manager를 생성해준다.

 Cert-manager는 쿠버네티스 클러스터 내에서 TLS인증서를 자동으로 프로비저닝 및 관리하는 오픈 소스입니다.

Kubernetes 내부에서 HTTPS 통신을 위한 인증서를 생성하고, 또 인증서의 만료 기간이 되면 자동으로 인증서를 갱신해주는 역할

kubectl apply \
    --validate=false \
    -f https://github.com/jetstack/cert-manager/releases/download/v1.5.4/cert-manager.yaml

 

다음으로 Load balancer controller yaml 파일을 다운로드 하고 파일을 편집해준다.

curl -Lo v2_4_4_full.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.4.4/v2_4_4_full.yaml

# ServiceAccount을 그전에 생성해주었기 떄문에 ServiceAccount 섹션 제거 
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    app.kubernetes.io/component: controller
    app.kubernetes.io/name: aws-load-balancer-controller
  name: aws-load-balancer-controller
  namespace: kube-system
  
# 클러스터 명시
spec:
    containers:
    - args:
        - --cluster-name=eks-demo # 생성한 클러스터 이름을 입력
        
# 수정했다면 apply -f 해서 생성
kubectl apply -f v2_4_4_full.yaml

 

아래는 생성된 컨트롤러와 서비스어카운트다

 

해당 문서 참고

https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/enable-iam-roles-for-service-accounts.html

 

클러스터의 IAM OIDC 제공업체 생성 - Amazon EKS

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

 

Comments