18.3. AWS 로드 밸런서 컨트롤러 인스턴스 생성


Operator를 설치한 후 AWS 로드 밸런서 컨트롤러의 인스턴스를 생성할 수 있습니다.

18.3.1. AWS Load Balancer Operator를 사용하여 AWS Load Balancer 컨트롤러 인스턴스 생성

클러스터에 aws-load-balancer-controller 의 단일 인스턴스만 설치할 수 있습니다. CLI를 사용하여 AWS Load Balancer 컨트롤러를 생성할 수 있습니다. AWS Load Balancer(ALB) Operator는 이름이 cluster 인 리소스만 조정합니다.

사전 요구 사항

  • echoserver 네임스페이스를 생성했습니다.
  • OpenShift CLI(oc)에 액세스할 수 있습니다.

프로세스

  1. 다음과 같이 aws-load-balancer-controller 리소스 YAML 파일을 생성합니다(예: sample-aws-lb.yaml ).

    apiVersion: networking.olm.openshift.io/v1alpha1
    kind: AWSLoadBalancerController 1
    metadata:
      name: cluster 2
    spec:
      subnetTagging: Auto 3
      additionalResourceTags: 4
        example.org/cost-center: 5113232
        example.org/security-scope: staging
      ingressClass: cloud 5
      config:
        replicas: 2 6
      enabledAddons: 7
        - AWSWAFv2 8
    1
    aws-load-balancer-controller 리소스를 정의합니다.
    2
    AWS Load Balancer Controller 인스턴스 이름을 정의합니다. 이 인스턴스 이름은 모든 관련 리소스에 접미사로 추가됩니다.
    3
    유효한 옵션은 AutoManual 입니다. 값을 Auto 로 설정하면 Operator에서 클러스터에 속하는 서브넷을 확인하고 적절하게 태그를 지정하려고 합니다. 내부 서브넷 태그가 내부 서브넷에 없는 경우 Operator에서 역할을 올바르게 결정할 수 없습니다. 사용자 제공 인프라에 클러스터를 설치하는 경우 적절한 역할 태그로 서브넷에 수동으로 태그를 지정하고 서브넷 태그 지정 정책을 Manual 로 설정할 수 있습니다.
    4
    AWS 리소스를 프로비저닝할 때 컨트롤러가 사용하는 태그를 정의합니다.
    5
    이 필드의 기본값은 alb 입니다. Operator는 이름이 없는 경우 IngressClass 리소스를 동일한 이름으로 프로비저닝합니다.
    6
    컨트롤러의 복제본 수를 지정합니다.
    7
    주석을 통해 지정된 AWS 로드 밸런서의 애드온을 지정합니다.
    8
    alb.ingress.kubernetes.io/wafv2-acl-arn 주석을 활성화합니다.
  2. 다음 명령을 실행하여 aws-load-balancer-controller 리소스를 생성합니다.

    $ oc create -f sample-aws-lb.yaml
  3. AWS 로드 밸런서 컨트롤러가 실행된 후 배포 리소스를 생성합니다.

    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
              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
    1
    배포 리소스를 정의합니다.
    2
    배포 이름을 지정합니다.
    3
    배포 복제본 수를 지정합니다.
  4. 서비스 리소스를 생성합니다.

    apiVersion: v1
    kind: Service 1
    metadata:
      name: <echoserver> 2
      namespace: echoserver
    spec:
      ports:
        - port: 80
          targetPort: 8080
          protocol: TCP
      type: NodePort
      selector:
        app: echoserver
    1
    서비스 리소스를 정의합니다.
    2
    서비스 이름을 지정합니다.
  5. 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
    1
    Ingress 리소스를 정의합니다.
    2
    Ingress 리소스의 이름을 지정합니다.
    3
    서비스 리소스의 이름을 지정합니다.

검증

  • 다음 명령을 실행하여 프로비저닝된 AWS Load Balancer(ALB) 호스트를 표시하는 Ingress 리소스의 상태를 확인합니다.

    $ HOST=$(kubectl get ingress -n echoserver echoserver -o json | jq -r '.status.loadBalancer.ingress[0].hostname')
  • 다음 명령을 실행하여 프로비저닝된 AWS Load Balancer(ALB) 호스트의 상태를 확인합니다.

    $ curl $HOST
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.