GCP로 실습하면 자동으로 Ingress Controller가 세팅되어 있으니, 별도로 Ingress Controller를 세팅하는 과정을 거치지 않아도 된다.

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
설치 방법 원문 : https://docs.aws.amazon.com/ko_kr/emr/latest/EMR-on-EKS-DevelopmentGuide/emr-eks.html
MacOS
brew tap weaveworks/tap
brew install weaveworks/tap/eksctl
choco install -y eksctl
brew install helm
choco install kubernetes-helm
curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.7.2/docs/install/iam_policy.json

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

eksctl utils associate-iam-oidc-provider --cluster <EKS 클러스터명> --approve

eksctl create iamserviceaccount \
--cluster=<EKS 클러스터명> \
--namespace=kube-system \
--name=aws-load-balancer-controller \
--role-name AmazonEKSLoadBalancerControllerRole \
--attach-policy-arn=arn:aws:iam::<내 AWS 계정 고유번호>:policy/AWSLoadBalancerControllerIAMPolicy \
--approve

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=<EKS 클러스터명> \
--set serviceAccount.create=false \
--set serviceAccount.name=aws-load-balancer-controller
AWS 콘솔에서 VPC 서비스에 접속

Virtual Private Cloud -> 서브넷 메뉴에 접속

존재하는 서브넷 ID들을 전부 확인.

터미널에서 아래 명령어를 각 서브넷마다 입력
aws ec2 create-tags --resources <서브넷 ID> --tags Key=kubernetes.io/role/elb,Value=1
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: sample-ingress
namespace: default
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: sample-svc-nodeport
port:
number: 80
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: sample-ingress
namespace: default
spec:
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: sample-svc-nodeport
port:
number: 80
kubectl get ingresses 명령어를 통해 Ingress 목록을 확인할 수 있다.
