k8s 환경은 node group 내부에서 생성된다.
ingress의 load balancer를 생성은 node group 외부의 cloud 자원이므로 해당 자원 생성 권한을 k8s service account가 가지고 있어야만 한다.
이 권한을 부여해주기 위해서는 EKS cluster의 OIDC provider에 aws resource를 생성할 수 있는 권한을 부여하고 이를 k8s service account와 연결해주는 작업이 필요하다.
1. EKS cluster OIDC provider 생성
- aws_iam_openid_connect_provider (in terraform)
2. OIDC provider에 권한 부여
- aws_iam_policy_attachment (in terraform)
3. k8s sa(aws-load-balancer-controller) 생성 및 권한 부여
- kubernetes_service_account (in terraform)
4. helm, 3번의 sa를 통해 aws lb를 control하는 pod를 배포
- helm install aws-load-balancer-controller eks/aws-load-balancer-controller -n kube-system --set clusterName=${} --set serviceAccount.create=false --set serviceAccount.name=${}
참고
https://devblog.croquis.com/ko/2022-03-31-3-build-eks-cluster-with-terraform/
https://aws.amazon.com/ko/blogs/containers/diving-into-iam-roles-for-service-accounts/
https://aws.amazon.com/ko/premiumsupport/knowledge-center/eks-pods-iam-role-service-accounts/
https://veluxer62.github.io/study/kubernetes-study-05/
https://tech.devsisters.com/posts/pod-iam-role/ '
https://aws.amazon.com/ko/premiumsupport/knowledge-center/load-balancer-troubleshoot-creating/
'IT > Kubernetes' 카테고리의 다른 글
imagePullPolicy:always (0) | 2022.05.28 |
---|---|
[K8S] Cluster Networking (0) | 2022.03.24 |
쿠버네티스는 어떻게 노드, 파드를 관리할까? (0) | 2021.10.01 |
왜 Pod가 필요할까? (Container와 Pod의 관계) (0) | 2021.09.25 |
쿠버네티스의 내부 구성 (0) | 2021.09.25 |
댓글