Gerenciar recursos de aplicação (Deployments, Services) e recursos de gerenciamento de tráfego do Istio (VirtualServices, Gateways, DestinationRules) em vários clusters dificulta o rastreamento de alterações e a manutenção da consistência. A integração do Argo CD com o Service Mesh (ASM) resolve esse problema ao unificar todos os recursos em um único fluxo de trabalho GitOps — com controle de versão, auditoria e sincronização automática do git para o cluster.
Como funciona
O GitOps trata o git como a única source da verdade para definições declarativas de infraestrutura e aplicações. Com o Argo CD integrado ao ASM:
Defina os recursos da aplicação (Deployments, Services) e os recursos de gerenciamento de tráfego (VirtualServices, Gateways, DestinationRules) como manifestos YAML e faça commit deles em um repositório git.
O Argo CD detecta alterações no repositório e as compara com o estado atual do cluster.
O Argo CD sincroniza as alterações no cluster, automaticamente ou mediante aprovação manual.
O ASM executa um plano de controle gerenciado compatível com Istio, separado do plano de dados onde reside seu cluster Container Service for Kubernetes (ACK). Diferentemente do Istio autogerenciado, o plano de controle e o cluster ACK não estão no mesmo cluster Kubernetes. A Etapa 2 deste guia preenche essa lacuna para que o Argo CD possa gerencie recursos do Istio por meio da api Kubernetes do plano de dados.

