Instalação via Argo CD (GitOps)
Esta secção descreve o processo de instalação dos componentes do TDP Kubernetes utilizando o Argo CD como ferramenta de GitOps.
Antes de iniciar a instalação via Argo CD, certifique-se de que os pré-requisitos foram cumpridos e que o Argo CD já esteja instalado no cluster.
Caso ainda não tenha instalado o Argo CD, consulte os passos 1 e 2 da instalação via Helm.
Visão Geral
O Argo CD é uma ferramenta de entrega contínua (CD) baseada no modelo GitOps.
Neste modelo, o utilizador descreve a infraestrutura que deseja ter — quais componentes, em qual versão, com quais configurações — em ficheiros YAML chamados manifests, e os armazena em um repositório Git.
O Argo CD monitora esse repositório e garante que o cluster Kubernetes sempre reflita o que está declarado nesses ficheiros.
Diferença entre a instalação com o Argo CD e Helm
| Critério | Helm CLI | Argo CD (GitOps) |
|---|---|---|
| Rastreabilidade | Comandos manuais, sem histórico automático | Cada mudança fica registada no Git |
| Automação | Execução manual de cada chart | Sincronização automática contínua |
| Rollback | Requer reexecução de comandos | Um clique ou um comando |
| Visibilidade | Somente via terminal | Interface web com status em tempo real |
| Auditoria | Difícil | Completa, via histórico do Git |
Conceitos essenciais para instalação com o Argo CD
Antes de começar, é importante entender os conceitos centrais desta instalação:
Manifest
: Um ficheiro YAML que descreve um recurso Kubernetes ou Argo CD.
Neste contexto, cada manifest define uma Application do Argo CD — ou seja, instrui o Argo CD a instalar um determinado chart Helm.
Os ficheiros são criados com base nos modelos fornecidos nesta documentação e armazenados no repositório Git indicado.
Application
: O objeto central do Argo CD.
Uma Application orienta o Argo CD no sentido de obter um determinado chart Helm do Registry e instalá-lo em um determinado namespace do cluster.
Cada componente do TDP (Kafka, Airflow, Trino, etc.) é representado por uma Application separada.
Repositório
: É a origem dos artefatos que o Argo CD irá utilizar.
Pode ser um repositório Git (onde ficam os seus manifests) ou um registry OCI1 (onde ficam os Helm Charts da Tecnisys).
Ambos precisam de ser registados no Argo CD antes de criar as Applications.
Sincronização
: O processo pelo qual o Argo CD compara o estado declarado nos manifests com o estado real do cluster.
Se houver diferença, o Argo CD aplica as mudanças necessárias — automaticamente (se configurado) ou mediante comando manual.
App of Apps
: Um padrão que permite gerir todos os componentes com uma única Application raiz.
Em vez de aplicar vários manifests um a um, permite a aplicação de um único ficheiro que instrui o Argo CD a descobrir e instalar todos os demais automaticamente.
Ordem de Instalação
A instalação dos componentes deve seguir uma ordem específica para garantir que as dependências sejam atendidas:
| Ordem | Chart | Componente | Versão | Dependências |
|---|---|---|---|---|
| 1 | tdp-postgresql | PostgreSQL | 17.5.0 | Nenhuma |
| 2 | tdp-kafka | Kafka (Strimzi) | 4.1.0 | Nenhuma |
| 3 | tdp-hive-metastore | Hive Metastore | 4.0.0 | Nenhuma |
| 4 | tdp-deltalake | Delta Lake | 4.0.0 | Nenhuma |
| 5 | tdp-iceberg | Iceberg | 1.10.0 | Nenhuma |
| 6 | tdp-ozone | Apache Ozone | 2.0.0 | Nenhuma |
| 7 | tdp-ranger | Ranger | 2.7.0 | tdp-postgresql |
| 8 | tdp-nifi | NiFi | 1.28.0 | Nenhuma |
| 9 | tdp-spark | Spark | 4.0.0 | Nenhuma |
| 10 | tdp-trino | Trino | 478 | Nenhuma |
| 11 | tdp-airflow | Airflow | 3.0.2 | tdp-postgresql |
| 12 | tdp-jupyter | JupyterLab | 5.3.0 | Nenhuma |
| 13 | tdp-clickhouse | ClickHouse | 25.8.11.66 | Nenhuma |
| 14 | tdp-cloudbeaver | CloudBeaver | 25.2.3 | tdp-postgresql |
| 15 | tdp-openmetadata | OpenMetadata | 1.9.11 | tdp-postgresql |
| 16 | tdp-superset | Superset | 5.0.0 | tdp-postgresql |
A coluna Versão refere-se à versão do componente (ex.: Kafka 4.1.0, Airflow 3.0.2). A versão do chart Helm é 3.0.0 para todos os charts TDP.
O Argo CD (incluindo os CRDs necessários) é pré-requisito deste procedimento: o cluster já deve ter o Argo CD operacional (veja a instalação via Helm).
Os charts tdp-argo-crds e tdp-argo não entram na sequência, pois não são instalados por este fluxo GitOps.
O tdp-postgresql é uma dependência e deve estar operacional antes dos componentes que o utilizam, como: Airflow, OpenMetadata, Ranger, Superset e CloudBeaver.
Ao usar o padrão App of Apps, o Argo CD tenta criar todos ao mesmo tempo; esses componentes podem apresentar falhas temporárias até que o PostgreSQL esteja pronto — o selfHeal2 os reconciliará automaticamente.
- Instalação
- Verificação da Instalação
- Resolução de Problemas
Passo 1 – Ligação do registry OCI ao Argo CD
O primeiro passo é informar ao Argo CD onde estão os Helm Charts do TDP.
Os charts ficam no registry OCI privado da Tecnisys (registry.tecnisys.com.br).
Para que o Argo CD consiga obtê-los, é necessário registar esse endereço como um repositório Helm com suporte a OCI.
Esse registo não instala nada — apenas permite ao Argo CD aceder ao registry como fonte de artefatos.
As credenciais de acesso devem ser obtidas junto à Tecnisys.
- Interface Web
- CLI
- Comandos
- Vídeos
1. Aceda à interface do Argo CD no navegador. O endereço depende da forma de exposição HTTP configurada no seu ambiente. Se o ambiente utilizar Ingress, descubra o host com:
kubectl get ingress -n argocd
Exemplo de resultado:
NAME CLASS HOSTS PORTS
tdp-argocd-server nginx argocd.<cluster-domain> 80

