본문 바로가기

[Kubernetes]

[k8s] ALB 적용하기 - 1. eksctl 사용

반응형

1. 사전작업

2. OIDC 연결

서로 다른 서비스간 사용자의 인증을 도와주는 기능. (예. 구글, 애플)

쿠버네티스 서비스 계정에 IAM 역할을 사용하려면 클러스터에 IAM OIDC 공급자가 필요하다

eksctl utils associate-iam-oidc-provider \
--cluster [클러스터명] \
--region [리전] \
--profile [프로파일명] \
--approve

3. AWS Load Balancer Controller 설치

3-1. AWS Load Balancer Controller에 필요한 IAM policy 다운

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

3-2. IAM policy 생성

aws iam create-policy \
--policy-name [정책명] \
--policy-document file://iam_policy.json \
--profile [프로파일명]

명령어를 수행한 후에 정책의 ARN을 복사해두자

3-3. IAM Role과 ServiceAccount 생성

쿠버네티스는 독자적으로 사용자를 관리하지 않고 제 3자(구글, AWS)에게 맡기고 있다.

대신 ServiceAccount라는 개념이 사용되는데, 특정 리소스를 조작하기 위해 필요한 인증, 인가를 위한 계정이다. 

eksctl create iamserviceaccount \
--cluster=[클러스터명] \
--region=[리전명] \
--namespace=kube-system \
--name=aws-load-balancer-controller \
--attach-policy-arn=[ARN] \
--override-existing-serviceaccounts \
--profile [profile] \
--approve

4. Helm으로 설치

4-1. Helm 레포지토리 추가

helm repo add eks https://aws.github.io/eks-charts
helm repo update

4-2. LB 설치

helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
-n kube-system \
--set clusterName=[클러스터명] \
--set serviceAccount.create=false \
--set serviceAccount.name=aws-load-balancer-controller \
--set image.repository=602401143452.dkr.ecr.ap-northeast-2.amazonaws.com/amazon/aws-load-balancer-controller \
--set region=ap-northeast-2 \
--set vpcId=[VPC]

위에서 사용되는 image의 경로는 리전마다 다르니 참고하면된다.

https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/add-ons-images.html

 

Amazon 컨테이너 이미지 레지스트리 - Amazon EKS

Amazon 컨테이너 이미지 레지스트리 AWS Load Balancer Controller 추가 기능 설치, Amazon VPC CNI plugin for Kubernetes, kube-proxy, 또는 스토리지 드라이버와 같은 추가 기능을 클러스터에 배포하는 경우 노드가 Ama

docs.aws.amazon.com

 

참조사이트

https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.4/deploy/installation/

728x90