Study_note
AWS EKS Load Balancer Controller 및 IAM OIDC Provider 본문
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/
쿠버네티스가 직접 관리하는 사용자 계정을 의미하는 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
'Kubernetes' 카테고리의 다른 글
[EKS] POD 자원관리 (QoS) 및 OOM 킬러 우선 순위 (0) | 2022.11.08 |
---|---|
Ingress의 Target Type 및 externalTrafficPolicy: Local 설정 (0) | 2022.11.01 |
[Kubernetes] CKA 취득 후기 (0) | 2022.09.05 |
[Kubernetes] object, namespace, pod, lable 개념 정리 (0) | 2021.11.23 |
[Kubernetes] 쿠버네티스 구성요소, 동작 흐름 (0) | 2021.11.23 |