Abra https://argocd.<cluster-domain> no navegador.

Se o ambiente utilizar Gateway API em vez de Ingress, descubra o host exposto com:
kubectl get httproute -n argocd
Consulte Ingress vs Gateway API para mais detalhes sobre as duas abordagens suportadas.
2. No menu lateral, aceda a Settings → Repositories.
3. Clique em Connect Repo e preencha os campos:
| Campo | Valor |
|---|---|
| Repository Type | Helm |
| Repository URL | registry.tecnisys.com.br |
| Enable OCI | true (marcar o checkbox) |
| Username | <usuario> |
| Password | <palavra-passe> |
4. Clique em Connect.
O repositório deve aparecer na lista com status de ligação bem-sucedida.

- get ingress
- Ligação do repositório
- Comandos
- Vídeos
Para utilizar os comandos desta secção, instale o cliente Argo CD CLI na sua máquina a partir das releases oficiais do projeto (escolha o binário adequado ao seu sistema operativo):
1. Efetue o Login na CLI
Se utilizar a CLI do Argo CD, faça login antes de executar comandos.
As credenciais são as do utilizador configurado no Argo CD.
argocd login argocd.seu-dominio.com.br

2. Registre o repositório Helm OCI no Argo CD
Execute o comando abaixo no terminal, substituindo <utilizador> e <palavra-passe> pelas credenciais fornecidas pela Tecnisys:
argocd repo add registry.tecnisys.com.br \
--type helm \
--name tdp-registry \
--enable-oci \
--username <utilizador> \
--password <palavra-passe>

