O Argo CD monitora as configurações de orquestração de aplicações em um repositório git, compara-as com o estado ativo das aplicações em um cluster e sincroniza as alterações automática ou manualmente para o cluster de destino. Para aumentar a eficiência e a rastreabilidade das implantações de serviços em um ambiente Kubernetes, integre o Argo CD ao ASM e implemente um fluxo de trabalho GitOps. Essa abordagem utiliza um sistema de controle de versão para sincronizar e implantar aplicações automaticamente. O processo simplifica a implantação, garante a consistência das configurações, oferece um histórico operacional transparente, melhora a manutenção e a estabilidade do sistema e reduz os custos operacionais.
Pré-requisitos
Crie uma instância do ASM da versão 1.12.4.50 ou posterior. Para mais informações, consulte Create an ASM instance.
Crie um repositório git.
Informações básicas
GitOps é um método para implementar a implantação contínua de aplicações cloud-native. O Alibaba Cloud Service Mesh (ASM) integra-se ao Argo CD para lançar e atualizar aplicações via GitOps. Os desenvolvedores enviam definições de aplicações (Deployment, Service) e regras de gerenciamento de tráfego (VirtualService, Gateway, DestinationRule) escritas em YAML para um repositório git. O Argo CD monitora o estado atual dos recursos da aplicação no cluster, como Deployment, Service e VirtualService, e o compara com o estado desejado definido no repositório git, que atua como fonte da verdade. Quando o repositório é atualizado, o Argo CD permite a sincronização e a implantação automática ou manual da aplicação.
Etapa 1: Instale o Argo CD
Instale o Argo CD manualmente ou utilize o recurso integrado disponível no Application Center do Container Service for Kubernetes (ACK). Este tópico demonstra a instalação manual do Argo CD integrado ao ASM para um fluxo de trabalho GitOps.
Para instalar o Argo CD manualmente, consulte a documentação do Argo CD.
O Application Center do ACK oferece um recurso nativo do Argo CD, eliminando a necessidade de instalação manual. Esse centro permite verificar o status da aplicação, implantar versões em clusters Kubernetes usando repositórios git e Helm charts, além de executar rollbacks e lançamentos. Para mais informações, consulte Application Center overview.
Etapa 2: Ative o acesso KubeAPI do plano de dados
Como o Alibaba Cloud Service Mesh (ASM) é um plano de controle gerenciado e compatível com Istio, o plano de controle do Service Mesh ASM e o plano de dados (Container Service for Kubernetes - ACK) residem em clusters Kubernetes diferentes. Portanto, ative o acesso KubeAPI do plano de dados no ASM para permitir que o Argo CD acesse os recursos do Istio no cluster ASM da mesma forma que acessa os recursos no cluster ACK.
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, localize a instância do ASM que deseja configure. Clique no nome da instância ou clique em Manage na coluna Actions.
Na seção Basic Information, clique em Enable ao lado de Enable Data-plane KubeAPI access.
Na caixa de diálogo exibida, clique em Submit.
Etapa 3: Crie um gateway ASM
Faça login no console do ASM. 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 Ingress Gateway, clique em Create. Defina as configurações e clique em Create.
A tabela a seguir descreve alguns dos parâmetros. Para obter detalhes sobre todos os parâmetros, consulte Create an ingress gateway.
Parâmetro
Descrição
Name
Este tópico usa ingressgateway como exemplo.
Gateway types
Para North-South IngressGateway, selecione North-South-Ingress.
Port Mapping
Clique em Add Port e configure os seguintes protocolos e portas.
-
Defina Protocol como HTTP e Service Port como 80.
-
Defina Protocol como HTTPS e Service Port como 443.
-
Etapa 4: Implante recursos do Istio com o Argo CD
Defina os recursos do Istio como manifests do Kubernetes e armazene-os no repositório git junto com os manifests da sua aplicação.
-
Crie a aplicação de exemplo Bookinfo.
-
Na interface do Argo CD, clique em NEW APP e configure as seguintes opções.
Na seção GENERAL, defina Application Name como bookinfo, Project como default e selecione PRUNE RESOURCES.
Na seção SOURCE, defina Repository URL como https://github.com/AliyunContainerService/asm-labs.git, Revision como argocd-asm e Path como argo-cd/bookinfo.
Na seção DESTINATION, defina Cluster URL como https://kubernetes.default.svc e Namespace como default.
-
Após concluir a configuração, clique em CREATE na parte superior da página.
Após a criação, a aplicação bookinfo aparece na lista de aplicações do Argo CD com status Healthy (ícone de coração verde) e Synced (ícone de verificação verde). Isso indica que a aplicação foi sincronizada com sucesso no cluster de destino. Clique em bookinfo para acessar a página de detalhes da aplicação, onde APP HEALTH exibe Healthy e CURRENT SYNC STATUS mostra Synced. A árvore de recursos contém os recursos de Deployment (details-v1, productpage-v1, ratings-v1, reviews-v1, reviews-v2 e reviews-v3), seus ReplicaSets e Pods associados (com status running 2/2), além dos recursos DestinationRule (details, productpage e reviews), Gateway (bookinfo-gateway) e VirtualService (bookinfo), todos em estado sincronizado e saudável.
-
-
Verifique o status dos recursos no console do ASM.
Faça login no console do ASM. 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 Virtual Service, confirme que o VirtualService bookinfo foi criado.
-
Valide o status dos recursos 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 no nome do seu cluster. No painel de navegação à esquerda, clique em .
Confirme a criação dos Deployments. A página exibe seis Deployments criados com sucesso, cada um com um Pod em execução: details-v1, productpage-v1, ratings-v1, reviews-v1, reviews-v2 e reviews-v3.
-
Acesse a aplicação por meio do gateway ASM.
-
Obtenha o endereço do gateway ASM.
Faça login no console do ASM. 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 Ingress Gateway, copie o Service address do gateway de destino.
-
No navegador, acesse http://{YOUR_ASM_GATEWAY_ADDRESS}/productpage.
A página da aplicação Bookinfo carrega, exibindo detalhes do livro The Comedy of Errors. Como o serviço Reviews possui três versões e nenhuma regra de roteamento específica foi aplicada ainda, a seção de avaliações muda a cada atualização da página. Por exemplo, uma atualização pode mostrar Reviews served by: reviews-v3-xxx na parte inferior da seção de avaliações. Esse comportamento confirma que a aplicação está acessível pelo gateway ASM e que os recursos do Istio foram implantados com sucesso.
-
Etapa 5: Implemente o roteamento de tráfego orientado por GitOps
Após configurar as regras de tráfego, acesse http://{your ASM Gateway address}/productpage. Apenas a versão v1 do Reviews é exibida se você não estiver logado, enquanto a versão v2 do Reviews aparece ao fazer login com o nome de usuário jason.
-
Modifique os arquivos YAML locais do VirtualService e do Deployment.
-
Altere o arquivo YAML do VirtualService conforme abaixo:
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 --- -
Atualize o arquivo YAML do Deployment da seguinte forma:
apiVersion: apps/v1 kind: Deployment metadata: namespace: argocd name: reviews-v1 labels: app: reviews version: v1 spec: replicas: 2
-
-
Faça commit e push das alterações para o seu repositório git.
git add * git commit -m "reviews-v1" git push -
Sincronize a configuração do git com o cluster.
Se a sincronização automática estiver ativada no Argo CD, as configurações são sincronizadas automaticamente com o cluster. Caso contrário, siga estas etapas para sincronizá-las manualmente.
-
No cartão bookinfo da interface de gerenciamento do Argo CD, clique em SYNC.
Quando um arquivo é alterado, o status OutOfSync aparece à direita de Status no cartão bookinfo. O status da aplicação bookinfo passa a ser OutOfSync.
-
No painel exibido, clique em SYNCHRONIZE.
Após a conclusão da sincronização, visualize os recursos criados no console do ASM e os recursos atualizados no console do ACK. Para mais informações, consulte Verify the resource status on the ASM console e Verify the resource status on the ACK console.
-
-
Verifique o resultado do acesso.
-
Sem fazer login, acesse http://{YOUR_ASM_GATEWAY_ADDRESS}/productpage no navegador.
Resultado: Todo o tráfego para o serviço Reviews é roteado para v1 (sem classificação por estrelas). A página de detalhes do product Bookinfo carrega, mostrando o resumo de The Comedy of Errors, Book Details (Type: paperback, Pages: 200, Publisher: PublisherA, Language: English, ISBN-10: 1234567890, ISBN-13: 123-1234567890) e Book Reviews. A parte inferior da seção de avaliações exibe o nome do Pod da instância do microsserviço, como
reviews-v1-55b668fc65-s48wm, indicando que a aplicação foi implantada com sucesso e está acessível. -
Faça login com o nome de usuário
jasone qualquer senha.Resultado: Após o login, o tráfego para o serviço Reviews é roteado para v2 (classificação com estrelas pretas). O nome de usuário jason e um link sign out aparecem no canto superior direito da página. As classificações por estrelas e a presença do nome de usuário jason confirmam que o login foi realizado com sucesso e que o tráfego está sendo roteado para o serviço v2.
-