O Service Mesh ASM oferece integração com um registro de serviço do Consul para facilitar a migração de microsserviços para o ASM. Este tópico descreve como integrar um registro de serviço do Consul ao ASM.
Pré-requisitos
A instância do ASM deve executar a versão v1.7.5.31-g28ec7490-aliyun ou posterior.
O Consul deve estar implantado como registro de serviço. Para mais informações, consulte Installing Consul on Kubernetes.
Os pods no cluster Kubernetes adicionado ao Service Mesh precisam acessar o endpoint do servidor Consul. Por exemplo, o servidor Consul pode estar instalado no mesmo cluster Kubernetes e expor um endpoint público ou fornecer um endpoint interno acessível.
Serviços de exemplo, incluindo Web, Web2 e o serviço integrado do Consul, devem estar registrados no Consul. Para mais informações, consulte Services.
Contexto
O ASM fornece um recurso para conexão a um registro de serviço do Consul. Isso facilita a migração de microsserviços para o ASM, pois permite que serviços dentro do Service Mesh chamem serviços fora do Service Mesh. O ASM não registra automaticamente os serviços internos do Service Mesh no registro de serviço do Consul. Para permitir que serviços externos ao Service Mesh chamem serviços internos da malha de serviço, registre manualmente os serviços do Service Mesh no registro de serviço do Consul.
Etapa 1: Obter a configuração do ASM-se-syncer
-
Obtenha o ID da instância do ASM.
Faça login no ASM console. No painel de navegação à esquerda, escolha .
Na página Mesh Management, localize o ID da instância desejada na coluna Name/ID.
-
Obtenha o ID da região do cluster.
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Cluster Information.
Na seção Basic Information, visualize a região do cluster. Por exemplo, se a região for China (Beijing), o ID da região será cn-beijing. Para mais informações sobre regiões, consulte Regiões suportadas.
Obtenha um AccessKey ID e um AccessKey secret. Para mais informações, consulte Criar um par de AccessKey.
Etapa 2: Instalar o ASM-se-syncer
Conecte-se ao seu cluster usando kubectl. Para mais informações, consulte Obter o arquivo kubeconfig de um cluster e usar kubectl para conectar-se ao cluster.
-
Instale o Helm na sua máquina local. Para mais informações, consulte a documentação do Helm.
NotaApós conectar-se ao cluster com kubectl, o cliente Helm usa automaticamente o arquivo KubeConfig para estabelecer a conexão com o cluster.
Baixe e descompacte o chart Helm asm-se-syncer na sua máquina local.
-
Acesse a pasta asm-se-syncer e localize o arquivo values.yaml. No arquivo values.yaml, adicione o ID do ASM, o ID da região do cluster, o AccessKey ID e o AccessKey secret. Em seguida, modifique as seguintes informações do serviço Consul e salve o arquivo values.yaml.
[ { "name": "consul-test", "prefix": "consul-", "type": "consul", "endpoint": "http://consul-server.consul:8500", "toNamespace": "default" } ]Parâmetro
Descrição
nameNome exclusivo para o registro de serviço.
prefixPrefixo para os nomes dos recursos de service entry gerados.
typeTipo do registro de serviço. O único valor suportado é
consul.endpointEndereço do endpoint do registro de serviço.
toNamespaceNamespace onde os recursos de service entry gerados são criados. Se o namespace não existir, ele será criado automaticamente.
Para conectar-se a vários registros de serviço do Consul, adicione a configuração de cada registro ao arquivo values.yaml. Depois, salve o arquivo values.yaml.
[ { "name": "consul-test01", "prefix": "consul01-", "type": "consul", "endpoint": "http://consul-server01.consul:8500", "toNamespace": "default" }, { "name": "consul-test02", "prefix": "consul02-", "type": "consul", "endpoint": "http://consul-server02.consul:8500", "toNamespace": "default" } ] -
Execute o seguinte comando para instalar o ASM-se-syncer.
helm install -f values.yaml se-syncer ./Após a instalação do ASM-se-syncer, o ASM conecta-se automaticamente ao registro de serviço do Consul, instala o componente asm-serviceregistry-syncer no cluster ACK e sincroniza os serviços do Consul com o Service Mesh.
Etapa 3: Verificar a integração com o Consul
-
Verifique o status de instalação do componente do ASM.
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
-
Na página Deployments, localize o componente chamado asm-serviceregistry-syncer.
Se o componente estiver no estado pronto 1/1, ele está executando corretamente.
-
Verifique o status de sincronização dos recursos de service entry.
Faça login no ASM console. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique no nome da instância do ASM. No painel de navegação à esquerda, escolha .
-
Na página External Service(ServiceEntry), verifique se os serviços registrados no Consul foram sincronizados com o Service Mesh.
NotaNa página External Service(ServiceEntry), os nomes dos serviços do Consul seguem o formato:
[prefix]-[service name in Consul]. O prefixo corresponde ao valor especificado para o parâmetroprefix.Na página External Service(ServiceEntry), o namespace dos serviços do Consul corresponde ao valor do parâmetro
toNamespaceespecificado.
Perguntas frequentes
Como chamo um serviço sincronizado?
Depois que o cluster do serviço chamador fizer parte do plano de dados da malha de serviço, chame o serviço sincronizado de uma das seguintes maneiras:
-
Método 1: Ative o proxy DNS e chame o serviço usando o hostname e a porta do campo
hostsdo service entry.Ative o proxy DNS. Para mais informações, consulte Usar o recurso de proxy DNS em uma instância do ASM.
-
Obtenha o hostname e a porta para chamar o serviço.
Faça login no ASM console. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique no nome da instância do ASM. No painel de navegação à esquerda, escolha .
-
Na página External Service(ServiceEntry), localize o service entry desejado e clique em View YAML na coluna Operator.
Na caixa de diálogo Edit, obtenha o hostname e a porta, e use http://<hostname>:<port> para chamar o serviço. No arquivo YAML do ServiceEntry, o item de configuração chave
hostsestá definido comopro-qf-test, e o número da porta (number) está definido como80.- apiVersion: istio.alibabacloud.com, controller: true kind: ASMServiceRegistry name: default uid: 5d301b4e-39bc-46b5-xxx resourceVersion: '432158678' selfLink: >- /apis/networking.istio.io/v1beta1/naxxx uid: e446b651-be82-4e13-99xxx spec: addresses: - 172.30.xxx endpoints: - address: 172.xxx ports: http: 80 hosts: - pro-qf-test ports: - name: http number: 80 protocol: HTTP resolution: STATIC
-
Método 2: Chame o serviço usando o endereço do campo
endpointsdo External Service(ServiceEntry).Faça login no ASM console. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique no nome da instância do ASM. No painel de navegação à esquerda, escolha .
-
Na página External Service(ServiceEntry), localize o service entry desejado e clique em View YAML na coluna Operator.
Na caixa de diálogo Edit, localize o endereço. Chame o serviço usando o formato http://<address>. No YAML, o item de configuração chave é o campo
addressemspec.endpoints.- apiVersion: istio.alibacloud.com controller: true kind: ASMServiceRegistry name: default uid: 5d301b4e-39bc-46b5-xxx resourceVersion: '432158678' selfLink: >- /apis/networking.istio.io/v1beta1/naxxx uid: e446b651-be82-4e13-99xxx spec: addresses: - 172.30.xxx endpoints: - address: 172.xxx ports: http: 80 hosts: - pro-qf-test ports: - name: http number: 80 protocol: HTTP resolution: STATIC
Como funciona a sincronização de serviços?
Os serviços registrados no Consul são sincronizados automaticamente com o Istio como recursos de service entry. Quando um serviço é excluído ou atualizado no Consul, a alteração é sincronizada automaticamente com o service entry correspondente no Istio.
Como desativar a integração com o Consul?
Execute o seguinte comando para excluir os recursos de sincronização do Consul.
helm uninstall se-syncer