3. Verifique o registo
argocd repo list
Resultado esperado:
TYPE NAME REPO OCI
helm tdp-registry registry.tecnisys.com.br true

- argocd login
- argocd repo add
- argocd repo list
Passo 2 – Criação do Repositório GitOps
É necessária a criação de um repositório Git para armazenar os manifests das Applications.
Esse repositório é o ponto de verdade do seu ambiente: o Argo CD o monitora continuamente e aplica qualquer alteração que for enviada para ele.
Deve criar este repositório Git na sua plataforma de preferência (GitHub, GitLab, Gitea, etc.) e dar ao Argo CD acesso de leitura a ele.
O repositório pode ser privado — nesse caso, registe-o também no Argo CD via Settings → Repositories, da mesma forma que fez com o registry OCI, mas selecionando o tipo Git e fornecendo as credenciais de acesso.
Estrutura recomendada
Crie o repositório com a seguinte organização de pastas e ficheiros:
tdp-gitops/
├── app-of-apps.yaml # Application raiz — aplique este ficheiro para iniciar tudo
├── apps/ # Um manifest por componente TDP
│ ├── tdp-postgresql.yaml
│ ├── tdp-kafka.yaml
│ ├── tdp-hive-metastore.yaml
│ ├── tdp-deltalake.yaml
│ ├── tdp-iceberg.yaml
│ ├── tdp-ozone.yaml
│ ├── tdp-ranger.yaml
│ ├── tdp-nifi.yaml
│ ├── tdp-spark.yaml
│ ├── tdp-trino.yaml
│ ├── tdp-airflow.yaml
│ ├── tdp-jupyter.yaml
│ ├── tdp-clickhouse.yaml
│ ├── tdp-cloudbeaver.yaml
│ ├── tdp-openmetadata.yaml
│ └── tdp-superset.yaml
└── values/ # Configurações personalizadas por componente (opcional)
├── tdp-postgresql-values.yaml
├── tdp-kafka-values.yaml
└── ...
O que o utilizador cria: os ficheiros YAML em apps/ (os manifests das Applications) e o app-of-apps.yaml.
Os modelos estão fornecidos no Passo 3.
Os ficheiros values/ são opcionais e permitem personalizar a instalação de cada componente — por exemplo, definir senhas, limites de recursos ou parâmetros específicos.
Se não existirem, cada componente usará os valores padrão do chart.
Os Helm Charts em si são fornecidos pela Tecnisys no registry OCI.
Você não precisa criar nem modificar os charts.
Passo 3 – Criação dos Manifests das Applications
Cada componente do TDP Kubernetes é representado por um ficheiro YAML que define uma Application do Argo CD.
Copie os modelos abaixo para os ficheiros correspondentes em apps/ do seu repositório, substituindo <namespace> pelo namespace que escolheu para o seu ambiente (ex.: tdp-producao, tdp-dev, meu-namespace).
- Comandos
- Vídeo
Entender o Manifest
Antes de copiar os modelos, entenda o que cada campo significa:
| Campo | O que define |
|---|---|
metadata.name | Nome da Application no Argo CD (deve ser único) |
metadata.namespace | Namespace onde o Argo CD está instalado — normalmente argocd |
spec.source.repoURL | Endereço do registry OCI onde o chart está armazenado |
spec.source.chart | Nome do chart Helm a ser instalado |
spec.source.targetRevision | Versão do chart — use 3.0.0 para todos os charts TDP |
spec.source.helm.valueFiles | Ficheiros de personalização (opcional; criados pelo utilizador em values/) |
spec.destination.server | Cluster de destino — use https://kubernetes.default.svc para o cluster local |
spec.destination.namespace | Namespace onde o componente será instalado |
syncPolicy.automated.prune | Se true, remove do cluster recursos que foram removidos do manifest |
syncPolicy.automated.selfHeal | Se true, reverte alterações manuais feitas diretamente no cluster |
syncOptions.CreateNamespace | Cria o namespace automaticamente se ainda não existir |

