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: AWSLoadBalancerController 1 metadata: name: cluster 2 spec: subnetTagging: Auto 3 additionalResourceTags: 4 - key: example.org/security-scope value: staging ingressClass: alb 5 config: replicas: 2 6 enabledAddons: 7 - AWSWAFv2 8
- 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.yaml
Deployment
리소스를 정의하는 YAML 파일을 생성합니다.sample-aws-lb.yaml
파일 예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
Service
리소스를 정의하는 YAML 파일을 생성합니다.service-albo.yaml
파일의 예:apiVersion: v1 kind: Service 1 metadata: name: <echoserver> 2 namespace: echoserver spec: ports: - port: 80 targetPort: 8080 protocol: TCP type: NodePort selector: app: echoserver
Ingress
리소스를 정의하는 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