EKS 환경 - Ingress

반영환·2023년 9월 2일
0

eks

목록 보기
5/9
post-thumbnail

EKS 환경 Ingress

EKS 환경에서 Ingress를 구성해보자.

IAM

ALBC 부여 정책 생성

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

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

ALBC에 사용할 K8S ServiceAccount 생성

eksctl create iamserviceaccount \
--cluster $ACCOUNT-cluster \
--namespace kube-system \
--name aws-load-balancer-controller \
--attach-policy-arn arn:aws:iam::$AWSNUM:policy/$ACCOUNT-AWSLoadBalancerControllerIAMPolicy \
--approve

kubectl get sa -n kube-system aws-load-balancer-controller

여기서 위와 같이 ALBC 정책을 부여하니 Ingress 생성에 지장이 있었음.

유저 삭제

eksctl delete iamserviceaccount \
  --cluster $ACCOUNT-cluster \
  --region $AWSREGION \
  --name aws-load-balancer-controller  \
  --namespace kube-system

관리자 권한 부여

eksctl create iamserviceaccount \
--cluster $ACCOUNT-cluster \
--namespace kube-system \
--name aws-load-balancer-controller \
--attach-policy-arn arn:aws:iam::aws:policy/AdministratorAccess \
--approve

kubectl get sa -n kube-system aws-load-balancer-controller

인증서 구성을 위한 Cert-manager

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

ALBC (AWS Load Balancer Controller)

배포 yml파일 다운로드

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

yml 파일 편집 ( 클러스터 명 수정 )

spec: 
  containers:
  - args:
  - --cluster-name=<NAME>-cluster
  - --ingress-class=alb
  image: amazon/aws-alb-ingress-controller:v2.4.4

yml 파일 편집 ( ServiceAccount 생성 부분 삭제 )

아래 부분 삭제

---
apiVersion: v1 
kind: ServiceAccount 
metadata:
  labels:
  app.kubernetes.io/component: controller 
  app.kubernetes.io/name: aws-load-balancer-controller
  name: aws-load-balancer-controller 
  namespace: kube-system

yml 배포

kubectl apply -f v2_4_4_full.yaml

# running 확인
kubectl get deployment -n kube-system aws-load-balancer-controller

주의! Ingress Controller 는 NameSpace에 종속되지 않는 자원이다.
따라서 다른 네임스페이스의 Ingress를 붙여도 전혀 무관하며 우리는 Ingress의 IP로 접속하면 된다.

Ingress Resource 정의

apiVersion: networking.k8s.io/v1 
kind: Ingress
metadata:
  name: lb-ingress 
  annotations:
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip 
    kubernetes.io/ingress.class: alb
spec: 
  rules:
  - http: 
      paths:
      - path: / 
        pathType: Prefix 
        backend:
          service:
            name: sample-dp 
            port:
              number: 8080

yml 배포

kubectl apply -f ingress.yaml -n <name-space>

# running 확인
kubectl get ingress -n <name-space>
kubectl describe ingress -n <name-space>
profile
최고의 오늘을 꿈꾸는 개발자

0개의 댓글