Configurar endereços IP externo para o Google Distributed Cloud
A instalação padrão do Cloud Service Mesh no Google Distributed Cloud pressupõe que
os endereços IP externo sejam alocados automaticamente para serviços LoadBalancer
.
Isso não é verdade no Google Distributed Cloud. Por isso, você precisa
alocar um ou mais endereços IP externos, dependendo da configuração da malha de
serviço:
- Um endereço IP externo para o recurso de gateway de entrada do Cloud Service Mesh, por exemplo, o gateway que seus clientes usam para acessar suas cargas de trabalho pela Internet.
- Outro endereço IP externo para que os clusters se comuniquem entre eles se existirem em redes diferentes na sua malha de serviço. Isso é conhecido como gateway leste-oeste.
Como configurar o endereço IP do gateway de entrada
Para configurar um endereço IP externo para o gateway de entrada, siga uma das seções abaixo, dependendo do modo de balanceamento de carga do Google Distributed Cloud:
- Corrija a configuração do serviço
istio-ingressgateway
com o endereço IP externo para o gateway de entrada:kubectl patch svc istio-ingressgateway -n istio-system --type='json' -p '[{"op": "add", "path": "/spec/loadBalancerIP", "value": "INGRESS_GATEWAY_IP"}]'
-
Veja a configuração do serviço
istio-ingressgateway
no shell: Cada uma das portas dos gateways do Cloud Service Mesh é exibida. A resposta ao comando é semelhante ao exemplo abaixo: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 ...
-
Exponha essas portas pelo balanceador de carga.
Por exemplo, a porta de serviço chamadahttp2
temport
80 enodePort
31380. Suponha que os endereços de nó do cluster de usuário sejam192.168.0.10
,192.168.0.11
e192.168.0.12
, e o VIP do balanceador de carga seja203.0.113.1
.
Configure o balanceador de carga para que o tráfego enviado para203.0.113.1:80
seja encaminhado para192.168.0.10:31380
,192.168.0.11:31380
ou192.168.0.12:31380
. É possível selecionar as portas de serviço que quer expor nesse VIP.
Modo integrado
Modo manual
Confirme se o gateway de entrada recebeu um endereço IP externo. Pode haver um pequeno atraso que exija a repetição desse comando até que você veja o resultado desejado:
kubectl --context="${CTX_CLUSTER1}" get svc istio-ingressgateway -n istio-system
A saída esperada é:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.80.6.124 34.75.71.237 ... 51s
Como configurar o endereço IP do gateway east-west
Para configurar um endereço IP externo para o gateway leste-oeste, siga uma das seções abaixo, dependendo do modo de balanceamento de carga do Google Distributed Cloud:
- Corrija a configuração do serviço
istio-eastwestgateway
com o endereço IP externo para o gateway leste-oeste:kubectl patch svc istio-eastwestgateway -n istio-system --type='json' -p '[{"op": "add", "path": "/spec/loadBalancerIP", "value": "EAST_WEST_GATEWAY_IP"}]'
-
Veja a configuração do serviço
istio-eastwestgateway
no shell: Cada uma das portas dos gateways do Cloud Service Mesh é exibida. A resposta ao comando é semelhante ao exemplo abaixo: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 ...
-
Exponha essas portas pelo balanceador de carga.
Por exemplo, a porta de serviço chamadahttp2
temport
80 enodePort
31380. Suponha que os endereços de nó do cluster de usuário sejam192.168.0.10
,192.168.0.11
e192.168.0.12
, e o VIP do balanceador de carga seja203.0.113.1
.
Configure o balanceador de carga para que o tráfego enviado para203.0.113.1:80
seja encaminhado para192.168.0.10:31380
,192.168.0.11:31380
ou192.168.0.12:31380
. É possível selecionar as portas de serviço que quer expor nesse VIP.
Modo integrado
Modo manual
Confirme se o gateway leste-oeste recebeu um endereço IP externo. Pode haver um pequeno atraso que exija a execução desse comando novamente até que você veja o resultado desejado:
kubectl --context="${CTX_CLUSTER1}" get svc istio-eastwestgateway -n istio-system
A saída esperada é:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-eastwestgateway LoadBalancer 10.80.6.124 34.75.71.237 ... 51s