NLB, ALB 생성과 삭제

628 단어·2 분·원문(.md)

EKS에 ALB, NLB를 생성해보겠다. 지난글에서 얘기한 ALB 컨트롤러 세팅이 완료된 가정하에 진행된다.

AWS NLB 생성과 삭제 #

AWS NLB를 쿠버네티스로 생성하려면 loadbalancer service의 어노테이션과 loadbalancerClass를 설정해야 한다.

annotation은 AWS NLB옵션을 설정합니다. 자세한 내용은 공식 사용 메뉴얼을 참조하길 바란다.

# kubectl apply nlb.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-nlb-test
spec:
  selector:
    matchLabels:
      app: nginx-nlb-test
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx-nlb-test
    spec:
      containers:
        - name: nginx
          image: nginx:latest
          ports:
            - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-nlb-test
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: ip
    service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
    service.beta.kubernetes.io/aws-load-balancer-healthcheck-port: "80"
spec:
  type: LoadBalancer
  loadBalancerClass: service.k8s.aws/nlb
  selector:
    app: nginx-nlb-test
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP

yaml을 배포하게 되면, aws console에서 네트워크 유형 ELB가 생성된다.

약 5분정도 기다리면 액티브 상태로 변한다.

Active상태가 된 후, Network LoadBalancer DNS주소를 웹 브라우저에 접속하면 nginx디폴트 페이지가 보인다.

kubectl delete -f nlb.yaml

위 명령어로 방금 생성한 AWS NLB를 삭제할 수 있다.


ALB 생성과 삭제 #

AWS ALB는 ingress spec으로 생성할 수 있다.

ingress annotation과 ingressClassName을 설정해야한다.

annotation은 AWS ALB 옵션으로 설정한다.

# kubectl apply -f alb.yaml

apiVersion: v1
kind: Pod
metadata:
  name: nginx-alb-test
  labels:
    app: nginx-alb-test
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-alb-test
spec:
  selector:
    app: nginx-alb-test
  ports:
  - name: http
    port: 80
    targetPort: 80
  type: ClusterIP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-alb-test
  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: nginx-alb-test
            port:
              number: 80

위의 매니페스트를 kubectl apply로 배포하게 되면

aws console에서 Application 유형의 ELB가 생성되고 이것도 5분 기다리면 액티브 상태로 변한다.

이것도 ALB DNS주소로 접속하면 nginx 디폴트 브라우저가 보이고 kubectl delete -f alb.yaml을 통해서 삭제할 수 있다.

DevOps/aws/eks/nlb_alb.md