1. PostgreSQL
O PostgreSQL é o banco de dados relacional utilizado como dependência por vários componentes da plataforma: Airflow (metadados dos DAGs e histórico de execuções), OpenMetadata (catálogo de dados), Ranger (políticas de segurança), Superset (metadados dos dashboards) e CloudBeaver (configurações). Deve estar operacional antes desses componentes.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: tdp-postgresql
namespace: argocd
spec:
project: default
source:
repoURL: oci://registry.tecnisys.com.br/tdp
chart: tdp-postgresql
targetRevision: 3.0.0
destination:
server: https://kubernetes.default.svc
namespace: <namespace>
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
2. Kafka (Strimzi)
O Apache Kafka é a plataforma de mensagens e de streaming de eventos da plataforma. É gerido pelo operador Strimzi, que automatiza a criação, o escalonamento e a recuperação dos brokers e tópicos Kafka no Kubernetes.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: tdp-kafka
namespace: argocd
spec:
project: default
source:
repoURL: oci://registry.tecnisys.com.br/tdp
chart: tdp-kafka
targetRevision: 3.0.0
helm:
valueFiles:
- values.yaml
destination:
server: https://kubernetes.default.svc
namespace: <namespace>
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
3. Hive Metastore
O Hive Metastore é o serviço de catálogo de metadados de tabelas. Armazena o esquema (colunas, tipos, partições) das tabelas geridas pela plataforma, sendo utilizado pelo Spark e pelo Trino para descobrir e aceder aos dados.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: tdp-hive-metastore
namespace: argocd
spec:
project: default
source:
repoURL: oci://registry.tecnisys.com.br/tdp
chart: tdp-hive-metastore
targetRevision: 3.0.0
destination:
server: https://kubernetes.default.svc
namespace: <namespace>
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
4. Delta Lake
O Delta Lake é uma camada de armazenamento open source que adiciona transações ACID, versionamento e controle de esquema ao armazenamento de objetos. Permite operações confiáveis de leitura e escrita em grande escala.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: tdp-deltalake
namespace: argocd
spec:
project: default
source:
repoURL: oci://registry.tecnisys.com.br/tdp
chart: tdp-deltalake
targetRevision: 3.0.0
destination:
server: https://kubernetes.default.svc
namespace: <namespace>
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
5. Iceberg
O Apache Iceberg é um formato de tabela open source de alto desempenho para grandes volumes de dados analíticos. Oferece evolução de esquema, particionamento oculto e viagem no tempo (time travel), sendo amplamente compatível com motores de consulta como Trino e Spark.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: tdp-iceberg
namespace: argocd
spec:
project: default
source:
repoURL: oci://registry.tecnisys.com.br/tdp
chart: tdp-iceberg
targetRevision: 3.0.0
destination:
server: https://kubernetes.default.svc
namespace: <namespace>
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
6. Apache Ozone
O Apache Ozone é um sistema de armazenamento de objetos distribuído, compatível com a API S3. Em ambientes on-premise, atua como alternativa ao Amazon S3 ou MinIO, sendo o armazenamento primário de dados da plataforma.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: tdp-ozone
namespace: argocd
spec:
project: default
source:
repoURL: oci://registry.tecnisys.com.br/tdp
chart: tdp-ozone
targetRevision: 3.0.0
destination:
server: https://kubernetes.default.svc
namespace: <namespace>
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
7. Ranger
O Apache Ranger é o componente de segurança e governança de acesso. Centraliza as políticas de autorização para todos os serviços da plataforma — quem pode aceder a quais dados, em quais tabelas ou tópicos — e regista o histórico de acessos para auditoria. Depende do PostgreSQL.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: tdp-ranger
namespace: argocd
spec:
project: default
source:
repoURL: oci://registry.tecnisys.com.br/tdp
chart: tdp-ranger
targetRevision: 3.0.0
destination:
server: https://kubernetes.default.svc
namespace: <namespace>
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
8. NiFi
O Apache NiFi é a ferramenta de ingestão e roteamento de dados. Por meio de uma interface visual, permite criar fluxos de dados (pipelines) que movem, transformam e integram dados entre fontes externas e a plataforma.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: tdp-nifi
namespace: argocd
spec:
project: default
source:
repoURL: oci://registry.tecnisys.com.br/tdp
chart: tdp-nifi
targetRevision: 3.0.0
destination:
server: https://kubernetes.default.svc
namespace: <namespace>
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
9. Spark
O Apache Spark é o motor de processamento distribuído da plataforma. Utilizado para processamento em lote (batch), transformações de dados em larga escala e pipelines de machine learning.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: tdp-spark
namespace: argocd
spec:
project: default
source:
repoURL: oci://registry.tecnisys.com.br/tdp
chart: tdp-spark
targetRevision: 3.0.0
destination:
server: https://kubernetes.default.svc
namespace: <namespace>
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
10. Trino
O Trino é o motor de consulta SQL distribuída. Permite executar consultas SQL analíticas diretamente sobre os dados armazenados no Ozone/S3, Delta Lake ou Iceberg, sem a necessidade de mover os dados para outro sistema.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: tdp-trino
namespace: argocd
spec:
project: default
source:
repoURL: oci://registry.tecnisys.com.br/tdp
chart: tdp-trino
targetRevision: 3.0.0
destination:
server: https://kubernetes.default.svc
namespace: <namespace>
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
11. Airflow
O Apache Airflow é a ferramenta de orquestração de pipelines de dados. Permite criar, agendar e monitorar workflows (DAGs — Directed Acyclic Graphs) que coordenam a execução de tarefas de ingestão, transformação e carga de dados. Depende do PostgreSQL.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: tdp-airflow
namespace: argocd
spec:
project: default
source:
repoURL: oci://registry.tecnisys.com.br/tdp
chart: tdp-airflow
targetRevision: 3.0.0
destination:
server: https://kubernetes.default.svc
namespace: <namespace>
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
12. JupyterHub
O JupyterHub é o servidor multi-utilizador de notebooks. Permite que analistas e cientistas de dados executem notebooks Jupyter diretamente no cluster, com acesso aos dados e à capacidade computacional da plataforma.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: tdp-jupyter
namespace: argocd
spec:
project: default
source:
repoURL: oci://registry.tecnisys.com.br/tdp
chart: tdp-jupyter
targetRevision: 3.0.0
destination:
server: https://kubernetes.default.svc
namespace: <namespace>
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
13. ClickHouse
O ClickHouse é o banco de dados analítico OLAP (Online Analytical Processing) da plataforma. Otimizado para consultas analíticas de alta velocidade sobre grandes volumes de dados, é ideal para dashboards e relatórios em tempo real.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: tdp-clickhouse
namespace: argocd
spec:
project: default
source:
repoURL: oci://registry.tecnisys.com.br/tdp
chart: tdp-clickhouse
targetRevision: 3.0.0
destination:
server: https://kubernetes.default.svc
namespace: <namespace>
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
14. CloudBeaver
O CloudBeaver é a interface web de administração de bancos de dados. Permite conectar-se a diferentes bancos de dados (PostgreSQL, ClickHouse, etc.) e executar queries diretamente no navegador. Depende do PostgreSQL.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: tdp-cloudbeaver
namespace: argocd
spec:
project: default
source:
repoURL: oci://registry.tecnisys.com.br/tdp
chart: tdp-cloudbeaver
targetRevision: 3.0.0
destination:
server: https://kubernetes.default.svc
namespace: <namespace>
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
15. OpenMetadata
O OpenMetadata é o catálogo de dados e plataforma de governança da plataforma. Permite descobrir, documentar e gerir todos os ativos de dados — tabelas, pipelines, dashboards — com linhagem automática e controle de qualidade. Depende do PostgreSQL.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: tdp-openmetadata
namespace: argocd
spec:
project: default
source:
repoURL: oci://registry.tecnisys.com.br/tdp
chart: tdp-openmetadata
targetRevision: 3.0.0
destination:
server: https://kubernetes.default.svc
namespace: <namespace>
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
16. Superset
O Apache Superset é a ferramenta de visualização e BI (Business Intelligence) da plataforma. Permite criar dashboards interativos e gráficos conectados ao ClickHouse, Trino e outros bancos de dados da plataforma. Depende do PostgreSQL.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: tdp-superset
namespace: argocd
spec:
project: default
source:
repoURL: oci://registry.tecnisys.com.br/tdp
chart: tdp-superset
targetRevision: 3.0.0
destination:
server: https://kubernetes.default.svc
namespace: <namespace>
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
Passo 4 – Criação do Manifest App of Apps
O padrão App of Apps permite iniciar toda a instalação com um único comando.
Em vez de aplicar os vários manifests um a um, é possível criar uma Application raiz (app-of-apps.yaml) que aponta para a pasta apps/ do seu repositório Git.
O Argo CD lê essa pasta, descobre todos os manifests e cria automaticamente todas as Applications definidas ali.
- Comandos
- Vídeo
Crie o ficheiro app-of-apps.yaml na raiz do seu repositório.
Substitua a URL de repoURL pela URL do seu repositório Git (onde armazenou os ficheiros do Passo 3):
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: tdp-stack
namespace: argocd
spec:
project: default
source:
repoURL: https://git.seu-servidor.com.br/seu-usuario/tdp-gitops.git
targetRevision: main
path: apps
destination:
server: https://kubernetes.default.svc
namespace: argocd
syncPolicy:
automated:
prune: true
selfHeal: true
O campo spec.source.repoURL deve apontar para o repositório Git que criou no Passo 2, onde estão os manifests das Applications. Se o repositório for privado, registe-o previamente no Argo CD via Settings → Repositories.

