Integrações — OpenMetadata
Visão geral das integrações
O chart tdp-openmetadata pode usar um PostgreSQL externo (tdp-postgresql) como banco de metadados no lugar do MySQL interno — consulte Configuração do OpenMetadata.
O chart tdp-openmetadata pode executar um Job pós-install/upgrade que registra serviços externos no OpenMetadata quando datasourcesIntegration.enabled=true. O Job aguarda o OpenMetadata ficar pronto, autentica na API e registra os serviços habilitados.
Além disso, o OpenMetadata pode executar pipelines de ingestão em dois modos: por Kubernetes Jobs (padrão) ou por Airflow.
Para práticas de segurança específicas do job de datasources — uso de Secrets Kubernetes, RBAC, HTTPS e rotação de senhas — consulte Segurança — OpenMetadata.
Habilitar integrações por serviço
O job de registro executa durante o install/upgrade quando datasourcesIntegration.enabled: true.
Para registrar um serviço no OpenMetadata, habilite o bloco do serviço desejado e preencha os dados de conexão.
Os blocos individuais ficam desabilitados por padrão — apenas o serviço que você habilitar será registrado.
O bloco datasourcesIntegration.openmetadata define como o job autentica na API do OpenMetadata para realizar o registro.
Quando datasourcesIntegration.openmetadata.auth.passwordSecret.enabled: true, informe o nome do Secret e a chave da senha no arquivo de valores.
Superset e Airflow usam admin/admin como credenciais padrão no arquivo de valores de exemplo. Altere em produção via connection.username/connection.password nos values ou, preferencialmente, via Secret Kubernetes.
Arquivos de valores modulares
O chart disponibiliza arquivos de valores separados por serviço, que podem ser usados individualmente ou combinados em um mesmo comando Helm com múltiplas opções -f.
| Arquivo | Integração habilitada |
|---|---|
values-datasources-integration.yaml | Todas as integrações de uma vez |
values-trino-integration.yaml | Somente Trino |
values-clickhouse-integration.yaml | Somente ClickHouse |
values-superset-integration.yaml | Somente Superset |
values-airflow-integration.yaml | Somente Airflow |
values-kafka-integration.yaml | Somente Kafka |
# Somente Trino
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-openmetadata \
-n <NAMESPACE> -f values-trino-integration.yaml
# Trino + ClickHouse
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-openmetadata \
-n <NAMESPACE> -f values-trino-integration.yaml -f values-clickhouse-integration.yaml
# Todas as integrações de uma vez
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-openmetadata \
-n <NAMESPACE> -f values-datasources-integration.yaml
Configuração por serviço
Cada integração possui um campo enabled, campos serviceName/displayName (nome e rótulo visível na UI) e um bloco connection sob datasourcesIntegration.*.
Trino e ClickHouse
datasourcesIntegration:
enabled: true
openmetadata:
apiEndpoint: "http://<OPENMETADATA_SERVICE>.<NAMESPACE>.svc.cluster.local:8585/api"
auth:
provider: "basic"
username: "admin@open-metadata.org"
passwordSecret:
enabled: true
name: "<SECRET_NAME>"
key: "<SECRET_KEY>"
trino:
enabled: true
serviceName: "tdp-trino"
displayName: "TDP Trino"
connection:
host: "<TRINO_SERVICE>.<NAMESPACE>.svc.cluster.local"
port: 8080
username: "<USERNAME>"
scheme: "http"
clickhouse:
enabled: true
serviceName: "tdp-clickhouse"
displayName: "TDP ClickHouse"
connection:
host: "<CLICKHOUSE_SERVICE>.<NAMESPACE>.svc.cluster.local"
port: 8123
username: "<USERNAME>"
passwordSecret:
name: "<SECRET_NAME>"
key: "password"
scheme: "http"
O Secret do ClickHouse deve existir antes do deploy: o nome padrão é tdp-clickhouse-tdp-user, chave password.
Para ambientes com TLS, use scheme: "https" e a porta segura (ex.: 8443 para ClickHouse). Para Trino com TLS, defina scheme: "https" e ajuste a porta. Consulte Segurança — OpenMetadata para exemplos completos.
Superset
O Superset é registrado como Dashboard Service. O parâmetro hostPort inclui o protocolo e a porta.
datasourcesIntegration:
superset:
enabled: true
serviceName: "tdp-superset"
displayName: "TDP Superset"
connection:
hostPort: "http://tdp-superset.<NAMESPACE>.svc.cluster.local:8088"
username: "<USERNAME>"
password: "<PASSWORD>"
provider: "db"
verifySSL: "no-ssl"
Use provider: "ldap" se o Superset estiver configurado com LDAP. Para HTTPS, altere verifySSL para "validate" e configure o certificado.
Airflow
O Airflow é registrado como Pipeline Service. Use o endpoint da API do servidor Airflow.
datasourcesIntegration:
airflow:
enabled: true
serviceName: "tdp-airflow"
displayName: "TDP Airflow"
connection:
hostPort: "http://tdp-airflow-api-server.<NAMESPACE>.svc.cluster.local:8080"
numberOfStatus: 10
username: "<USERNAME>"
password: "<PASSWORD>"
verifySSL: "no-ssl"
Kafka
O Kafka é registrado como Messaging Service. Informe o endereço do bootstrap server; para múltiplos brokers, separe por vírgula.
datasourcesIntegration:
kafka:
enabled: true
serviceName: "tdp-kafka"
displayName: "TDP Kafka"
connection:
bootstrapServers: "<KAFKA_BOOTSTRAP_SERVICE>.<NAMESPACE>.svc.cluster.local:9092"
Para Kafka com autenticação SASL, configure também saslUsername, saslPassword, saslMechanism e securityProtocol no bloco connection.
Execução de pipelines: Airflow ou K8S
O OpenMetadata pode executar pipelines de ingestão usando dois modos:
- Kubernetes Jobs (
k8s): modo padrão, no qual os pipelines rodam como Jobs nativos no cluster, sem dependência de Airflow - Airflow (
airflow): modo em que os pipelines são executados por integração REST com o serviço Airflow
O modo de execução é controlado pelo campo pipelineServiceClientConfig.type, que aceita os valores k8s ou airflow.
Modo Kubernetes Jobs (type: k8s)
Quando o modo k8s está ativo, os pipelines são submetidos como Jobs Kubernetes. Os parâmetros mais comuns nesse cenário são:
- imagem utilizada na execução
- namespace onde os Jobs serão criados
- service account
- recursos de CPU e memória
- TTL e política de backoff
nodeSelector,annotationsesecurityContext
Modo Airflow (type: airflow)
Quando o modo airflow está ativo, o OpenMetadata delega a execução dos pipelines ao serviço Airflow. Os parâmetros mais comuns nesse cenário são:
- endpoint do Airflow
- usuário
- senha via Secret
- verificação SSL
Como alternar
- altere apenas o valor de
pipelineServiceClientConfig.typepara trocar o modo de execução - mantenha os parâmetros específicos alinhados ao modo escolhido
- o modo
airflowexige que o serviço Airflow esteja habilitado e acessível nas dependências do chart
Verificação
Após o Job concluir:
- Acesse a UI do OpenMetadata (porta-forward ou Ingress).
- Navegue até Settings → Services.
- Verifique os serviços registrados por tipo:
- Databases: TDP ClickHouse, TDP Trino
- Dashboards: TDP Superset
- Pipelines: TDP Airflow
- Messaging: TDP Kafka
- Para testar a conexão: abra o serviço, clique em Test Connection e confirme o sucesso.
- Para iniciar ingestão de metadados: abra o serviço, clique em Add Ingestion e configure o workflow.
kubectl -n <NAMESPACE> get jobs | grep register-datasources
kubectl -n <NAMESPACE> logs job/<RELEASE_NAME>-register-datasources
Re-executar o Job
O Job é um hook post-install/post-upgrade. Para re-executá-lo:
# Remover o Job existente
kubectl delete job -n <NAMESPACE> <RELEASE_NAME>-register-datasources
# Re-executar via helm upgrade (o hook recria o Job)
helm upgrade <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-openmetadata \
-n <NAMESPACE> \
-f <VALUES_FILE>
Habilitar e desabilitar serviços individualmente
Para desabilitar um serviço sem remover sua configuração:
datasourcesIntegration:
clickhouse:
enabled: false
trino:
enabled: true
superset:
enabled: true
Para desabilitar o Job inteiro (nenhum serviço é registrado):
datasourcesIntegration:
enabled: false
Configuração avançada do Job
Retentativas e TTL
datasourcesIntegration:
job:
backoffLimit: 5
ttlSecondsAfterFinished: 600
Imagem do Job
datasourcesIntegration:
job:
image:
repository: "docker.getcollate.io/openmetadata/ingestion"
tag: "1.12.4"
pullPolicy: "IfNotPresent"
Recursos do Job
datasourcesIntegration:
job:
resources:
requests:
cpu: 200m
memory: 512Mi
limits:
cpu: 1
memory: 1Gi
Autenticação JWT
Se o OpenMetadata estiver configurado com JWT em vez de autenticação básica, altere o provider no bloco de autenticação do job:
datasourcesIntegration:
openmetadata:
auth:
provider: "jwt"
# O Job deve ser ajustado para utilizar JWT tokens no lugar de usuário/senha
Exemplos de configuração
Ambiente de desenvolvimento
Configuração mínima para um ambiente local ou de desenvolvimento, com ClickHouse e Trino acessíveis no cluster, sem TLS e com credenciais simples no arquivo de valores:
datasourcesIntegration:
enabled: true
openmetadata:
apiEndpoint: "http://<RELEASE_NAME>.<NAMESPACE>.svc.cluster.local:8585/api"
auth:
provider: "basic"
username: "admin@open-metadata.org"
password: "admin"
clickhouse:
enabled: true
serviceName: "tdp-clickhouse"
displayName: "TDP ClickHouse"
connection:
host: "<CLICKHOUSE_SERVICE>.<NAMESPACE>.svc.cluster.local"
port: 8123
scheme: "http"
username: "tdpuser"
trino:
enabled: true
serviceName: "tdp-trino"
displayName: "TDP Trino"
connection:
host: "<TRINO_SERVICE>.<NAMESPACE>.svc.cluster.local"
port: 8080
scheme: "http"
username: "admin"
Ambiente de produção
Configuração para produção com TLS ativado, credenciais via Secrets Kubernetes e endpoint HTTPS do OpenMetadata:
datasourcesIntegration:
enabled: true
openmetadata:
apiEndpoint: "https://<OPENMETADATA_HOSTNAME>/api"
auth:
provider: "basic"
username: "admin@open-metadata.org"
passwordSecret:
enabled: true
name: "<SECRET_NAME>"
key: "password"
clickhouse:
enabled: true
serviceName: "tdp-clickhouse"
displayName: "TDP ClickHouse"
connection:
host: "<CLICKHOUSE_SERVICE>.<NAMESPACE>.svc.cluster.local"
port: 8443
scheme: "https"
username: "tdpuser"
passwordSecret:
name: "tdp-clickhouse-tdp-user"
key: "password"
trino:
enabled: true
serviceName: "tdp-trino"
displayName: "TDP Trino"
connection:
host: "<TRINO_SERVICE>.<NAMESPACE>.svc.cluster.local"
port: <SERVICE_PORT>
scheme: "https"
username: "admin"
superset:
enabled: true
serviceName: "tdp-superset"
displayName: "TDP Superset"
connection:
hostPort: "https://tdp-superset.<NAMESPACE>.svc.cluster.local:8088"
username: "admin"
passwordSecret:
name: "<SECRET_NAME>"
key: "password"
provider: "db"
verifySSL: "validate"
Em produção, nunca armazene senhas diretamente no arquivo de valores. Use sempre passwordSecret com referência a um Kubernetes Secret criado previamente.
Solução de problemas
kubectl -n <NAMESPACE> get jobs
kubectl -n <NAMESPACE> logs job/<RELEASE_NAME>-register-datasources
kubectl -n <NAMESPACE> describe job <RELEASE_NAME>-register-datasources
O job usa a API REST do OpenMetadata para registrar serviços. Endpoints principais:
POST /api/v1/services/databaseServices— criar serviçoPUT /api/v1/services/databaseServices— atualizar serviçoGET /api/v1/services/databaseServices/name/{name}— consultar por nome
Documentação completa: docs.open-metadata.org/swagger.html
| Sintoma | Causa provável | Correção |
|---|---|---|
| Job falha: "OpenMetadata not ready" | OpenMetadata ainda inicializando; o Job aguarda até 30 tentativas (aprox. 5 min) | Verifique pods: kubectl get pods -n <NAMESPACE> |
| Job falha: "Authentication error" | Credenciais incorretas no arquivo de valores | Confirme username/password em datasourcesIntegration.openmetadata.auth |
| Job falha: "Secret not found" | Secret do ClickHouse ausente | Confirme: kubectl get secret -n <NAMESPACE> tdp-clickhouse-tdp-user |
| Job falha: "Service unreachable" | Hostname ou porta incorretos | Verifique host/hostPort/bootstrapServers nos values |
| Serviço não aparece na UI | Job não concluiu ou falhou silenciosamente | Verifique logs e status do Job |