23.5. AWS Load Balancer 컨트롤러 인스턴스 생성
Operator를 설치한 후 AWS Load Balancer 컨트롤러의 인스턴스를 생성할 수 있습니다.
23.5.1. AWS Load Balancer Operator를 사용하여 AWS Load Balancer 컨트롤러 인스턴스 생성
클러스터에 aws-load-balancer-controller 의 단일 인스턴스만 설치할 수 있습니다. CLI를 사용하여 AWS Load Balancer 컨트롤러를 생성할 수 있습니다. AWS Load Balancer(ALB) Operator는 클러스터 이름으로만 리소스를 조정합니다.
사전 요구 사항
-
echoserver네임스페이스를 생성했습니다. -
OpenShift CLI(
oc)에 액세스할 수 있습니다.
프로세스
다음과 같이
aws-load-balancer-controller리소스 YAML 파일(예:sample-aws-lb.yaml)을 생성합니다.apiVersion: networking.olm.openshift.io/v1 kind: AWSLoadBalancerController 1 metadata: name: cluster 2 spec: subnetTagging: Auto 3 additionalResourceTags: 4 - key: example.org/security-scope value: staging ingressClass: cloud 5 config: replicas: 2 6 enabledAddons: 7 - AWSWAFv2 8
- 1
aws-load-balancer-controller리소스를 정의합니다.- 2
- AWS Load Balancer 컨트롤러 인스턴스 이름을 정의합니다. 이 인스턴스 이름은 모든 관련 리소스에 접미사로 추가됩니다.
- 3
- 유효한 옵션은
Auto및Manual입니다. 값이Auto로 설정되면 Operator는 클러스터에 속하는 서브넷을 확인하고 적절하게 태그를 지정합니다. 내부 서브넷 태그가 내부 서브넷에 없으면 Operator에서 올바르게 역할을 결정할 수 없습니다. 사용자 제공 인프라에 클러스터를 설치한 경우 적절한 역할 태그를 사용하여 서브넷에 수동으로 태그를 지정하고 서브넷 태그 지정 정책을Manual로 설정할 수 있습니다. - 4
- 컨트롤러에서 AWS 리소스를 프로비저닝할 때 사용하는 태그를 정의합니다.
- 5
- 이 필드의 기본값은
lb입니다. Operator는 존재하지 않는 경우 동일한 이름으로IngressClass리소스를 프로비저닝합니다. - 6
- 컨트롤러의 복제본 수를 지정합니다.
- 7
- 주석을 통해 지정된 AWS 로드 밸런서에 대한 애드온을 지정합니다.
- 8
alb.ingress.kubernetes.io/wafv2-acl-arn주석을 활성화합니다.
다음 명령을 실행하여
aws-load-balancer-controller리소스를 생성합니다.$ oc create -f sample-aws-lb.yaml
AWS Load Balancer 컨트롤러가 실행된 후
배포리소스를 생성합니다.apiVersion: apps/v1 kind: Deployment 1 metadata: name: <echoserver> 2 namespace: echoserver spec: selector: matchLabels: app: echoserver replicas: 3 3 template: metadata: labels: app: echoserver spec: containers: - image: openshift/origin-node command: - "/bin/socat" args: - TCP4-LISTEN:8080,reuseaddr,fork - EXEC:'/bin/bash -c \"printf \\\"HTTP/1.0 200 OK\r\n\r\n\\\"; sed -e \\\"/^\r/q\\\"\"' imagePullPolicy: Always name: echoserver ports: - containerPort: 8080
서비스리소스를 생성합니다.apiVersion: v1 kind: Service 1 metadata: name: <echoserver> 2 namespace: echoserver spec: ports: - port: 80 targetPort: 8080 protocol: TCP type: NodePort selector: app: echoserver
ALB 지원
Ingress리소스를 배포합니다.apiVersion: networking.k8s.io/v1 kind: Ingress 1 metadata: name: <echoserver> 2 namespace: echoserver annotations: alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/target-type: instance spec: ingressClassName: alb rules: - http: paths: - path: / pathType: Exact backend: service: name: <echoserver> 3 port: number: 80
검증
다음 명령을 실행하여 프로비저닝된 AWS Load Balancer(ALB)의 호스트를 표시하는
Ingress리소스의 상태를 확인합니다.$ HOST=$(oc get ingress -n echoserver echoserver --template='{{(index .status.loadBalancer.ingress 0).hostname}}')다음 명령을 실행하여 프로비저닝된 AWS Load Balancer(ALB) 호스트의 상태를 확인합니다.
$ curl $HOST