Passo 5 – Aplicação do App of Apps
Com o repositório GitOps criado e os manifests prontos, aplique a Application raiz para iniciar a instalação de todos os componentes.
- Comandos
- Vídeos
- Faça o clone do repositório Git no seu terminal local
git clone https://git.seu-servidor.com.br/seu-usuario/tdp-gitops.git

- Aplique o ficheiro:
cd tdp-gitops
kubectl apply -f app-of-apps.yaml

A partir desse momento, o Argo CD descobrirá todos os manifests em apps/ e iniciará a instalação de todos os componentes do TDP Kubernetes.
Acompanhar o Progresso
argocd app list

Políticas de sincronização
Os manifests nesta documentação utilizam syncPolicy.automated — o Argo CD sincroniza automaticamente sempre que detecta diferenças.
Os dois parâmetros de controle são:
| Parâmetro | Efeito quando true |
|---|---|
prune | Remove do cluster recursos que foram removidos do manifest no Git |
selfHeal | Reverte no cluster alterações feitas manualmente (fora do Git) |
Para ambientes que exigem maior controle, remova o bloco automated do manifest.
Nesse caso, a sincronização deve ser iniciada manualmente:
argocd app sync tdp-postgresql

- git clone
- kubectl apply
- argocd app list
- argocd app sync
Verificação da Instalação
Após aplicar o App of Apps, utilize os comandos abaixo para acompanhar o estado da instalação.
- Comandos
- Vídeos
Verificar o status das Applications
argocd app list

