22.5. AWS Load Balancer 컨트롤러 인스턴스 생성
AWS Load Balancer Operator를 설치한 후 AWS Load Balancer 컨트롤러를 생성할 수 있습니다.
22.5.1. AWS Load Balancer 컨트롤러 생성 링크 복사링크가 클립보드에 복사되었습니다!
클러스터에 AWSLoadBalancerController 오브젝트의 단일 인스턴스만 설치할 수 있습니다. CLI를 사용하여 AWS Load Balancer 컨트롤러를 생성할 수 있습니다. AWS Load Balancer Operator는 resource라는 클러스터 만 조정합니다.
사전 요구 사항
-
echoserver네임스페이스를 생성했습니다. -
OpenShift CLI(
oc)에 액세스할 수 있습니다.
프로세스
AWSLoadBalancerController오브젝트를 정의하는 YAML 파일을 생성합니다.sample-aws-lb.yaml파일 예apiVersion: networking.olm.openshift.io/v1 kind: AWSLoadBalancerController1 metadata: name: cluster2 spec: subnetTagging: Auto3 additionalResourceTags:4 - key: example.org/security-scope value: staging ingressClass: alb5 config: replicas: 26 enabledAddons:7 - AWSWAFv28 - 1
AWSLoadBalancerController개체를 정의합니다.- 2
- AWS Load Balancer 컨트롤러 이름을 정의합니다. 이 인스턴스 이름은 모든 관련 리소스에 접미사로 추가됩니다.
- 3
- AWS Load Balancer Controller의 서브넷 태그 지정 방법을 구성합니다. 다음 값이 유효합니다.
-
Auto: AWS Load Balancer Operator는 클러스터에 속하는 서브넷을 결정하고 적절하게 태그를 지정합니다. 내부 서브넷 태그가 내부 서브넷에 없으면 Operator에서 올바르게 역할을 결정할 수 없습니다. -
Manual: 적절한 역할 태그를 사용하여 클러스터에 속한 서브넷에 수동으로 태그를 지정합니다. 사용자 제공 인프라에 클러스터를 설치한 경우 이 옵션을 사용합니다.
-
- 4
- AWS 리소스를 프로비저닝할 때 AWS Load Balancer 컨트롤러에서 사용하는 태그를 정의합니다.
- 5
- Ingress 클래스 이름을 정의합니다. 기본값은
alb입니다. - 6
- AWS Load Balancer 컨트롤러의 복제본 수를 지정합니다.
- 7
- AWS Load Balancer Controller의 애드온으로 주석을 지정합니다.
- 8
alb.ingress.kubernetes.io/wafv2-acl-arn주석을 활성화합니다.
다음 명령을 실행하여
AWSLoadBalancerController오브젝트를 생성합니다.$ oc create -f sample-aws-lb.yamlDeployment리소스를 정의하는 YAML 파일을 생성합니다.sample-aws-lb.yaml파일 예apiVersion: apps/v1 kind: Deployment1 metadata: name: <echoserver>2 namespace: echoserver spec: selector: matchLabels: app: echoserver replicas: 33 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: 8080Service리소스를 정의하는 YAML 파일을 생성합니다.service-albo.yaml파일의 예:apiVersion: v1 kind: Service1 metadata: name: <echoserver>2 namespace: echoserver spec: ports: - port: 80 targetPort: 8080 protocol: TCP type: NodePort selector: app: echoserverIngress리소스를 정의하는 YAML 파일을 생성합니다.ingress-albo.yaml파일의 예:apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: <name>1 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>2 port: number: 80
검증
다음 명령을 실행하여
Ingress리소스의 상태를HOST변수에 저장합니다.$ HOST=$(oc get ingress -n echoserver echoserver --template='{{(index .status.loadBalancer.ingress 0).hostname}}')다음 명령을 실행하여
Ingress리소스의 상태를 확인합니다.$ curl $HOST