Saltar para o conteúdo principal
Versão 3.0

Integrações — OpenMetadata

ChartVersion3.0.1TypeapplicationAppVersion1.12.4
CompatibilidadeKubernetes1.32+OpenShift4.19+Rancher2.10.x+

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.

Segurança nas integrações

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.

Credenciais padrão de Superset e Airflow

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.

ArquivoIntegração habilitada
values-datasources-integration.yamlTodas as integrações de uma vez
values-trino-integration.yamlSomente Trino
values-clickhouse-integration.yamlSomente ClickHouse
values-superset-integration.yamlSomente Superset
values-airflow-integration.yamlSomente Airflow
values-kafka-integration.yamlSomente Kafka
Terminal input
# 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.

Ambiente de produção (TLS)

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"
note

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, annotations e securityContext

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.type para trocar o modo de execução
  • mantenha os parâmetros específicos alinhados ao modo escolhido
  • o modo airflow exige que o serviço Airflow esteja habilitado e acessível nas dependências do chart

Verificação

Após o Job concluir:

  1. Acesse a UI do OpenMetadata (porta-forward ou Ingress).
  2. Navegue até Settings → Services.
  3. Verifique os serviços registrados por tipo:
    • Databases: TDP ClickHouse, TDP Trino
    • Dashboards: TDP Superset
    • Pipelines: TDP Airflow
    • Messaging: TDP Kafka
  4. Para testar a conexão: abra o serviço, clique em Test Connection e confirme o sucesso.
  5. Para iniciar ingestão de metadados: abra o serviço, clique em Add Ingestion e configure o workflow.
Terminal input
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:

Terminal input
# 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"
note

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

Terminal input
kubectl -n <NAMESPACE> get jobs
kubectl -n <NAMESPACE> logs job/<RELEASE_NAME>-register-datasources
kubectl -n <NAMESPACE> describe job <RELEASE_NAME>-register-datasources
API REST do OpenMetadata

O job usa a API REST do OpenMetadata para registrar serviços. Endpoints principais:

  • POST /api/v1/services/databaseServices — criar serviço
  • PUT /api/v1/services/databaseServices — atualizar serviço
  • GET /api/v1/services/databaseServices/name/{name} — consultar por nome

Documentação completa: docs.open-metadata.org/swagger.html

SintomaCausa provávelCorreçã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 valoresConfirme username/password em datasourcesIntegration.openmetadata.auth
Job falha: "Secret not found"Secret do ClickHouse ausenteConfirme: kubectl get secret -n <NAMESPACE> tdp-clickhouse-tdp-user
Job falha: "Service unreachable"Hostname ou porta incorretosVerifique host/hostPort/bootstrapServers nos values
Serviço não aparece na UIJob não concluiu ou falhou silenciosamenteVerifique logs e status do Job