Configurar uma malha de vários clusters fora do Google Cloud

Neste guia, explicamos como configurar uma malha de vários clusters para as seguintes plataformas:

  • GKE no VMware
  • Google Distributed Cloud Virtual para Bare Metal
  • GKE na AWS
  • Amazon EKS

Neste guia, mostramos como configurar dois clusters, mas é possível ampliar esse processo para incorporar vários clusters à malha.

Antes de começar

Neste guia, presume-se que o Anthos Service Mesh tenha sido instalado usando asmcli install. Você precisa do asmcli e do pacote de configuração que o asmcli faz o download para o diretório especificado em --output_dir quando você executou asmcli install. Se precisar de configuração, siga as etapas em Primeiros passos para:

Você precisa ter acesso aos arquivos kubeconfig de todos os clusters que está configurando na malha.

Configurar variáveis de ambiente e marcadores

Você precisa das seguintes variáveis de ambiente ao instalar o gateway leste-oeste.

  1. Crie uma variável de ambiente para o número do projeto. No comando a seguir, substitua FLEET_PROJECT_ID pelo ID do projeto host da frota.

    export PROJECT_NUMBER=$(gcloud projects describe FLEET_PROJECT_ID --format="value(projectNumber)")
    
  2. Crie uma variável de ambiente para o identificador da malha.

    export MESH_ID="proj-${PROJECT_NUMBER}"
    
  3. Crie variáveis de ambiente para os nomes dos clusters no formato exigido por asmcli:

    export CLUSTER_1="cn-FLEET_PROJECT_ID-global-CLUSTER_NAME_1"
    export CLUSTER_2="cn-FLEET_PROJECT_ID-global-CLUSTER_NAME_2"
    

Instalar o gateway leste-oeste

Nos comandos a seguir:

  • Substitua CLUSTER_NAME_1 e CLUSTER_NAME_2 pelos nomes dos clusters.

  • Substitua PATH_TO_KUBECONFIG_1 e PATH_TO_KUBECONFIG_2 pelos arquivos kubeconfig dos clusters.

CA da malha

  1. Instale um gateway no cluster1 que seja dedicado ao tráfego leste-oeste.$CLUSTER_2 Por padrão, esse gateway será público na Internet. Os sistemas de produção podem exigir outras restrições de acesso, como regras de firewall, para evitar ataques externos.

    asm/istio/expansion/gen-eastwest-gateway.sh \
        --mesh ${MESH_ID} \
        --cluster ${CLUSTER_1} \
        --network default \
        --revision asm-1118-4 | \
        istioctl --kubeconfig=PATH_TO_KUBECONFIG_1 install -y --set spec.values.global.pilotCertProvider=kubernetes -f -
    
  2. Instale um gateway em $CLUSTER_2 dedicado ao tráfego leste a oeste para $CLUSTER_1.

    asm/istio/expansion/gen-eastwest-gateway.sh \
        --mesh ${MESH_ID} \
        --cluster ${CLUSTER_2} \
        --network default \
        --revision asm-1118-4 | \
        istioctl install --kubeconfig=PATH_TO_KUBECONFIG_2 -y --set spec.values.global.pilotCertProvider=kubernetes -f -
    

CA do Istio

  1. Instale um gateway no cluster1 que seja dedicado ao tráfego leste-oeste.$CLUSTER_2 Por padrão, esse gateway será público na Internet. Os sistemas de produção podem exigir outras restrições de acesso, como regras de firewall, para evitar ataques externos.

    asm/istio/expansion/gen-eastwest-gateway.sh \
        --mesh ${MESH_ID} \
        --cluster ${CLUSTER_1} \
        --network default \
        --revision asm-1118-4 | \
        istioctl --kubeconfig=PATH_TO_KUBECONFIG_1 install -y -f -
    
  2. Instale um gateway em $CLUSTER_2 dedicado ao tráfego leste a oeste para $CLUSTER_1.

    asm/istio/expansion/gen-eastwest-gateway.sh \
        --mesh ${MESH_ID} \
        --cluster ${CLUSTER_2} \
        --network default \
        --revision asm-1118-4 | \
        istioctl --kubeconfig=PATH_TO_KUBECONFIG_2 install -y -f -
    

Como expor serviços

Como os clusters estão em redes separadas, é necessário expor todos os serviços (*.local) no gateway leste-oeste em ambos os clusters. Embora este gateway seja público na Internet, os serviços por trás dele só poderão ser acessados por serviços com um certificado mTLS confiável e um ID de carga de trabalho, como se estivessem na mesma rede.

  1. Exponha os serviços por meio do gateway leste-oeste para o CLUSTER_NAME_1.

    kubectl --kubeconfig=PATH_TO_KUBECONFIG_1 apply -n istio-system -f \
        asm/istio/expansion/expose-services.yaml
    
  2. Exponha os serviços por meio do gateway leste-oeste para o CLUSTER_NAME_2.

    kubectl --kubeconfig=PATH_TO_KUBECONFIG_2 apply -n istio-system -f \
        asm/istio/expansion/expose-services.yaml
    

Ativar descoberta de endpoints

Execute o comando asmcli create-mesh para ativar a descoberta de endpoints. Este exemplo mostra apenas dois clusters, mas é possível executar o comando para ativar a descoberta de endpoints em clusters adicionais, sujeito ao número máximo permitido de clusters que podem ser adicionados à sua frota.

  ./asmcli create-mesh \
      FLEET_PROJECT_ID \
      PATH_TO_KUBECONFIG_1 \
      PATH_TO_KUBECONFIG_2