Principais tipos de recursos do Istio
Este guia utiliza os seguintes tipos de recursos do Istio. Compreendê-los facilita o trabalho com o fluxo GitOps:
|
Recurso |
Finalidade |
|
VirtualService |
Define regras de roteamento de tráfego (por exemplo, roteamento por cabeçalho, peso ou correspondência de URI) |
|
DestinationRule |
Define subconjuntos de um serviço com base em rótulos de pod (por exemplo, |
|
Gateway |
Configure um balanceador de carga para tráfego HTTP/HTTPS de entrada no mesh |
Um VirtualService referencia subconjuntos definidos em uma DestinationRule. Por exemplo, se um VirtualService rotear tráfego para subset: v2, a DestinationRule mapeia v2 para pods com o rótulo version: v2.
Pré-requisitos
Antes de começar, verifique se você tem:
Uma instância do ASM versão 1.12.4.50 ou posterior. Para mais informações, consulte Crie uma instância do ASM
Um cluster adicionado à instância do ASM. Para mais informações, consulte Adicionar um cluster a uma instância do ASM
Um repositório git para armazenar manifestos de recursos do Kubernetes e do Istio
Dica: As melhores práticas do Argo CD recomendam usar um repositório git separado para manifestos do Kubernetes, em vez de armazená-los junto com o código-fonte da aplicação. Isso proporciona logs de auditoria mais limpos, separação de acessos e evita loops no pipeline de CI. Para detalhes, consulte Melhores Práticas do Argo CD .
Etapa 1: Instale o Argo CD
Instale o Argo CD no cluster ACK usando um dos seguintes métodos:
Instalação manual: Siga o guia Primeiros Passos com Argo CD para instale o Argo CD com kubectl.
ACK Application Center (integrado): O ACK oferece um recurso nativo do Argo CD por meio do Application Center. Esta opção dispensa instalação manual e suporta implantações baseadas em repositórios git e Helm charts com reversão de versão. Para mais informações, consulte Visão geral do Application Center.
Etapa 2: Ative acesso à api Kubernetes do plano de dados para recursos do Istio
Em uma instalação de Istio autogerenciada, o plano de controle e as cargas de trabalho compartilham o mesmo cluster Kubernetes. Isso permite que ferramentas como o Argo CD acessem todas as Definições de Recursos Personalizados (CRDs) do Istio diretamente. O ASM opera de forma diferente: o plano de controle gerenciado é executado em um cluster separado do cluster de plano de dados ACK. Por padrão, os CRDs do Istio (VirtualService, Gateway, DestinationRule) não estão disponíveis pela api Kubernetes do plano de dados. Ative o acesso KubeAPI do plano de dados registra esses CRDs no cluster ACK, permitindo que o Argo CD gerencie recursos do Istio da mesma forma que gerencia recursos padrão do Kubernetes.
Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.
Na página Mesh Management, localize a instância do ASM que deseja configure. Clique em no nome da instância do ASM ou em Manage na coluna Actions.
-
Na página Base Information, clique em Enable ao lado de Enable Data-plane KubeAPI access.

Na mensagem de confirmação, clique em OK.
Etapa 3: Implantar um gateway de entrada
Crie um gateway de entrada para lidar com o tráfego de entrada das aplicações gerenciadas pelo Argo CD.
Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.
Na página Mesh Management, clique em no nome da instância do ASM. No painel de navegação à esquerda, escolha ASM Gateways > Ingress Gateway.
-
Na página Ingress Gateway, clique em Create e configure os seguintes parâmetros. Para detalhes sobre todos os parâmetros disponíveis, consulte Crie um gateway de entrada.
Parâmetro
Valor para este exemplo
Name
ingressgatewayGateway types
North-South IngressGateway
Port Mapping
Clique em Add Port e adicione as seguintes entradas: - Protocol: HTTP, Service Port: 80- Protocol: HTTPS, Service Port: 443
Clique em Create para implantar o gateway de entrada.
Etapa 4: Implantar a aplicação de exemplo Bookinfo com o Argo CD
Use o Argo CD para implantar a aplicação de exemplo Bookinfo do Istio a partir de um repositório git. Esta etapa cria os Deployments, Services e recursos de gerenciamento de tráfego do Istio no cluster.
Crie a aplicação no Argo CD
-
Na interface do Argo CD, clique em NEW APP e configure as seguintes seções:
GENERAL
Defina Application Name como
bookinfo.Defina Project como default.
Selecione PRUNE RESOURCES para permitir que o Argo CD exclua recursos do cluster quando eles forem removidos do git. Isso mantém o estado do cluster sincronizado com o repositório.

SOURCE
Defina Repository URL como
https://github.com/AliyunContainerService/asm-labs.git.Defina Revision como argocd-asm.
Defina Path como
argo-cd/bookinfo.

DESTINATION
Defina Cluster URL como
https://kubernetes.default.svc.Defina Namespace como default.

Clique em CREATE.
Para uma referência completa das opções de política de sincronização (sincronização automatizada, autocorreção, ondas de sincronização), consulte Opções de Sincronização do Argo CD .
Verifique a implantação
Após crie a aplicação, verifique se os recursos foram implantados corretamente em três locais:
Verifique status no Argo CD
O cartão da aplicação bookinfo na interface do Argo CD exibe o status de sincronização e a integridade de todos os recursos gerenciados.

Clique em bookinfo para visualize o status de cada recurso.

Verifique VirtualServices no console do ASM
Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.
Na página Mesh Management, clique em no nome da instância do ASM. No painel de navegação à esquerda, escolha Traffic Management Center > VirtualService.
Na página VirtualService, confirme a existência do VirtualService do Bookinfo.
Verifique Deployments no console do ACK
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em no nome do cluster. No painel de navegação à esquerda, escolha Workloads > Deployments.
-
Confirme que os Deployments do Bookinfo estão em execução.

Acessar a aplicação pelo gateway de entrada
-
Obtenha o endereço ip do gateway de entrada:
Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.
Na página Mesh Management, clique em no nome da instância do ASM. No painel de navegação à esquerda, escolha ASM Gateways > Ingress Gateway.
Na página Ingress Gateway, anote o Service address do gateway de entrada.
-
Abra
http://<ingress-gateway-ip>/productpageem um navegador. A página de produtos do Bookinfo será carregada. A seção de avaliações no lado direito da página exibe dados diferentes a cada atualização, pois o Deployment de reviews possui três versões (v1, v2, v3) e nenhuma regra de roteamento está configurada ainda.
Etapa 5: Implementar roteamento de tráfego orientado por GitOps
Com a aplicação Bookinfo implantada, envie uma alteração de roteamento de tráfego pelo fluxo de trabalho GitOps. Este exemplo configura uma regra de VirtualService que roteia o tráfego com base no usuário conectado:
Não conectado: A versão v1 de reviews é exibida (sem estrelas).
**Conectado como
jason**: A versão v2 de reviews é exibida (estrelas pretas).
Atualize os manifestos localmente
-
Modifique o YAML do VirtualService para o serviço
reviewspara adicionar roteamento baseado em cabeçalho:Este VirtualService referencia
subset: v1esubset: v2, definidos na DestinationRule para o serviço reviews. A DestinationRule mapeia cada nome de subconjunto para pods com o rótuloversioncorrespondente. A DestinationRule já está incluída no diretórioargo-cd/bookinfodo repositório de exemplo.apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: reviews spec: hosts: - reviews http: - match: - headers: end-user: exact: jason route: - destination: host: reviews subset: v2 - route: - destination: host: reviews subset: v1 --- -
Modifique o YAML do Deployment para reviews-v1 para dimensioná-lo para 2 réplicas:
apiVersion: apps/v1 kind: Deployment metadata: namespace: argocd name: reviews-v1 labels: app: reviews version: v1 spec: replicas: 2
Enviar alterações para o git
Faça commit e push dos manifestos atualizados:
git add *
git commit -m "reviews-v1"
git push
Sincronizar as alterações no cluster
Se a sincronização automática estiver ativada no Argo CD, as alterações serão aplicadas ao cluster logo após o push.
Caso a sincronização automática não esteja ativada, sincronize manualmente:
-
Na interface do Argo CD, localize o cartão bookinfo. O Status mostra OutOfSync, indicando divergência entre o repositório git e o estado do cluster.

Clique em SYNC no cartão bookinfo.
Na caixa de diálogo, clique em SYNCHRONIZE.
Após a conclusão da sincronização, verifique os recursos atualizados no console do ASM e no console do ACK seguindo os mesmos passos descritos em Verifique a implantação.
Verifique o roteamento de tráfego
-
Abra
http://<ingress-gateway-ip>/productpageem um navegador sem fazer login. A versão v1 de reviews será exibida (sem estrelas no lado direito).
-
Faça login como o usuário
jason. Insira qualquer string como senha. Em seguida, acesse a página de produtos novamente. A versão v2 de reviews será exibida (estrelas pretas no lado direito).
A regra de roteamento de tráfego agora é gerenciada via git. Alterações futuras em VirtualServices ou outros recursos do Istio seguem o mesmo fluxo de trabalho: atualize o YAML, envie para o git e deixe o Argo CD sincronizar o cluster.