F5 BIG-IP 부하 분산기를 사용하여 Google Distributed Cloud의 외부 IP 주소 구성
Google Distributed Cloud의 기본 Cloud Service Mesh 설치에서는 LoadBalancer
서비스에 외부 IP 주소가 자동으로 할당된다고 가정합니다.
F5 BIG-IP 부하 분산기를 사용하는 Google Distributed Cloud의 경우에는 해당되지 않습니다.
이로 인해 서비스 메시 구성에 따라 하나 이상의 외부 IP 주소를 할당해야 합니다.
- Cloud Service Mesh 인그레스 게이트웨이 리소스의 외부 IP 주소 1개(예: 고객이 인터넷을 통해 워크로드에 액세스하는 데 사용하는 게이트웨이)입니다.
- 서비스 메시 내의 서로 다른 네트워크에 있는 경우 서로 통신할 수 있도록하는 클러스터의 다른 외부 IP 주소입니다. 이를 east-west 게이트웨이라고 합니다.
인그레스 게이트웨이 IP 주소 구성
인그레스 게이트웨이의 외부 IP 주소를 구성하려면 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 주소를 구성하려면 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