Cada Application pode apresentar os seguintes status:
| Status de Sincronização | Descrição |
|---|---|
| Synced | O estado do cluster corresponde ao declarado no manifest |
| OutOfSync | Existem diferenças entre o manifest e o cluster |
| Unknown | O Argo CD não conseguiu determinar o status |
| Status de Saúde | Descrição |
|---|---|
| Healthy | Todos os recursos da Application estão operacionais |
| Progressing | Os recursos estão sendo criados ou atualizados |
| Degraded | Um ou mais recursos apresentam problemas |
| Suspended | A sincronização está pausada |
Verificar uma Application específica
argocd app get tdp-postgresql

Verificar os Pods no cluster
kubectl get pods -n <namespace>

Todos os pods devem apresentar status Running com todas as réplicas prontas.
Verificar os Releases do Helm
helm list -n <namespace>

Todos os releases devem apresentar status deployed.
Verificar os Serviços
kubectl get svc -n <namespace>

Verificar os Volumes Persistentes
kubectl get pvc -n <namespace>

Todos os Persistent Volume Claims devem apresentar status Bound.
- argocd app get
- kubectl get pods
- helm list
- kubectl get svc
- kubectl get pvc
Resolução de Problemas
Application em OutOfSync ou Degraded
Se uma Application aparece com status OutOfSync ou Degraded:
-
Verifique os detalhes da Application:
Terminal inputargocd app get <nome-da-application> -
Verifique os eventos e logs dos pods:
Terminal inputkubectl describe pod <pod-name> -n <namespace>
kubectl logs <pod-name> -n <namespace> -
Tente sincronizar manualmente:
Terminal inputargocd app sync <nome-da-application>
O Argo CD não consegue aceder ao registry
Se o Argo CD apresenta erro ao tentar obter um chart do registry OCI:
-
Verifique se o repositório está registado corretamente:
Terminal inputargocd repo list -
Verifique as credenciais — elas podem ter expirado.
Volte a registar o repositório com as credenciais atualizadas:Terminal inputargocd repo add registry.tecnisys.com.br \
--type helm \
--name tdp-registry \
--enable-oci \
--username <utilizador> \
--password <palavra-passe> -
Verifique a conectividade do cluster com o registry:
Terminal inputkubectl run test-dns --rm -it --image=busybox -n <namespace> -- \
sh -c "nslookup registry.tecnisys.com.br"
Componentes com dependência do PostgreSQL falhando
Se Airflow, Superset, Ranger, OpenMetadata ou CloudBeaver apresentam falhas logo após a aplicação do App of Apps:
-
Verifique se o PostgreSQL está operacional:
Terminal inputkubectl get pods -n <namespace> | grep tdp-postgresql -
Se o PostgreSQL ainda não está
Running, aguarde.
OselfHealdo Argo CD tentará reconciliar os componentes dependentes automaticamente assim que o PostgreSQL ficar disponível. -
Para forçar a reconciliação manualmente:
Terminal inputargocd app sync tdp-airflow
Rollback de uma Application
O Argo CD mantém histórico de sincronizações.
Para reverter um componente a uma versão anterior:
-
Via interface web: selecione a Application → History and Rollback → escolha a revisão → clique em Rollback.
-
Via CLI:
Terminal input# Listar o histórico
argocd app history tdp-kafka
# Reverter para uma revisão específica
argocd app rollback tdp-kafka <revision-id>
Ao realizar rollback de um componente que depende do PostgreSQL, verifique se a versão do banco de dados é compatível com a versão do componente sendo revertido.
Forçar remoção de uma Application com problema
Para desinstalar e reinstalar uma Application específica:
argocd app delete <nome-da-application>
kubectl apply -f apps/<nome-da-application>.yaml
A exclusão de uma Application não remove os Persistent Volume Claims (PVCs) associados.
Para uma reinstalação limpa, exclua os PVCs manualmente:
kubectl delete pvc <pvc-name> -n <namespace>
Footnotes
-
OCI (Open Container Initiative) é o padrão moderno para armazenar não apenas imagens de contêiner, mas também pacotes Helm. Por isso, ao registar o registry, é necessário marcar a opção Enable OCI — sem ela, o Argo CD tentará tratar o endereço como um repositório Helm convencional baseado em
index.yamle a ligação falhará. ↩ -
Reconciliação automatica com o Git ↩