Configure endereços IP externos para o Google Distributed Cloud com balanceadores de carga F5 BIG-IP
A instalação predefinida do Cloud Service Mesh no Google Distributed Cloud pressupõe que os endereços IP externos são automaticamente atribuídos aos serviços LoadBalancer
.
Isto não se aplica ao Google Distributed Cloud com equilibradores de carga F5 BIG-IP.
Por este motivo, tem de atribuir um ou mais endereços IP externos,
consoante a configuração da malha de serviços:
- Um endereço IP externo para o recurso de gateway de entrada do Cloud Service Mesh, por exemplo, o gateway que os seus clientes usam para aceder às suas cargas de trabalho a partir da Internet.
- Outro endereço IP externo para os seus clusters comunicarem entre si, se existirem em redes diferentes na sua malha de serviços. Isto é denominado gateway leste-oeste.
Configurar o endereço IP do gateway de entrada
Para configurar um endereço IP externo para o gateway de entrada, siga as instruções numa das seguintes secções, consoante o seu modo de balanceamento de carga do Google Distributed Cloud:
- Aplique uma patch à configuração do serviço
istio-ingressgateway
com o endereço IP externo do 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
na shell: São apresentadas todas as portas para as gateways do Cloud Service Mesh. O resultado do comando é semelhante ao seguinte: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 estas portas através do equilibrador de carga.
Por exemplo, a porta de serviço denominadahttp2
temport
80 enodePort
31380. Suponhamos que os endereços dos nós do cluster de utilizadores são192.168.0.10
,192.168.0.11
e192.168.0.12
, e o VIP do balanceador de carga é203.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
. Pode selecionar as portas de serviço que quer expor neste VIP específico.
Modo integrado
Modo manual
Confirme se foi atribuído um endereço IP externo ao gateway de entrada. Pode haver um ligeiro atraso que exige que repita este comando até ver o resultado esperado:
kubectl --context="${CTX_CLUSTER1}" get svc istio-ingressgateway -n istio-system
O resultado esperado é:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.80.6.124 34.75.71.237 ... 51s
Configurar o endereço IP do gateway de este a oeste
Para configurar um endereço IP externo para o gateway leste-oeste, use as instruções numa das seguintes secções, consoante o seu modo de balanceamento de carga do Google Distributed Cloud:
- Aplique uma patch à configuração do serviço com o endereço IP externo do gateway leste-oeste:
istio-eastwestgateway
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
na shell: São apresentadas todas as portas para as gateways do Cloud Service Mesh. O resultado do comando é semelhante ao seguinte: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 estas portas através do equilibrador de carga.
Por exemplo, a porta de serviço denominadahttp2
temport
80 enodePort
31380. Suponhamos que os endereços dos nós do cluster de utilizadores são192.168.0.10
,192.168.0.11
e192.168.0.12
, e o VIP do balanceador de carga é203.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
. Pode selecionar as portas de serviço que quer expor neste VIP específico.
Modo integrado
Modo manual
Confirme se foi atribuído um endereço IP externo ao gateway leste-oeste. Pode haver um ligeiro atraso que exige que execute este comando repetidamente até ver o resultado esperado:
kubectl --context="${CTX_CLUSTER1}" get svc istio-eastwestgateway -n istio-system
O resultado esperado é:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-eastwestgateway LoadBalancer 10.80.6.124 34.75.71.237 ... 51s