33.5. 외부 로드 밸런서 구성

기본 로드 밸런서 대신 외부 로드 밸런서를 사용하도록 RHOSP(Red Hat OpenStack Platform)에서 OpenShift Container Platform 클러스터를 구성할 수 있습니다.

여러 서브넷을 지원하는 외부 로드 밸런서를 사용하도록 OpenShift Container Platform 클러스터를 구성할 수도 있습니다. 여러 서브넷을 사용하는 경우 로드 밸런서 대상에서 사용하는 네트워크의 모든 IP 주소를 명시적으로 나열할 수 있습니다. 이 구성을 사용하면 로드 밸런서 대상을 재구성하지 않고 해당 네트워크 내에서 노드를 생성하고 삭제할 수 있으므로 유지 관리 오버헤드가 줄어들 수 있습니다.

/27 또는 /28 과 같은 소규모 네트워크에서 머신 세트를 사용하여 Ingress Pod를 배포하는 경우 로드 밸런서 대상을 단순화할 수 있습니다.

참고

설치 프로그램에 대한 API 및 Ingress 정적 주소를 지정할 필요가 없습니다. 이 구성을 선택하는 경우 참조되는 각 vSphere 서브넷에서 IP 주소를 허용하는 네트워크 대상을 정의하기 위해 추가 작업을 수행해야 합니다.

사전 요구 사항

  • 로드 밸런서에서 포트 6443, 443 및 80을 통한 TCP는 클러스터 외부에 있는 시스템의 모든 사용자가 액세스할 수 있어야 합니다.
  • 모든 컴퓨팅 노드 간에 애플리케이션 포트 443 및 80을 로드 밸런싱합니다.
  • 각 컨트롤 플레인 노드 간에 API 포트 6443을 로드 밸런싱합니다.
  • 로드 밸런서에서 노드에 ignition 시작 구성을 제공하는 데 사용되는 포트 22623은 클러스터 외부에 노출되지 않습니다.
  • 로드 밸런서는 클러스터의 각 노드에 필요한 포트에 액세스할 수 있습니다. 다음 작업을 완료하여 이 액세스 수준을 확인할 수 있습니다.

    • API 로드 밸런서는 컨트롤 플레인 노드의 포트 22623 및 6443에 액세스할 수 있습니다.
    • 인그레스 로드 밸런서는 Ingress pod가 있는 노드의 포트 443 및 80에 액세스할 수 있습니다.

절차

  1. 포트 6443, 443, 80의 로드 밸런서에서 클러스터에 대한 액세스를 활성화합니다.

    예를 들어 이 HAProxy 구성에 유의하십시오.

    샘플 HAProxy 구성 섹션

    ...
    listen my-cluster-api-6443
        bind 0.0.0.0:6443
        mode tcp
        balance roundrobin
        server my-cluster-master-2 192.0.2.2:6443 check
        server my-cluster-master-0 192.0.2.3:6443 check
        server my-cluster-master-1 192.0.2.1:6443 check
    listen my-cluster-apps-443
            bind 0.0.0.0:443
            mode tcp
            balance roundrobin
            server my-cluster-worker-0 192.0.2.6:443 check
            server my-cluster-worker-1 192.0.2.5:443 check
            server my-cluster-worker-2 192.0.2.4:443 check
    listen my-cluster-apps-80
            bind 0.0.0.0:80
            mode tcp
            balance roundrobin
            server my-cluster-worker-0 192.0.2.7:80 check
            server my-cluster-worker-1 192.0.2.9:80 check
            server my-cluster-worker-2 192.0.2.8:80 check

  2. 클러스터 API의 DNS 서버에 레코드를 추가하고 로드 밸런서를 통해 앱을 추가합니다. 예를 들면 다음과 같습니다.

    <load_balancer_ip_address> api.<cluster_name>.<base_domain>
    <load_balancer_ip_address> apps.<cluster_name>.<base_domain>
  3. 명령줄에서 curl 을 사용하여 외부 로드 밸런서 및 DNS 구성이 작동하는지 확인합니다.

    1. 클러스터 API에 액세스할 수 있는지 확인합니다.

      $ curl https://<loadbalancer_ip_address>:6443/version --insecure

      구성이 올바르면 응답으로 JSON 오브젝트가 표시됩니다.

      {
        "major": "1",
        "minor": "11+",
        "gitVersion": "v1.11.0+ad103ed",
        "gitCommit": "ad103ed",
        "gitTreeState": "clean",
        "buildDate": "2019-01-09T06:44:10Z",
        "goVersion": "go1.10.3",
        "compiler": "gc",
        "platform": "linux/amd64"
      }
    2. 클러스터 애플리케이션에 액세스할 수 있는지 확인합니다.

      참고

      웹 브라우저에서 OpenShift Container Platform 콘솔을 여는 방식으로 애플리케이션 액세스 가능성을 확인할 수도 있습니다.

      $ curl http://console-openshift-console.apps.<cluster_name>.<base_domain> -I -L --insecure

      구성이 올바르면 HTTP 응답이 표시됩니다.

      HTTP/1.1 302 Found
      content-length: 0
      location: https://console-openshift-console.apps.<cluster-name>.<base domain>/
      cache-control: no-cacheHTTP/1.1 200 OK
      referrer-policy: strict-origin-when-cross-origin
      set-cookie: csrf-token=39HoZgztDnzjJkq/JuLJMeoKNXlfiVv2YgZc09c3TBOBU4NI6kDXaJH1LdicNhN1UsQWzon4Dor9GWGfopaTEQ==; Path=/; Secure
      x-content-type-options: nosniff
      x-dns-prefetch-control: off
      x-frame-options: DENY
      x-xss-protection: 1; mode=block
      date: Tue, 17 Nov 2020 08:42:10 GMT
      content-type: text/html; charset=utf-8
      set-cookie: 1e2670d92730b515ce3a1bb65da45062=9b714eb87e93cf34853e87a92d6894be; path=/; HttpOnly; Secure; SameSite=None
      cache-control: private