Instalação via Argo CD
Antes de começar, confirme que os pré-requisitos foram atendidos.
Se o Argo CD ainda não estiver instalado, o Passo 4 abaixo (Opção A, deploy.sh --install) o instala automaticamente — junto com o bootstrap do GitOps. Se já estiver instalado, use a Opção B (deploy.sh -c).
Para instalar os componentes manualmente, sem GitOps, consulte a instalação via Helm.
Visão geral
O Argo CD instala componentes a partir de arquivos YAML chamados Applications. Cada componente do TDP — PostgreSQL, Kafka, Airflow, Trino, etc. — é representado por um arquivo Application que instrui o Argo CD a baixar o chart correspondente do registry da Tecnisys e instalá-lo no cluster.
Esses arquivos ficam em um repositório Git. O Argo CD monitora esse repositório continuamente e sincroniza o estado do cluster com o que está declarado — sem precisar rodar comandos a cada mudança.
Diferença entre instalação com Argo CD e Helm
| Critério | Helm CLI | Argo CD (GitOps) |
|---|---|---|
| Rastreabilidade | Comandos manuais, sem histórico automático | Cada mudança fica registrada 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 |
Estrutura do repositório GitOps
A implementação atual utiliza uma estrutura de diretórios otimizada para GitOps:
tdp-gitops/
├── common/ # Recursos de bootstrap (AppProject, Secrets, App of Apps)
│ ├── argo-gitops-appproject.yaml
│ ├── argo-gitops-app-of-apps.yaml
│ ├── tdp-devops-repo-secret.yaml
│ └── tdp-registry-secret.yaml
├── available/ # Templates das Applications (com variáveis)
│ ├── tdp-postgresql/
│ │ ├── tdp-postgresql.yaml
│ │ └── values.yaml
│ ├── tdp-kafka/
│ └── ...
├── current/ # Manifests renderizados (commitados no git)
│ ├── common/
│ ├── tdp-postgresql/
│ └── ...
├── variables.env # Variáveis de ambiente (não commitar)
├── deploy.sh # Script de automação
└── README.md
Como funciona:
available/contém templates com variáveis (${VAR}) — nunca aplicados diretamente.deploy.shrenderizaavailable/+common/→current/substituindo as variáveis.current/é commitado no git e monitorado pelo App of Apps do Argo CD.common/contém os recursos de bootstrap (AppProject, Secrets, App of Apps).
Conceitos essenciais
Manifest: Um arquivo 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.
Application: O objeto central do Argo CD. Orienta o Argo CD a baixar um determinado chart Helm do Registry e instalá-lo em um determinado namespace do cluster. Cada componente do TDP é representado por uma Application separada.
Repository (no contexto do Argo CD): A origem dos artefatos que o Argo CD irá utilizar. Pode ser um repositório Git (onde ficam os manifests) ou um registry OCI1 (onde ficam os Helm Charts da Tecnisys).
Sincronização: O processo pelo qual o Argo CD compara o estado declarado nos manifests com o estado real do cluster e aplica as mudanças necessárias.
App of Apps: Um padrão que permite gerenciar todos os componentes com uma única Application raiz, que descobre e instala automaticamente todas as demais.
Ordem de instalação
Quando o App of Apps é aplicado, o Argo CD tenta sincronizar todos os componentes ao mesmo tempo.
Por isso, é importante que os componentes sem dependências estejam estáveis antes que os dependentes tentem se conectar a eles.
A tabela abaixo indica essa ordem e as dependências de cada chart:
| Ordem | Chart | Componente | Versão | Dependências |
|---|---|---|---|---|
| 1 | tdp-postgresql | PostgreSQL | 17.5.0 | Nenhuma |
| 2 | tdp-kafka | Kafka (Strimzi) | 4.1.0 | tdp-crds (Strimzi CRDs) |
| 3 | tdp-hive-metastore | Hive Metastore | 4.0.0 | tdp-postgresql |
| 4 | tdp-deltalake | Delta Lake | 4.0.1 | 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.2 | Nenhuma |
| 10 | tdp-trino | Trino | 478 | Nenhuma |
| 11 | tdp-airflow | Airflow | 3.0.2 | tdp-postgresql |
| 12 | tdp-jupyter | JupyterHub | 5.3.0 | tdp-postgresql |
| 13 | tdp-clickhouse | ClickHouse | 25.8.11.66 | tdp-crds (Altinity CRDs) |
| 14 | tdp-cloudbeaver | CloudBeaver | 25.3.0 | tdp-postgresql |
| 15 | tdp-openmetadata | OpenMetadata | 1.12.4 | 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.1 para todos os charts TDP.
Pré-requisitos
| Ferramenta | Obrigatório para |
|---|---|
kubectl (configurado para o cluster) | deploy, bootstrap |
envsubst (pacote gettext) | renderização de templates |
git | modo GitOps (push de current/) |
helm | bootstrap do Argo CD (--install) |
- Passos para Instalação
- Verificação da Instalação
- Resolução de Problemas
- Atualizar Versão dos Charts
- Comandos
- Vídeos
Passo 1 – Obter o repositório GitOps
Clone (ou faça fork) do repositório GitOps e entre na pasta:
git clone <GITOPS_REPO_URL>
cd tdp-gitops

