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(소프트웨어 전용) 부하 분산 모드에 따라 다음 섹션 중 하나의 안내를 따르세요.
- 인그레스 게이트웨이의 외부 IP 주소를 사용하여
istio-ingressgateway
서비스 구성을 패치합니다.kubectl patch svc istio-ingressgateway -n istio-system --type='json' -p '[{"op": "add", "path": "/spec/loadBalancerIP", "value": "INGRESS_GATEWAY_IP"}]'
-
셸에서
istio-ingressgateway
서비스의 구성을 확인합니다. Cloud Service Mesh 게이트웨이의 각 포트가 표시됩니다. 명령어 결과는 다음과 같이 표시됩니다.kubectl get svc -n istio-system istio-ingressgateway -o yaml
... 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 ...
-
부하 분산기를 통해 포트를 노출합니다.
예를 들어 이름이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(소프트웨어 전용)에 따라 다음 섹션 중 하나의 안내를 따르세요.
- 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"}]'
-
셸에서
istio-eastwestgateway
서비스의 구성을 확인합니다. Cloud Service Mesh 게이트웨이의 각 포트가 표시됩니다. 명령어 결과는 다음과 같이 표시됩니다.kubectl get svc -n istio-system istio-eastwestgateway -o yaml
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 ...
-
부하 분산기를 통해 포트를 노출합니다.
예를 들어 이름이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