https://www.youtube.com/playlist?list=PLApuRlvrZKogRzF98XVC6_5KS40MBKU7M
- 구성
- EKS VPC -> [ EKS Controle Plane (Master) ]
- Customer VPC -> [ EKS Data Plane (Worker) ]
- https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/network-load-balancing.html
- https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/alb-ingress.html
- VPC 예시)
- VPC = 192.168.0.0/16
- # 이범위 안에서 WorkerNode 및 POD 가 IP 를 할당받음.
- # VPC 내의 각각에 subnet 으로 분리하여 할당하는게 더안전함.
- ㄴ WorkerNode IP = [192.168.70.30 , 192.168.2.91 , 192.168.56.22]
- ㄴ CNI(Container Bridge 자동설치) (kubeproxy 등등) # recommended policies were found for "vpc-cni" addon
- ㄴ POD IP = [192.168.x.x , 192.168.x.x , 192.168.x.x , 192.168.x.x , 192.168.x.x , 192.168.x.x]
- VPC = 192.168.0.0/16
- EKS Storage
- 워커노드에 필요한 스토리지 드라이버 설치 or 내장 클래스 연결
- https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/ebs-csi.html
- https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/efs-csi.html
- Aws Auth ConfigMap
- AWS User/Group 인증정보를 -> K8S 으로 연결해줌
- 설치
- aws-cli, kubectl, eksctl, helm, ...
- https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/install-kubectl.html
-
$ eksctl create cluster \ --name 이름 \ --version 1.31 --region ap-northeast-2 \ --with-oidc \ --nodegroup-name 그룹명 \ --zones ap-northeast-2a,ap-northeast-2c \ --nodes 2 \ --node-type t3.small \ --node-volume-size=20 \ --managed # node-type : 최소 t3.small 이상 # vpc-nat-mode : kubernetes의 모든 outbound는 nat gateway를 통해 나가게 되는게 default option 은 single 이라 하나만 생성된다. 개발 환경에서는 상관없을거 같지만 운영에서는 각 subnet 마다 하나씩 만드는 HighAvailable 옵션을 사용한다. # node-private-networking : 해당 option 이 없으면 node group 이 public subnet 에 만들어진다. 보안을 위해 private subnet 에 만들어지도록 이 옵션을 사용한다.
- ...
- AWS LoadBalancer Controller (AWS Ingress Controller) 배포
- k8s 클러스터에 필요한 AWS ELB (NLB+ALB) 를 자동으로 관리해줌.
- NLB (Network Load Balancer) :
- k8s 서비스에 LoadBalancer Type 이 감지되면, NLB가 자동으로 생성됨. # 이건 Ingress Controller 설치 없이도 됨
- ALB (Application Load Balancer) :
- k8s 리소스에 Ingress 가 감지되면, ALB가 자동으로 생성됨.
- 즉, AWS 에 NLB 및 ALB 생성할 권한이 있는 Controller 를 POD 형태로 2개 띄워서~ 자동화게 되게함.
- https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/lbc-helm.html
-
# eksctl을 사용하여 IAM 역할 생성 curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.11.0/docs/install/iam_policy.json mv iam_policy.json aws_lb_controller_policy.json aws iam create-policy \ --policy-name AwsLbControllerPolicy \ --policy-document file://aws_lb_controller_policy.json eksctl create iamserviceaccount \ --cluster=클러스터명 \ --namespace=kube-system \ --name=aws-lb-controller-sa \ --role-name AwsEksLbControllerRole \ --attach-policy-arn=arn:aws:iam::입력:policy/AwsLbControllerPolicy \ --approve eksctl get iamserviceaccount --cluster 클러스터명 kubectl get sa -n kube-system kubectl describe -n kube-system sa aws-lb-controller-sa # AWS LoadBalancer Controller 설치 helm repo add eks https://aws.github.io/eks-charts helm repo update eks helm install aws-load-balancer-controller eks/aws-load-balancer-controller \ -n kube-system \ --set clusterName=클러스터명 \ --set serviceAccount.create=false \ --set serviceAccount.name=aws-lb-controller-sa kubectl get deployment -n kube-system aws-load-balancer-controller kubectl get pod -n kube-system
- ...
https://catalog.us-east-1.prod.workshops.aws/workshops/9c0aa9ab-90a9-44a6-abe1-8dff360ae428/ko-KR
- EKS 클러스터 생성하기
- 인그레스 컨트롤러 만들기
- ...
%[부록] labels, selector, matchLabels
- ...
-끝-