Quando os clusters do plano de dados operam fora da Alibaba Cloud — em outro provedor de nuvem ou em um data center on-premises — os proxies sidecar precisam acessar o plano de controle do Alibaba Cloud Service Mesh (ASM) pela Internet. À medida que o número de pods aumenta, as conexões de rede e o consumo de largura de banda escalam linearmente, e alterações frequentes na configuração ou nos serviços elevam a latência de push. O plano de controle remoto do ASM resolve esse problema ao implantar uma instância local do plano de controle dentro do cluster externo. Assim, os proxies sidecar recebem as configurações xDS localmente, sem depender de links de rede restritos.
Como funciona
Se o cluster do plano de dados estiver dentro de uma Virtual Private Cloud (VPC) da Alibaba Cloud, os proxies sidecar se conectam ao plano de controle gerenciado do ASM pela rede VPC. Nesse cenário, a latência é baixa, o push de configurações ocorre sem interrupções e o plano de controle remoto torna-se desnecessário.
Para clusters do plano de dados fora da Alibaba Cloud, o comportamento difere. Todos os pods se conectam ao plano de controle gerenciado via Internet, e tanto o número de conexões quanto o uso de largura de banda aumentam proporcionalmente à quantidade de pods. Alterações frequentes em configurações ou serviços resultam em maior latência de push.
O plano de controle remoto contorna essa limitação ao executar uma instância do plano de controle dentro do próprio cluster externo:
Ao ativar o plano de controle remoto:
O sistema envia as configurações xDS aos proxies sidecar localmente, dentro do próprio cluster.
Poucas conexões permanecem entre o plano de controle gerenciado do ASM e o cluster externo para transportar atualizações dos componentes do plano de controle e dados de descoberta de serviços.
A dependência de links de rede com baixa latência e alta largura de banda diminui significativamente.
Restrições
Antes de ativar o plano de controle remoto, verifique as seguintes restrições:
Crie recursos do ASM com o kubeconfig do ASM. Após ativar o plano de controle remoto, crie todos os recursos Kubernetes relacionados ao ASM usando o kubeconfig da instância do ASM. Se você utilizar o kubeconfig do cluster remoto, os recursos poderão ser sobrescritos.
A descoberta global de serviços está ativa. Cargas de trabalho gerenciadas pelo plano de controle gerenciado do ASM acessam serviços sob responsabilidade do plano de controle remoto. A comunicação utiliza mTLS por padrão e há suporte para gateways leste-oeste do ASM.
Desative primeiro o recurso de acesso à API Kubernetes do plano de dados. O plano de controle remoto entra em conflito com o recurso Use the Kubernetes API of clusters on the data plane to access Istio resources. Desative esse recurso antes de ativar o plano de controle remoto.
Pré-requisitos
Antes de começar, certifique-se de que você possui:
Uma instância do ASM executando a versão 1.22 ou posterior. Consulte Criar uma instância do ASM
-
Dois clusters do plano de dados adicionados à instância do ASM. Consulte Adicionar clusters a uma instância do ASM
cluster-1: Um cluster ACK da Alibaba Cloud onde os proxies sidecar se conectam diretamente ao plano de controle do ASM pela rede VPC
cluster-2: Um cluster registrado externo ou cluster remoto onde os proxies sidecar não conseguem se conectar diretamente ao plano de controle do ASM, ou cujo caminho de rede possui largura de banda limitada. Para obter detalhes sobre como adicionar clusters fora da Alibaba Cloud, consulte Gerenciar aplicativos de clusters registrados por meio do ASM ou Gerenciar clusters Kubernetes importados via kubeconfig
Defina variáveis de contexto do cluster
Para evitar erros ao alternar entre clusters, defina variáveis de ambiente para cada contexto do kubeconfig antes de iniciar:
export CTX_ASM=<kubeconfig-context-for-asm-instance>
export CTX_CLUSTER2=<kubeconfig-context-for-cluster-2>
Substitua os placeholders pelos valores reais:
|
Placeholder |
Descrição |
Exemplo |
|
|
Nome do contexto do kubeconfig da sua instância do ASM |
|
|
|
Nome do contexto do kubeconfig do cluster externo |
|
Todos os comandos subsequentes neste guia utilizam essas variáveis.
Ative o plano de controle remoto
-
Abra o recurso ASMMeshConfig para edição:
kubectl --context="${CTX_ASM}" edit ASMMeshConfig -
Adicione a seção
externalIstiodConfigurationsabaixo de.spec: Substitua<cluster-2-id>pelo ClusterID do cluster-2.apiVersion: istio.alibabacloud.com/v1beta1 kind: ASMMeshConfig metadata: name: default spec: # ... existing configuration ... externalIstiodConfigurations: <cluster-2-id>: replicas: 2 # Optional: specify resource requests and limits. # The structure matches standard Kubernetes pod resource fields. # If omitted, ASM uses default resource settings.NotaAtivar o plano de controle remoto reinicia o gateway do ASM no cluster de destino. Avalie o impacto no seu tráfego antes de prosseguir.
Implante aplicativos de teste e verifique
Implante os aplicativos
sleepehttpbinno cluster-2. Consulte Implantar o aplicativo httpbin.-
Confirme se ambos os pods estão em execução com injeção de sidecar. Saída esperada: O valor
2/2na coluna READY confirma a injeção de um proxy sidecar junto a cada contêiner de aplicativo.kubectl --context="${CTX_CLUSTER2}" get podNAME READY STATUS RESTARTS AGE httpbin-7df7fxxxxx-xxxxx 2/2 Running 0 3h15m sleep-6b7f9xxxxx-xxxxx 2/2 Running 0 3h15m -
Envie uma requisição de teste de
sleepparahttpbin. Saída esperada: O bule ASCII (HTTP 418) confirma que o tráfego flui pelo proxy sidecar e que o plano de controle remoto fornece as configurações corretamente.kubectl --context="${CTX_CLUSTER2}" exec deploy/sleep -it -- curl httpbin:8000/status/418-=[ teapot ]=- _...._ .' _ _ `. | ."` ^ `". _, \_;`"---"`|// | ;/ \_ _/ `"""`
Configure o acesso entre clusters
Por padrão, cargas de trabalho gerenciadas pelo plano de controle gerenciado do ASM acessam serviços do plano de controle remoto. O inverso não se aplica: serviços atrás do plano de controle remoto não alcançam serviços protegidos pelo plano de controle gerenciado.
Escolha a opção adequada aos seus requisitos:
Acesso entre clusters desnecessário. Mantenha o tráfego local em cada cluster usando o recurso de retenção de tráfego intracluster. Consulte Ativar o recurso de retenção de tráfego intracluster local do ASM em cenários multicluster.
Acesso bidirecional entre clusters necessário. Habilite o acesso mútuo entre cargas de trabalho dos planos de controle remoto e gerenciado. Consulte Estabelecer acesso mútuo entre cargas de trabalho do plano de controle remoto e do plano de controle gerenciado.