Configure uma malha híbrida
Esta página explica como configurar uma rede híbrida para as seguintes plataformas:
- Híbrido: GKE on Google Cloud and Google Distributed Cloud (apenas software) para VMware
- Híbrido: GKE on Google Cloud and Google Distributed Cloud (apenas software) para bare metal
Seguindo estas instruções, configura dois clusters, mas pode expandir este processo para incorporar qualquer número de clusters na sua malha.
Pré-requisitos
- Todos os clusters têm de estar registados no mesmo projeto anfitrião da frota.
- Todos os clusters do GKE têm de estar numa configuração de VPC partilhada na mesma rede.
- O endereço do painel de controlo do Kubernetes do cluster e o endereço do gateway têm de estar acessíveis a partir de todos os clusters na malha. O Google Cloud projeto no qual os clusters do GKE estão localizados deve ter autorização para criar tipos de balanceamento de carga externos. Recomendamos que use redes autorizadas e regras da firewall da VPC para restringir o acesso.
- Os clusters privados, incluindo os clusters privados do GKE, não são suportados. Se usar clusters no local, incluindo o Google Distributed Cloud (apenas software) para VMware e o Google Distributed Cloud (apenas software) para bare metal, o endereço do plano de controlo do Kubernetes e o endereço do gateway têm de estar acessíveis a partir de pods em clusters do GKE. Recomendamos que use o CloudVPN para associar a sub-rede do cluster do GKE à rede do cluster no local.
- Se usar a AC do Istio, use o mesmo certificado de raiz personalizado para todos os clusters.
Antes de começar
Tem de ter acesso aos ficheiros kubeconfig de todos os clusters que está a configurar na malha. Para o cluster do GKE, para criar um novo ficheiro kubeconfig para o cluster, pode exportar KUBECONFIG
env com o caminho completo do ficheiro como valor no terminal e gerar a entrada kubeconfig.
Configure variáveis de ambiente e marcadores de posição
Precisa das seguintes variáveis de ambiente quando instala o gateway leste-oeste.
Crie uma variável de ambiente para o número do projeto. No comando seguinte, substitua FLEET_PROJECT_ID pelo ID do projeto do projeto anfitrião da frota.
export PROJECT_NUMBER=$(gcloud projects describe FLEET_PROJECT_ID --format="value(projectNumber)")
Crie uma variável de ambiente para o identificador da malha.
export MESH_ID="proj-${PROJECT_NUMBER}"
Crie variáveis de ambiente para os nomes das redes.
Os clusters do GKE usam o nome da rede do cluster por predefinição:
export NETWORK_1="PROJECT_ID-CLUSTER_NETWORK"
Outros clusters usam
default
:export NETWORK_2="default"
Tenha em atenção que, se instalou o Cloud Service Mesh noutros clusters com valores diferentes para
--network_id
, deve transmitir os mesmos valores para NETWORK_2.
Instale o gateway de este a oeste
Instale um gateway no CLUSTER_1 (o seu cluster do GKE) dedicado ao tráfego este-oeste para o CLUSTER_2 (o seu cluster no local):
asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh ${MESH_ID} \ --network ${NETWORK_1} \ --revision asm-1264-1 | \ ./istioctl --kubeconfig=PATH_TO_KUBECONFIG_1 install -y -f -
Tenha em atenção que este gateway é público na Internet por predefinição. Os sistemas de produção podem exigir restrições de acesso adicionais, por exemplo, regras de firewall, para evitar ataques externos.
Instale um gateway em CLUSTER_2 dedicado ao tráfego leste-oeste para CLUSTER_1.
asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh ${MESH_ID} \ --network ${NETWORK_2} \ --revision asm-1264-1 | \ ./istioctl --kubeconfig=PATH_TO_KUBECONFIG_2 install -y -f -
Exponha serviços
Uma vez que os clusters estão em redes separadas, tem de expor todos os serviços (\*.local
) no gateway leste-oeste em ambos os clusters. Embora este gateway seja público na Internet, só é possível aceder aos serviços que estão por detrás através de serviços com um certificado mTLS fidedigno e um ID da carga de trabalho, tal como se estivessem na mesma rede.
Exponha serviços através do gateway leste-oeste para cada cluster
kubectl --kubeconfig=PATH_TO_KUBECONFIG_1 apply -n istio-system -f \
asm/istio/expansion/expose-services.yaml
kubectl --kubeconfig=PATH_TO_KUBECONFIG_2 apply -n istio-system -f \
asm/istio/expansion/expose-services.yaml
Ative a deteção de pontos finais
Execute o comando asmcli create-mesh
para ativar a descoberta de pontos finais. Este exemplo mostra apenas dois clusters, mas pode executar o comando para ativar a deteção de pontos finais em clusters adicionais, sujeito ao limite do serviço GKE Hub.
./asmcli create-mesh \
FLEET_PROJECT_ID \
PATH_TO_KUBECONFIG_1 \
PATH_TO_KUBECONFIG_2
Valide a conetividade de vários clusters
Consulte o artigo Injetar proxies sidecar.