Introdução
O Argo CD é uma implementação de código aberto popular para realizar entrega contínua GitOps no topo do Kubernetes. Suas aplicações, definições, configurações e ambientes devem ser declarativos e controlados por versão. Além disso, a implantação da aplicação e o gerenciamento do ciclo de vida devem ser automatizados, auditáveis e fáceis de entender. Tudo isso pode ser feito usando o Argo.
O Argo CD adere aos mesmos padrões e princípios do GitOps, mantendo assim o estado do seu cluster usando uma abordagem declarativa. A sincronização ocorre através de um repositório Git, onde seus manifestos Kubernetes estão armazenados. Os manifestos Kubernetes podem ser especificados de várias maneiras:
- Aplicações Kustomize.
- Gráficos Helm.
- Aplicações Ksonnet.
- Arquivos Jsonnet.
- Diretório simples de manifestos YAML/json.
- Qualquer ferramenta de gerenciamento de configuração personalizada configurada como um plugin de gerenciamento de configuração.
Como acontece com cada aplicativo que é executado em um cluster Kubernetes, o Argo CD é configurado por meio de definições de recursos personalizados (CRDs) armazenadas em manifestos YAML. O mais importante é o CRD Application. Em um aplicativo Argo CD, você define qual repositório Git deve ser usado para sincronizar com qual cluster Kubernetes. Pode ser o mesmo cluster Kubernetes onde o Argo CD está implantado, ou um externo.
O Argo CD é implementado como um Controlador Kubernetes que monitora continuamente aplicativos em execução e compara o estado atual (ou ao vivo) com o estado alvo desejado (como especificado no repositório Git). Um aplicativo implantado cujo estado ao vivo se desvia do estado alvo é considerado Fora de Sincronia
. O Argo CD relata e visualiza as diferenças, ao mesmo tempo que fornece facilidades para sincronizar automaticamente ou manualmente o estado ao vivo de volta ao estado alvo desejado.
O Argo CD oferece muitos recursos, sendo os mais notáveis:
- Suporte para várias ferramentas de gerenciamento/configuração, como:
Kustomize
,Helm
,Ksonnet
,Jsonnet
,plain-YAML
. - Capacidade de gerenciar e implantar em vários clusters.
- Integração SSO (
OIDC
,OAuth2
,LDAP
,SAML 2.0
,GitHub
,GitLab
,Microsoft
,LinkedIn
). - Multilocação e políticas de RBAC para autorização.
- Análise do status de saúde dos recursos do aplicativo.
- Reverter/Recolocar em qualquer lugar qualquer configuração de aplicativo cometida no repositório Git.
- Deteção automatizada de deriva de configuração e visualização.
- Interface de usuário da Web que fornece uma visualização em tempo real da atividade do aplicativo.
- CLI para automação e integração de CI.
- Integração de Webhook (GitHub, BitBucket, GitLab).
- Gancho PreSync, Sync, PostSync para suportar implantações complexas de aplicativos (por exemplo, atualizações de azul/verde e canário).
- Métricas do Prometheus.
Neste tutorial, você aprenderá a:
- Usar
Helm
para provisionarArgo CD
para o seu clusterDOKS
. - Manter o estado das aplicações do seu cluster Kubernetes sincronizado com um repositório
Git
(usar princípios deGitOps
). - Implantar e gerenciar aplicações via Argo CD.
Após concluir todos os passos deste tutorial, você deverá ter um cluster DOKS
com Argo CD
implantado, que irá:
- Gerenciar a reconciliação do cluster, via CRDs de Aplicação.
- Gerenciar lançamentos do Helm, usando fontes do Helm definidas dentro dos CRDs de aplicação.
DOKS e Argo CD para Visão Geral de Lançamentos do Helm
Abaixo está o diagrama que mostra como o Argo CD gerencia aplicações do Helm hospedadas usando um repositório Git:
Índice
- Introdução
- Pré-requisitos
- Compreensão dos Conceitos do Argo CD para Implantação de Aplicativos
- Instalando o Argo CD
- Acessando e Explorando a Interface Web do Argo CD
- Conhecendo a Interface de Linha de Comando (CLI) do Argo CD
- Inicializando Aplicações do Argo CD
- Usando Conjuntos de Aplicações do Argo CD
- Desinstalando Aplicações do Argo CD
- Conclusão
Pré-requisitos
Para completar este tutorial, você precisará:
- A working
DOKS
cluster that you have access to. Please follow the Starter Kit DOKS Setup Guide to find out more.to find out more. - A GitHub repository and branch, to store Argo CD and your applications manifests. Must be created beforehand.
- A Git client, for cloning the
Starter Kit
repository. - A CLI do
Kubectl
, para interação com oKubernetes
. Siga estas instruções para se conectar ao seu cluster comkubectl
edoctl
. - A CLI do Argo, para interagir com o
Argo CD
usando a interface de linha de comando. - O Kubeseal, para criptografar segredos e interação com o Sealed Secrets Controller.
- O Helm, para gerenciar lançamentos e atualizações do
Argo CD
(opcional, mas recomendado em geral para sistemas de produção).
Compreendendo os Conceitos do Argo CD para Implantação de Aplicativos
O Argo CD está usando o conceito central de Aplicação para gerenciar implantações de aplicações e ciclo de vida. Dentro de um manifesto de aplicação do Argo CD, você define o repositório Git que hospeda as definições da sua aplicação, assim como o cluster Kubernetes correspondente para implantar as aplicações. Em outras palavras, uma aplicação do Argo CD define a relação entre um repositório de origem e um cluster Kubernetes. É um design muito conciso e escalável, onde você pode associar múltiplas fontes (repositórios Git) e clusters Kubernetes correspondentes.
A major benefit of using applications is that you don’t need to deploy Argo to each cluster individually. You can use a dedicated cluster for Argo, and deploy applications to all clusters at once from a single place. This way, you avoid Argo CD downtime or loss, in case other environments have issues or get decommissioned.
Além disso, você pode agrupar aplicações similares em um Projeto. Projetos permitem agrupamento lógico de aplicações e papéis/permisões associados, ao trabalhar com múltiplas equipes. Quando não especificado, cada nova aplicação pertence ao projeto default
. O projeto default
é criado automaticamente e não tem restrições. O projeto padrão pode ser modificado, mas não deletado.
Kit Inicial
está usando o projeto default
para um rápido salto inicial usando o Argo CD. Em seguida, você aprenderá como criar uma Aplicação
para cada componente do Kit Inicial
e usar gráficos Helm
como a fonte da aplicação
. O Argo CD não está limitado apenas a fontes Helm, e você também pode aproveitar o poder do Kustomize, Ksonnet, Jsonnet, etc. Por favor, dê uma olhada na página de fontes de aplicação para mais detalhes.
Embora você possa usar a interface gráfica de usuário (interface web) do Argo CD para criar aplicativos, o Kit Inicial depende do modo declarativo GitOps, via manifestos YAML. Cada configuração YAML age como uma receita para cada aplicativo, portanto, pode ser armazenada em um repositório Git. Isso significa que você sempre pode recriar sua configuração Argo CD se recriar seu ambiente ou mover para outro cluster. Mais importante ainda, você pode realizar auditorias e rastrear cada mudança através do histórico do Git. É uma prática recomendada também ter os arquivos de configuração do Argo CD em um repositório Git separado do usado para o desenvolvimento de sua aplicação. Você pode ler a página de práticas recomendadas no site de documentação oficial do Argo CD para mais informações sobre o tópico.
Nota importante:
Um aspecto importante a ter em mente é que por padrão o Argo CD não sincroniza automaticamente suas novas aplicações. Quando uma Aplicação ArgoCD é criada pela primeira vez, seu estado é Fora de Sincronia
. Isso significa que o estado do repositório Git apontado pela Aplicação ArgoCD não corresponde ao estado do cluster Kubernetes. Criar uma nova Aplicação ArgoCD não dispara uma implantação automática no cluster de destino.
Para habilitar a sincronização automática e exclusão de recursos órfãos (poda), você precisa criar uma política de sincronização
. Você também pode configurar o Argo CD para reverter automaticamente alterações manuais feitas via kubectl
. Você pode ler mais sobre as políticas de sincronização automática no site oficial da documentação.
Um CRD de Aplicação
típico usando uma fonte de repositório Git se parece com o abaixo:
Explicações para a configuração acima:
spec.project
: Informa ao Argo CD qual projeto usar para a aplicação (default
neste exemplo).spec.source.repoURL
: URL do repositório Git usado para sincronizar o estado do cluster.spec.source.targetRevision
: Revisão do repositório Git usada para sincronização (também pode ser um nome de branch ou tag).spec.source.path
: Caminho do repositório Git onde os arquivos de origem (manifestos YAML) estão armazenados.spec.destination.server
: Endereço do cluster Kubernetes de destino. Normalmente aponta parahttps://kubernetes.default.svc
, se o Argo CD estiver usando o mesmo cluster onde está implantado.spec.destination.namespace
: Namespace Kubernetes a ser usada para sua aplicação.spec.syncPolicy.automated
: Ativa a sincronização automatizada de aplicações em seu cluster com um repositório Git.spec.syncPolicy.automated.prune
: Prune especifica se deve excluir recursos do cluster que não são mais encontrados nas fontes como parte da sincronização automatizada.spec.syncPolicy.automated.selfHeal
: Especifica se deve reverter recursos para seu estado desejado após modificação manual no cluster (por exemplo, viakubectl
).
Você também pode usar repositórios Helm como uma fonte para instalar aplicações em seu cluster. Um CRD de Aplicação
típico usando uma fonte de repositório Helm, se parece com o exemplo abaixo (semelhante ao exemplo de repositório Git, exceto que um repositório de gráficos Helm é usado em vez disso):
Explicações para a configuração acima:
spec.source.chart
: Gráfico Helm a ser usado como fonte para a aplicação.spec.source.repoURL
: URL do repositório de gráficos Helm.spec.source.targetRevision
: Versão do gráfico Helm a ser usada para a aplicação.spec.source.helm.releaseName
: Nome do release Helm a ser criado em seu cluster Kubernetes.spec.source.helm.values
: Especifica os valores Helm a serem passados para o modelo do helm, geralmente definido como um bloco.spec.destination.server
: Endereço do cluster Kubernetes de destino. Normalmente aponta parahttps://kubernetes.default.svc
, se o Argo CD estiver usando o mesmo cluster onde está implantado.spec.destination.namespace
: Namespace do Kubernetes a ser usado para a sua aplicação.
Por favor, continue lendo mais sobre os conceitos principais do Argo CD no site oficial da documentação. Em seguida, você irá descobrir as opções de instalação disponíveis para implantar o Argo CD no seu cluster Kubernetes.
Instalando o Argo CD
O Argo CD pode ser instalado usando kubectl
ou Helm
:
- Usando
kubectl
e um arquivo de manifesto de instalação. Este método não oferece controle direto para vários parâmetros de instalação. Se você não estiver muito familiarizado com instalações baseadas em Helm, esta é a opção mais direta para começar. - Instalação baseada em Helm. Oferece controle mais granular para o deployment e ciclo de vida da aplicação Argo CD. Recomendado para configurações de Alta Disponibilidade (
HA
) e se o Argo CD for usado em produção.
Em seguida, dependendo das funcionalidades que deseja disponíveis, você tem duas opções:
- Modo Multi-Tenant. Este tipo de instalação é tipicamente usado para atender a várias equipes de desenvolvimento de aplicativos na organização e é mantido por uma equipe de plataforma. Os usuários finais podem acessar o Argo CD via servidor de API usando a interface Web ou CLI do
argocd
. - Modo apenas
Núcleo
. Esta é uma instalação simplificada, sem a interface gráfica do usuário, servidor de API, SSO, etc., e instala a versão leve (não-HA) de cada componente.
O Starter Kit está utilizando os modos Multi-Tenant
e Alta Disponibilidade
para instalar o Argo CD no seu cluster DOKS. Dessa forma, você terá uma configuração confiável e poderá explorar todos os recursos disponíveis, incluindo a interface do usuário. Por favor, visite a página de documentação de métodos de instalação para mais informações sobre o assunto.
Instalação Baseada em Kubectl
Este método requer kubectl
, e é um processo de dois passos:
- Crie um
namespace
para implantar o próprio Argo CD. - Execute o manifesto de instalação de HA, via
kubectl
.
Por favor, execute os comandos abaixo na ordem indicada:
Agora, por favor, verifique se a instalação foi bem-sucedida. Primeiro, verifique se todas as implantações do Argo CD estão saudáveis:
A saída se parece com (verifique a coluna READY
– todos os Pods
devem estar em execução):
O servidor Argo CD deve ter um valor mínimo de replicaset
de 2
para o modo HA
. Se, por algum motivo, algumas implantações não estiverem saudáveis, verifique os eventos do Kubernetes e os logs dos Pods do componente afetado.
Instalação Baseada em Helm
Este método requer que o Helm esteja instalado em sua máquina local. O Starter Kit fornece um arquivo de valores do Helm pronto para uso para começar e instala o Argo CD no modo HA (sem escalonamento automático).
Por favor, siga os passos abaixo para concluir a instalação baseada em Helm:
- Primeiro, clone o diretório do Starter Kit (se ainda não o fez) e mude o diretório para sua cópia local:
- Em seguida, adicione o repositório Helm do Argo CD:
- Agora, pesquise o repositório Helm do
argo
para ver os gráficos disponíveis para instalação:
O resultado se parece com:
- Depois, abra e inspecione o arquivo de valores do Helm do Argo CD fornecido no repositório do Starter Kit usando um editor de sua escolha (preferencialmente com suporte para lint YAML). Por exemplo, você pode usar o VS Code:
- Por fim, implante o Argo CD em seu cluster DOKS:
–create-namespace \
Nota:
Uma versão específica
do gráfico Helm
é usada. Neste caso, é selecionada a versão 4.9.4
, que corresponde à versão 2.4.0
do aplicativo. É uma boa prática, em geral, travar em uma versão específica. Isso ajuda a ter resultados previsíveis e permite o controle de versionamento via Git
.
Agora, verifique se o lançamento do Helm foi bem-sucedido:
A saída parece semelhante a (o valor da coluna STATUS
deve ser definido como deployed
):
Finalmente, verifique o status de implantação da aplicação Argo CD:
A saída parece semelhante a (verifique a coluna READY
– todos os Pods
devem estar em execução):
O servidor Argo CD deve ter um valor mínimo de replicaset
de 2
para o modo HA
. Se, por algum motivo, algumas implantações não estiverem saudáveis, verifique os eventos do Kubernetes e os logs dos Pods do componente afetado.
Você também pode encontrar mais informações sobre o gráfico Helm do Argo CD acessando o repositório mantido pela comunidade.
Em seguida, você vai aprender como acessar e explorar os principais recursos da interface de usuário gráfica fornecida pelo Argo CD.
Acessando e Explorando a Interface Web do Argo CD
Uma das características interessantes que o Argo CD oferece é a interface web, utilizada para realizar várias tarefas administrativas e visualizar o estado de implantação da aplicação. Você pode criar aplicações usando a interface gráfica do usuário e interagir com o Argo CD de várias maneiras. Outra característica importante é a capacidade de inspecionar o estado de cada aplicação e acessar eventos do Kubernetes, bem como os logs da sua aplicação. Além disso, o Argo CD fornece uma representação visual de todos os objetos do Kubernetes (replicasets, pods, etc.) que cada implantação de aplicação está usando.
A interface web pode ser acessada por meio do encaminhamento de porta do serviço Kubernetes argocd-server
. Por favor, execute o comando abaixo em um terminal de shell:
Agora, abra um navegador da web e navegue até localhost:8080 (por favor, ignore os certificados TLS inválidos por enquanto). Você será recebido com a página de login do Argo CD. O nome de usuário do administrador padrão é admin
, e a senha é gerada aleatoriamente no momento da instalação. Você pode obtê-la executando o comando abaixo:
Em seguida, você será redirecionado para a página do painel de aplicações. A partir daqui, você pode visualizar, criar ou gerenciar aplicações via interface do usuário (um editor YAML também está disponível), bem como realizar operações de sincronização ou atualização:
Se você clicar em qualquer bloco de aplicação, uma representação visual de todos os objetos envolvidos também é mostrada:
Na próxima seção, você pode gerenciar seus projetos de aplicação, repositórios e clusters:
Por fim, a seção de informações do usuário mostra os usuários disponíveis e permite atualizações de senha do administrador:
Você pode brincar e explorar cada seção e subseção detalhadamente para ver todos os recursos disponíveis. Em seguida, você aprenderá como usar a contraparte de CLI, chamada argocd
.
O Argo CD permite que o mesmo conjunto de recursos seja utilizado tanto via interface web quanto via CLI. Para usar o CLI argocd
, você precisa abrir uma janela de terminal separada e simplesmente digitar argocd
sem nenhum argumento. Por padrão, ele exibirá os comandos e opções disponíveis:
Para qualquer comando ou subcomando, você pode invocar a página de ajuda correspondente usando o seguinte padrão: argocd <comando/subcomando> --help
. Por exemplo, se você quiser verificar quais opções estão disponíveis para o comando app
:
# Obter os detalhes de uma aplicação
Por favor, prossiga e explore outros comandos/subcomandos também para ver todas as opções disponíveis. Em seguida, você aprenderá como inicializar sua primeira aplicação Argo CD, que implantará automaticamente todos os componentes do Starter Kit.
Inicializando Aplicativos Argo CD
Em uma instalação nova, o Argo CD não sabe de onde sincronizar seus aplicativos, nem quais repositórios Git estão disponíveis para obter manifestos de aplicativos. Portanto, o primeiro passo é realizar uma operação única chamada inicialização. Você pode executar todas as operações apresentadas nesta seção usando tanto a CLI do argocd quanto a interface gráfica do usuário.
Há várias maneiras de inicializar seu cluster (por exemplo, via scripts), mas geralmente, os usuários do Argo CD fazem uso do padrão aplicativo de aplicativos
. Isso significa que você começará criando um aplicativo pai usando a CLI argocd
(ou a interface web), que por sua vez fará referência e inicializará o restante dos aplicativos em seu cluster Kubernetes.
Preparando o Layout do Repositório Git
Primeiro, você precisa preparar seu repositório Git para usar um layout consistente. No exemplo a seguir, você criará uma estrutura de layout de repositório Git semelhante a:
- Por favor, abra um terminal e siga as etapas abaixo para criar o layout para seu repositório Git:
- Primeiro, clone o seu repositório git usado para testar o Argo CD (certifique-se de substituir os espaços reservados
<>
conforme necessário):
- Em seguida, mude para o diretório da sua cópia local e crie a estrutura de diretórios (certifique-se de substituir os espaços reservados
<>
conforme necessário):
- Copie os manifestos de aplicativos fornecidos para cada componente no repositório do Starter Kit (você também pode dar uma olhada e ver como cada manifesto está estruturado):
Finalmente, faça commit das alterações e envie para a origem.
Em seguida, você irá criar o deployment da aplicação pai e permitir que o Argo CD sincronize automaticamente todos os aplicativos do Starter Kit para o seu cluster DOKS.
Usando o Padrão de App of Apps via CLI do Argo CD
Nesta seção, você aprenderá como usar a CLI do argocd
para criar e utilizar o padrão app of apps
para implantar todos os componentes do Starter Kit no seu cluster DOKS. A imagem abaixo ilustra o conceito principal:
Primeiro, você precisa encaminhar a porta do servidor principal do Argo CD na sua máquina local em uma janela de terminal separada:
Em seguida, é necessário acessar o servidor da API do Argo CD para que o CLI argocd
funcione. Usando outra janela do terminal, você precisa autenticar o cliente argocd
com a instância do servidor Argo CD:
A saída se parece com:
Em seguida, execute o comando abaixo para criar a aplicação pai starter-kit-apps
(certifique-se de substituir os espaços reservados <>
conforme necessário):
- –dest-namespace argocd \
- –dest-server https://kubernetes.default.svc \
- O comando acima irá criar uma nova
aplicação Argo CD
chamadastarter-kit-apps
no namespaceargocd
, configurada para:
Alvejar o mesmo cluster Kubernetes onde o Argo CD está implantado, porque --dest-server
está definido como https://kubernetes.default.svc
.
Usar o repositório do GitHub definido pelo argumento --repo
para sincronizar o seu cluster.
Escaneie e aplique todos os manifestos de aplicação encontrados no diretório clusters/dev/helm
(argumento --path
).
Em seguida, é necessário sincronizar a aplicação starter-kit-apps
(lembre-se de que o Argo CD não sincroniza nada por padrão, a menos que seja especificado):
A saída se parece com:
Após o comando acima ser concluído, você deverá ver um novo aplicativo presente no painel principal do seu servidor Argo CD. Por favor, abra um navegador da web e navegue até http://localhost:8080. Em seguida, selecione a aba Applications
e clique no bloco starter-kit-apps
(observe o padrão app of apps
ao olhar para o gráfico de composição):
Você também pode inspecionar os novos aplicativos via CLI:
A saída se parece com:
O aplicativo pai starter-kit-apps
aparecerá como sincronizado, mas os aplicativos filhos estarão fora de sincronia. Em seguida, você pode sincronizar tudo usando a interface web ou via CLI:
A operação de sincronização pode demorar um pouco para ser concluída (até 5-10 minutos), dependendo da complexidade e do número de objetos Kubernetes de todos os aplicativos sendo implantados.
Após algum tempo, liste novamente todos os aplicativos:
- A saída será semelhante a (observe que todos os aplicativos estão sincronizados agora):
A implantação do aplicativo Velero falhará e será deixada de propósito no estado SyncError
como um exercício para o leitor se familiarizar e aprender a diagnosticar problemas de aplicativos no Argo CD. Consulte a seção Dicas abaixo para ver como diagnosticar problemas de aplicativos no Argo CD.
O bootstrap do aplicativo pai é uma operação única. Em alterações subsequentes do Git para cada aplicativo, o Argo CD detectará a deriva e aplicará as alterações necessárias. O Argo CD está usando um mecanismo de polling
por padrão para detectar alterações no seu repositório Git. O intervalo de atualização
padrão está definido como 3 minutos
. Em vez de depender de um mecanismo de polling, você também pode aproveitar o poder dos ganchos do Git. Visite o site de documentação oficial para aprender como criar e configurar o Argo CD para usar ganchos do Git.
Dicas: Se desejar, você pode configurar o aplicativo pai para ser sincronizado automaticamente (e também habilitar auto-reparo e poda automática), você pode usar o seguinte comando (não se esqueça de substituir os espaços reservados <>
conforme necessário):
–dest-namespace argocd \
–dest-server https://kubernetes.default.svc \
–sync-policy automated \
–auto-prune \
Em caso de falhas de sincronização, você sempre pode inspecionar os eventos do Kubernetes para a aplicação em questão (via argocd app get <nome_da_aplicação>
):
A saída se parece com:
- Em seguida, você aprenderá como usar o padrão
app of apps
e executar as mesmas etapas via interface gráfica do usuário do Argo CD. - Usando o Padrão App of Apps via Interface Web do Argo CD
- Nesta seção, você aprenderá como usar a interface web do Argo CD para criar e fazer uso do padrão
app of apps
para implantar todos os componentes do Starter Kit em seu cluster DOKS. A imagem abaixo ilustra o conceito principal: - Como o diagrama acima mostra, inicializar uma nova aplicação via interface web é muito semelhante à contraparte da CLI. A única diferença é que você irá navegar entre diferentes painéis/janelas e usar operações de apontar e clicar. Nos bastidores, o Argo CD criará os CRDs de aplicativo necessários e aplicará alterações ao seu cluster Kubernetes.
- Primeiro, por favor, abra um navegador da web e faça login no console web do Argo CD. O nome de usuário padrão é
admin
, e a senha padrão é obtida via: - Depois de fazer login, você será redirecionado para a página do painel de aplicativos (em uma instalação nova, o painel está vazio). Em seguida, clique no botão
Criar Aplicativo
. Um novo painel será exibido solicitando os detalhes da aplicação: - Por favor, preencha cada campo adequadamente:
Nome da Aplicação
: O novo nome da aplicação (por exemplo, starter-kit-apps
).
Projeto
: O nome do projeto ao qual esta aplicação pertence (ao usar Argo CD pela primeira vez, você pode usar padrão
).
Política de Sincronização
e Opções de Sincronização
: Configura a política de sincronização e as opções (por exemplo, Manual
, Automático
, número de tentativas, intervalo entre tentativas, etc).
Fonte URL do Repositório
: O endereço URL do seu repositório GitHub – por exemplo, https://github.com/<SEU_NOME_DE_USUÁRIO_NO_GITHUB>/<NOME_DO_REPO_DO_ARGOCD_NO_GITHUB>.git
.
Fonte Caminho
: Caminho do diretório do repositório GitHub onde os manifestos da aplicação são armazenados (por exemplo, clusters/dev/helm
).
Destino URL do Cluster
: Cluster Kubernetes de destino para sincronizar com seu repositório GitHub (por exemplo, https://kubernetes.default.svc
para o cluster local onde o Argo CD está implantado).
Destino Namespace
: Namespace do cluster Kubernetes de destino para usar com as aplicações Argo CD (argocd
, geralmente).
Depois de preencher todos os detalhes da aplicação, clique no botão Criar no topo. Um novo bloco de aplicativo aparecerá na página do painel:
Se você clicar no ícone do aplicativo, poderá observar o padrão de aplicativos de aplicativos
, olhando para o gráfico de composição:
Se você olhar para a imagem acima, notará que todos os aplicativos estão marcados como Fora de Sincronia
. O próximo passo é acionar uma operação de sincronização no aplicativo pai. Em seguida, todos os aplicativos filhos também serão sincronizados. Por favor, pressione o botão Sincronizar
no ícone do aplicativo pai. Um novo painel surgirá no lado direito (observe que todos os aplicativos filhos estão selecionados abaixo):
Deixe os valores padrão e pressione o botão Sincronizar
no topo e observe como o Argo CD cascata a operação de sincronização para todos os aplicativos:
A implantação do aplicativo Velero falhará e será deixada de propósito no estado Erro de Sincronização
como um exercício para o leitor se familiarizar e aprender a diagnosticar problemas de aplicativos no Argo CD. Consulte a seção de Dicas abaixo para saber como diagnosticar problemas de aplicativos do Argo CD.
Se tudo correr bem, todas as aplicações devem ter uma borda verde e o status deve ser Saudável
e Sincronizado
. O processo de inicialização é uma operação única. Em alterações subsequentes do Git para cada aplicação, o Argo CD detectará a deriva e aplicará as alterações necessárias. O Argo CD usa um mecanismo de sondagem
por padrão para detectar alterações no seu repositório Git. O intervalo de atualização
padrão é definido como 3 minutos
. Em vez de depender de um mecanismo de sondagem, você também pode aproveitar o poder dos gatilhos do Git. Por favor, visite o site de documentação oficial para aprender como criar e configurar o Argo CD para usar gatilhos do Git.
Dicas:
Se desejar, você pode configurar a aplicação pai para ser sincronizada automaticamente definindo o valor do campo POLÍTICA DE SINCRONIZAÇÃO
para Automático
. Para habilitar a auto-cura e a poda automática, marque as caixas de seleção RECURSOS DE PODA
e AUTO CURA
:
Em caso de falhas de sincronização, você sempre pode inspecionar os eventos do Kubernetes para a aplicação em questão. Usando a interface web, você pode navegar para o bloco de aplicativo afetado:
Em seguida, clique no link Falha de Sincronização
sinalizado em vermelho, da seção ÚLTIMO RESULTADO DE SINCRONIZAÇÃO
no cabeçalho da página de aplicação. Um novo painel aparece, mostrando informações úteis sobre por que a operação de sincronização falhou:
- N a próxima seção, você aprenderá como gerenciar múltiplos aplicativos de uma vez usando um único CRD – o
ApplicationSet
. - Usando Conjuntos de Aplicativos Argo CD
Conjuntos de Aplicativos é outro recurso poderoso oferecido pelo Argo CD. O Controlador de ApplicationSet é um subprojeto do Argo CD, que adiciona automação de aplicativos por meio de definições modeladas. Este recurso ajuda você a evitar repetições em seus manifestos de aplicativos (fazendo uso do princípio DRY).
O controlador ApplicationSet é instalado junto com o Argo CD (no mesmo namespace) e ele gera automaticamente Aplicativos do Argo CD com base no conteúdo de um novo Recurso Personalizado de ApplicationSet (CR).
Nota:
A partir da versão 2.3.x
do Argo CD, você não precisa instalar o Controlador de ApplicationSet
separadamente, pois faz parte da instalação principal do Argo CD. O Starter Kit está usando versão >= 2.3.1
, então você não precisa mexer em nada.
A ideia principal de um ApplicationSet
baseia-se em ter uma lista de valores atuando como um gerador
, e um modelo
que é preenchido pelos valores da lista de entrada. Para cada item da lista, um novo modelo de aplicativo é gerado em sequência. Basicamente, você define um CRD de ApplicationSet e então o deixa gerar para você quantos CRDs de Application do ArgoCD você quiser, com base nos valores de entrada. Assim, em vez de criar e lidar com múltiplos manifestos de Application
, você gerencia tudo através de um único manifesto
– o ApplicationSet
.
Este conceito também simplifica o gerenciamento de configurações multi-cluster
e multi-ambiente
usando modelos de aplicativos parametrizados. Os conjuntos de aplicativos incluem outros geradores também, além dos Geradores de Lista:
Gerador de Cluster: Usa clusters definidos pelo Argo CD para modelar aplicativos.
Gerador Git: Usa os arquivos/diretórios de um repositório Git para modelar aplicativos.
Um CRD de ApplicationSet
típico usando um Gerador de Lista
parece o seguinte:
Aplicar o ApplicationSet
acima ao seu cluster Kubernetes renderizará três aplicativos Argo CD. Por exemplo, o aplicativo do ambiente dev
é renderizado como mostrado abaixo:
Os motores de modelo são muito poderosos por natureza e oferecem muitas possibilidades. Visite o site principal da documentação do ApplicationSet para saber mais sobre este recurso.
Desinstalando Aplicações do Argo CD
Desinstalar (ou excluir) aplicações gerenciadas pelo Argo CD é realizado excluindo o manifesto correspondente da fonte do repositório Git. No caso de aplicações criadas usando o padrão de aplicativos de aplicativos
, você precisa excluir apenas o aplicativo pai (seja via CLI ou interface web). Então, todas as aplicações filhas serão excluídas também como parte do processo.
- Como excluir o aplicativo pai
starter-kit-apps
(incluindo aplicativos filhos) usando o CLI doargocd
: - Se você deseja garantir que os aplicativos filhos e todos os seus recursos sejam excluídos quando o aplicativo pai for excluído, certifique-se de adicionar o
finalizador
apropriado à suadefinição de Aplicação
:
Source:
https://www.digitalocean.com/community/developer-center/implementing-gitops-using-argo-cd