Passo 2 – Configurar variáveis de ambiente
Copie o arquivo de referência e edite com seus valores:
cp variables.env variables.env.local
vim variables.env.local
Variáveis obrigatórias em variables.env.local:
# Namespace onde o Argo CD está instalado
ARGOCD_NAMESPACE=argocd
# Namespace alvo dos pods TDP
TDP_NAMESPACE=<NAMESPACE>
# Namespace onde as Applications Argo CD são criadas
TDP_PROJECT_NAMESPACE=<NAMESPACE>
# Nome da Application "App of Apps"
TDP_APPLICATIONS=argo-gitops-tdp-project
# URL deste repositório git (usado pelo Argo CD para monitorar current/)
GIT_REPO_URL=<GITOPS_REPO_URL>
GIT_REPO_USER=<GIT_USERNAME>
GIT_REPO_TOKEN_OR_PASS=<GIT_TOKEN>
# Helm OCI registry com os charts TDP
HELM_CHART_REPO_URL=registry.tecnisys.com.br/tdp/charts
HELM_CHART_VERSION=<TDP_K8S_RELEASE>
# Servidor Kubernetes (usar padrão para in-cluster)
KUBERNETES_SERVER=https://kubernetes.default.svc
# Credenciais do Helm OCI registry
TECNISYS_HELM_REGISTRY_USER=<REGISTRY_USERNAME>
TECNISYS_HELM_REGISTRY_TOKEN=<REGISTRY_CLI_SECRET>
Use em HELM_CHART_VERSION a versão da release atual: 3.0.1.
variables.env.local está no .gitignore — nunca commite tokens ou senhas.
Passo 3 – Configurar o Argo CD para gerenciar Applications em namespace separado
As Applications ficam no namespace <NAMESPACE> (definido em TDP_PROJECT_NAMESPACE), não no namespace argocd.
Configure o Argo CD para gerenciar esse namespace por meio do parâmetro application.namespaces — consulte Configuração do Argo CD → Application namespaces.
Passo 4 – Bootstrap do Argo CD
O script deploy.sh automatiza a instalação do Argo CD e o bootstrap do GitOps.
Opção A: Bootstrap completo — instala o Argo CD (recomendado)
Instala o Argo CD (tdp-crds + tdp-argo) via Helm OCI, aguarda os pods prontos, renderiza os templates e aplica os recursos comuns:
./deploy.sh --install -v variables.env.local
O que é executado:
helm registry login→ autentica no OCI registryhelm upgrade --install tdp-crds→ instala os CRDs do Argo CDhelm upgrade --install tdp-argo→ instala o Argo CDkubectl rollout status→ aguardaargocd-servereapplication-controllerenvsubstem todos os templates → populacurrent/kubectl applynos arquivos decurrent/common/:argo-gitops-appproject.yaml— AppProject TDPtdp-devops-repo-secret.yaml— credencial git para o Argo CDtdp-registry-secret.yaml— credencial do Helm OCI registryargo-gitops-app-of-apps.yaml— Application "App of Apps"
