IT Curation 자세히보기

CLOUD/AWS

aws | 테라폼을 이용한 EKS 환경구성 컨트롤러 배포까지

icf_ 2022. 12. 31. 15:39

제목을 어떻게 적해야될지 아직 고민중...

테라폼을 이용하여 EKS환경 구성 후 kubernetes ingress를 사용해보려고함.

 

개발서버 : centOS7

 

참고링크 : https://catalog.us-east-1.prod.workshops.aws/workshops/9c0aa9ab-90a9-44a6-abe1-8dff360ae428/ko-KR/60-ingress-controller/100-launch-alb

 

1. 테라폼을 이용한 EKS 배포

- 배포시 서브넷 태그 key:value 설정 중요

- key = kubernetes.io/role/elb

- value = 1

 

2. 기본 설정

※ 남는 pc에 kubernetes 제어용 서버 구축하여사용중.

2-1 클러스터 연결

aws eks update-kubeconfig --region=$AWS_REGION --name=$CLUSTER_NAME --alias={별칭}

 

2-2 ekctl 설치

2-3 활성된 클러스터 확인

kubectl config get-contexts

다른게 선택되있으면 변경

kubectl config use-context {클러스터 별칭}

 

2-4 default 클러스터 모니터링 터미널 실행

watch kubectl get node,ingress,svc,deploy,replicaset,pod -o wide

 

2-5 클러스터 접근 모니터링을 위한 역할 추가

export rolearn=arn:aws:iam::$ACCOUNT_ID:root

오류나면 수동 적용(실습 후 삭제)

eksctl create iamidentitymapping --cluster $CLUSTER_NAME --arn arn:aws:iam::$ACCOUNT_ID:root --group system:masters --username admin

환경 파일 에디터 실행하여 편집

kubectl edit configmap aws-auth -n kube-system

아래내용을 추가
-groups:
  - system:masters
    rolearn: arn:aws:iam::AWS본인계정ID:root
    username: admin

 

3. AWS Load Balancer 컨트롤러 만들기

IAM OIDC provider 생성(실습 후 삭제)

eksctl utils associate-iam-oidc-provider --region $AWS_REGION --cluster $CLUSTER_NAME --approve

생성되면 IAM에서 확인가능 확인

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

위명령어로 코드값 찾아냄.

https://oidc.eks.ap-northeast-2.amazonaws.com/id/코드값

iam 자격증명 provider추가(중요) 이게 추가 안되면 ingress배포 안됨.

aws iam list-open-id-connect-providers | grep 코드값



4. AWS Load Balancer Controller에 부여할 IAM Policy를 생성을 위한 정책 정보 다운

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

iam 생성

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

Service Account 생성(실습 후 삭제)

eksctl create iamserviceaccount --cluster $CLUSTER_NAME --namespace kube-system --name aws-load-balancer-controller --attach-policy-arn arn:aws:iam::$ACCOUNT_ID:policy/AWSLoadBalancerControllerIAMPolicy --override-existing-serviceaccounts --approve

5. 클러스터에 컨트롤러 추가(실습 후 삭제)

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

6. 컨트롤러 배포파일 다운로드

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

컨트롤러 배포

kubectl apply -f v2_4_4_full.yaml
728x90