Configuração do Apache Ozone
O chart tdp-ozone implanta o Apache Ozone — armazenamento de objetos compatível com S3 — no Kubernetes para o TDP.
O que é o Apache Ozone?
O Apache Ozone é um sistema de armazenamento de objetos distribuído compatível com a API do S3 da Amazon.
No TDP Kubernetes, ele cumpre o papel do S3: é onde os dados ficam armazenados — arquivos Parquet, tabelas Delta Lake, tabelas Iceberg, logs, modelos.
A principal vantagem do Ozone sobre usar o S3 da Amazon diretamente é que ele roda dentro do cluster Kubernetes, eliminando a dependência de serviços externos e reduzindo latência e custo de transferência.
Consulte Apache Ozone — Conceitos para uma visão completa da ferramenta, sua arquitetura e funcionamento.
Como o Ozone se encaixa no TDP
O Ozone é usado como storage pelo Spark (via protocolo S3A), pelo Trino (via conector S3 nativo), e opcionalmente pelo ClickHouse.
Do ponto de vista das aplicações, o Ozone é transparente: elas apontam para s3a://bucket/caminho e o protocolo S3 cuida do resto.
Arquitetura do Ozone
O Ozone é composto por quatro serviços que precisam estar disponíveis para o cluster funcionar:
| Serviço | Função | Porta |
|---|---|---|
| S3 Gateway (REST) | Endpoint S3-compatível para leitura e escrita de dados | 9878 |
| S3 Gateway (Web UI) | Interface web de monitoramento do S3 Gateway | 19878 |
| Ozone Manager (OM) | Gerencia namespaces, volumes, buckets e metadados | 9874 |
| Storage Container Manager (SCM) | Gerencia onde os blocos de dados estão nos datanodes | 9876 |
| Recon | Interface administrativa e de monitoramento do cluster | 9888 |
Os datanodes são os nós que efetivamente armazenam os dados. O número de datanodes (ozone.datanode.replicas) determina a capacidade de storage e o fator de replicação suportado.
Instalação (OCI)
helm upgrade --install <release> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-ozone \
-n <namespace> --create-namespace \
-f meu-values.yaml
Componentes
O Apache Ozone é composto por quatro serviços, cada um com seu próprio Service e Ingress opcional:
| Serviço | Descrição | Porta padrão |
|---|---|---|
S3 Gateway REST (s3g-rest) | Endpoint S3-compatível para operações de dados | 9878 |
S3 Gateway Web UI (s3g-web) | Interface web do S3 Gateway | 19878 |
Ozone Manager (om) | Gerenciador de namespaces e metadados | 9874 |
SCM (scm) | Storage Container Manager | 9876 |
Recon (recon) | Interface de monitoramento e administração | 9888 |
Autenticação S3
O S3 Gateway utiliza autenticação AWS Signature v4 (modo simples, sem Kerberos).
Criar Secret de credenciais
kubectl -n <namespace> create secret generic ozone-s3-credentials \
--from-literal=aws_access_key_id="<AWS_ACCESS_KEY_ID>" \
--from-literal=aws_secret_access_key="<AWS_SECRET_ACCESS_KEY>"
Referencie o Secret no arquivo de valores do Helm, por exemplo:
ozone:
s3g:
auth:
enabled: true
secretName: "ozone-s3-credentials"
Configurar AWS CLI para acesso
aws configure set aws_access_key_id <AWS_ACCESS_KEY_ID>
aws configure set aws_secret_access_key <AWS_SECRET_ACCESS_KEY>
aws configure set region us-east-1
# Testar (use o host do Ingress ou o endpoint que você expôs)
aws s3 ls --endpoint-url=http://<s3-rest-host>
Persistência
Habilite persistência para os componentes que necessitam de armazenamento:
ozone:
datanode:
persistence:
enabled: true
storageClassName: "<storage-class>"
size: 100Gi
om:
persistence:
enabled: true
storageClassName: "<storage-class>"
size: 10Gi
scm:
persistence:
enabled: true
storageClassName: "<storage-class>"
size: 10Gi
Parâmetros principais
| Parâmetro | Descrição | Padrão |
|---|---|---|
ozone.enabled | Habilitar Ozone | true |
ozone.image.tag | Versão da imagem Ozone | 2.0.0 |
ozone.datanode.replicas | Número de datanodes | 3 |
ozone.om.replicas | Réplicas do Ozone Manager | 1 |
ozone.scm.replicas | Réplicas do SCM | 1 |
ozone.recon.replicas | Réplicas do Recon | 1 |
ozone.s3g.replicas | Réplicas do S3 Gateway | 1 |
ozone.s3g.auth.enabled | Habilitar autenticação S3 | true |
ozone.s3g.auth.secretName | Nome do Secret com credenciais S3 | ozone-s3-credentials |
ingress.s3g.rest.enabled | Habilitar Ingress do S3 Gateway REST | true |
ingress.s3g.web.enabled | Habilitar Ingress do S3 Gateway Web UI | true |
ingress.om.enabled | Habilitar Ingress do Ozone Manager | true |
ingress.scm.enabled | Habilitar Ingress do SCM | true |
Consulte a página Ingress — Apache Ozone para configurar a exposição externa de cada serviço.
O Apache Ozone é usado como storage S3-compatível por outros componentes TDP. Consulte Integrações — Apache Ozone para configurar Spark e Trino com Ozone.
Acesso via port-forward
# S3 Gateway REST
kubectl -n <namespace> port-forward svc/<release>-s3g-rest 9878:9878
# Ozone Manager UI
kubectl -n <namespace> port-forward svc/<release>-om 9874:9874
# Recon UI
kubectl -n <namespace> port-forward svc/<release>-recon 9888:9888
Desinstalação
helm uninstall <release> -n <namespace>