F5 BIG-IP 부하 분산기를 사용하여 VMware용 Google Distributed Cloud(소프트웨어 전용)에 대한 외부 IP 주소 구성

VMware용 Google Distributed Cloud(소프트웨어 전용)의 기본 Cloud Service Mesh 설치에서는 LoadBalancer 서비스에 외부 IP 주소가 자동으로 할당된다고 가정합니다. F5 BIG-IP 부하 분산기를 사용하는 VMware용 Google Distributed Cloud(소프트웨어 전용)의 경우에는 해당되지 않습니다. 이로 인해 서비스 메시 구성에 따라 하나 이상의 외부 IP 주소를 할당해야 합니다.

  • Cloud Service Mesh 인그레스 게이트웨이 리소스의 외부 IP 주소 1개(예: 고객이 인터넷을 통해 워크로드에 액세스하는 데 사용하는 게이트웨이)입니다.
  • 서비스 메시 내의 서로 다른 네트워크에 있는 경우 서로 통신할 수 있도록하는 클러스터의 다른 외부 IP 주소입니다. 이를 east-west 게이트웨이라고 합니다.

인그레스 게이트웨이 IP 주소 구성

인그레스 게이트웨이의 외부 IP 주소를 구성하려면 VMware용 Google Distributed Cloud(소프트웨어 전용) 부하 분산 모드에 따라 다음 섹션 중 하나의 안내를 따르세요.

    통합 모드

  1. 인그레스 게이트웨이의 외부 IP 주소를 사용하여 istio-ingressgateway 서비스 구성을 패치합니다.
    kubectl patch svc istio-ingressgateway -n istio-system --type='json' -p '[{"op": "add", "path": "/spec/loadBalancerIP", "value": "INGRESS_GATEWAY_IP"}]'
  2. 수동 모드

  3. 셸에서 istio-ingressgateway 서비스의 구성을 확인합니다.
    kubectl get svc -n istio-system istio-ingressgateway -o yaml
    Cloud Service Mesh 게이트웨이의 각 포트가 표시됩니다. 명령어 출력은 다음과 같이 표시됩니다.
      ...
      ports:
      - name: status-port
        nodePort: 30391
        port: 15020
        protocol: TCP
        targetPort: 15020
      - name: http2
        nodePort: 31380
        port: 80
        protocol: TCP
        targetPort: 80
      - name: https
        nodePort: 31390
        port: 443
        protocol: TCP
        targetPort: 443
      - name: tcp
        nodePort: 31400
        port: 31400
        protocol: TCP
        targetPort: 31400
      - name: https-kiali
        nodePort: 31073
        port: 15029
        protocol: TCP
        targetPort: 15029
      - name: https-prometheus
        nodePort: 30253
        port: 15030
        protocol: TCP
        targetPort: 15030
      - name: https-grafana
        nodePort: 30050
        port: 15031
        protocol: TCP
        targetPort: 15031
      - name: https-tracing
        nodePort: 31204
        port: 15032
        protocol: TCP
        targetPort: 15032
      - name: tls
        nodePort: 30158
        port: 15443
        protocol: TCP
        targetPort: 15443
      ...
  4. 부하 분산기를 통해 포트를 노출합니다.

    예를 들어 이름이 http2인 서비스 포트에는 port 80 및 nodePort 31380이 있습니다. 사용자 클러스터의 노드 주소가 192.168.0.10, 192.168.0.11, 192.168.0.12이고 부하 분산기의 VIP가 203.0.113.1이라고 가정합니다.

    203.0.113.1:80으로 전송된 트래픽이 192.168.0.10:31380, 192.168.0.11:31380 또는 192.168.0.12:31380으로 전달되도록 부하 분산기를 구성합니다. 이 주어진 VIP에 노출할 서비스 포트를 선택할 수 있습니다.

인그레스 게이트웨이에 외부 IP 주소가 할당되어 있는지 확인합니다. 예상 결과가 나올 때까지 이 명령어를 반복해야 하는 약간의 지연이 있을 수 있습니다.

kubectl --context="${CTX_CLUSTER1}" get svc istio-ingressgateway -n istio-system

예상되는 출력은 다음과 같습니다.

NAME                    TYPE           CLUSTER-IP    EXTERNAL-IP    PORT(S)   AGE
istio-ingressgateway   LoadBalancer   10.80.6.124   34.75.71.237   ...       51s

east-west 게이트웨이 IP 주소 구성

east-west 게이트웨이의 외부 IP 주소를 구성하려면 VMware 부하 분산 모드용 Google Distributed Cloud(소프트웨어 전용)에 따라 다음 섹션 중 하나의 안내를 따르세요.

    통합 모드

  1. east-west 게이트웨이의 외부 IP 주소로 istio-eastwestgateway 서비스 구성을 패치합니다.
    kubectl patch svc istio-eastwestgateway -n istio-system --type='json' -p '[{"op": "add", "path": "/spec/loadBalancerIP", "value": "EAST_WEST_GATEWAY_IP"}]'
  2. 수동 모드

  3. 셸에서 istio-eastwestgateway 서비스의 구성을 확인합니다.
    kubectl get svc -n istio-system istio-eastwestgateway -o yaml
    Cloud Service Mesh 게이트웨이의 각 포트가 표시됩니다. 명령어 출력은 다음과 같이 표시됩니다.
      ports:
      - name: status-port
        nodePort: 31781
        port: 15021
        protocol: TCP
        targetPort: 15021
      - name: tls
        nodePort: 30498
        port: 15443
        protocol: TCP
        targetPort: 15443
      - name: tls-istiod
        nodePort: 30879
        port: 15012
        protocol: TCP
        targetPort: 15012
      - name: tls-webhook
        nodePort: 30336
        port: 15017
        protocol: TCP
        targetPort: 15017
      ...
  4. 부하 분산기를 통해 포트를 노출합니다.

    예를 들어 이름이 http2인 서비스 포트에는 port 80 및 nodePort 31380이 있습니다. 사용자 클러스터의 노드 주소가 192.168.0.10, 192.168.0.11, 192.168.0.12이고 부하 분산기의 VIP가 203.0.113.1이라고 가정합니다.

    203.0.113.1:80으로 전송된 트래픽이 192.168.0.10:31380, 192.168.0.11:31380 또는 192.168.0.12:31380으로 전달되도록 부하 분산기를 구성합니다. 이 주어진 VIP에 노출할 서비스 포트를 선택할 수 있습니다.

east-west 게이트웨이에 외부 IP 주소가 할당되어 있는지 확인합니다. 예상 결과가 나올 때까지 이 명령어를 반복 실행해야 하는 약간의 지연이 있을 수 있습니다.

kubectl --context="${CTX_CLUSTER1}" get svc istio-eastwestgateway -n istio-system

예상되는 출력은 다음과 같습니다.

NAME                    TYPE           CLUSTER-IP    EXTERNAL-IP    PORT(S)   AGE
istio-eastwestgateway   LoadBalancer   10.80.6.124   34.75.71.237   ...       51s

다음 단계