Configuração do NiFi
O chart tdp-nifi implanta o Apache NiFi com o operador NiFiKop e ZooKeeper.
Na operação diária, quem mantém o NiFi lida com um cluster declarado no CRD NifiCluster: alterações em ZooKeeper, certificados TLS, listeners ou Ingress repercutem diretamente na coordenação entre nós e na URL que os usuários utilizam para acessar a interface. O operador reconcilia o estado desejado — se o CRD estiver inconsistente ou um pré-requisito (por exemplo cert-manager) falhar, o sintoma costuma ser NifiCluster preso em estado intermediário em vez de um único Pod com erro genérico.
Visão geral
| Propriedade | Valor |
|---|---|
| Chart | tdp-nifi |
| Versão do NiFi | 1.28.0 |
| Versão do chart | 3.0.1 |
| Operador | NiFiKop |
| Coordenação | ZooKeeper embutido como subchart |
| Recurso principal | NifiCluster |
| Recursos suportados | LDAP, S3, Ingress e Gateway API |
| Acesso padrão | Service NodePort para a UI do NiFi |
Páginas relacionadas
- Segurança — NiFi — LDAP, TLS, modos de segurança e autorização Ranger
- Integrações — NiFi — registro da integração com Apache Ranger
- Exposição externa: Ingress e Gateway API — exposição HTTP/HTTPS da UI
O que é o NiFiKop?
O NiFiKop é um operador Kubernetes especializado no ciclo de vida de clusters Apache NiFi.
Em vez de gerenciar instâncias NiFi manualmente, você descreve o estado desejado em um recurso Kubernetes chamado NifiCluster, e o NiFiKop cuida de criar, monitorar e atualizar os nós NiFi de forma declarativa.
O chart tdp-nifi implanta tanto o operador NiFiKop quanto o cluster NiFi em si, incluindo:
| Componente | Função |
|---|---|
| NiFiKop Operator | Gerencia o ciclo de vida do NifiCluster (CRD) |
| ZooKeeper | Coordenação de cluster entre os nós NiFi |
| NifiCluster | Recurso que define o cluster: nós, listeners, serviços externos |
| cert-manager | Emite certificados TLS para comunicação segura entre nós (quando webhook.enabled=true) |
Esse modelo baseado em operador significa que a maioria das configurações do NiFi vai para nifiCluster.* em vez de parâmetros Helm diretos — o operador traduz esses valores em ConfigMaps, Secrets e Pods com a configuração correta do NiFi.
NiFi Cluster
O NiFi é implantado por meio de um recurso customizado NifiCluster. A configuração principal do cluster fica sob nifiCluster, incluindo nós, grupos de configuração, serviços externos, listeners, storage e segurança.
O chart padrão inicia com um único nó (nifiCluster.nodes contém apenas id: 1). Para executar nós adicionais, adicione entradas como id: 2 e id: 3, apontando para o nodeConfigGroup desejado no arquivo de valores ou via --set nifiCluster.nodes[1].id=2:
nifiCluster:
nodes:
- id: 1
nodeConfigGroup: "default_group"
- id: 2
nodeConfigGroup: "default_group"
- id: 3
nodeConfigGroup: "default_group"
ZooKeeper
O ZooKeeper é implantado como subchart e usado pelo NiFi para coordenação do cluster. Em instalações pequenas, o valor padrão zookeeper.replicaCount: 1 atende cenários simples; para ambientes de maior criticidade, ajuste réplicas, persistência e recursos conforme a política do cluster.
Consulte Apache NiFi — Conceitos para uma visão completa da ferramenta, sua arquitetura e funcionamento.
Estrutura de valores (Helm)
O chart tdp-nifi distribui a configuração nos blocos abaixo:
tdp-nifi:— habilitação do chart.global:— configurações globais compartilhadas por dependências.cert-manager:— subchart opcional usado quando o webhook do NiFiKop exige certificados.zookeeper:— ZooKeeper usado para coordenação do cluster NiFi.nifikop:— operador NiFiKop, incluindo imagem, webhook, cert-manager e recursos.nifiCluster:— definição principal do cluster NiFi: segurança, configuração somente leitura, serviços, nós, listeners, storage e autorização.TDP-Settings:,ingress:egatewayApi:— controle de exposição da UI por Ingress ou Gateway API.
tdp-nifi:
enabled: true
cert-manager:
enabled: false
zookeeper:
replicaCount: 1
nifikop:
enabled: true
webhook:
enabled: false
nifiCluster:
nodes:
- id: 1
nodeConfigGroup: "default_group"
TDP-Settings:
gateway:
ingress:
enabled: false
gatewayApi:
enabled: false
Imagens do NiFi
As imagens do NiFi são unificadas no registry registry.tecnisys.com.br/tdp/images/nifi, com uma variante de tag por plataforma (base 1.28.0):
| Plataforma | Tag da imagem |
|---|---|
| Kubernetes | 1.28.0-0 |
| OpenShift | 1.28.0-openshift |
Defina a imagem do cluster em nifiCluster.clusterImage:
nifiCluster:
clusterImage: "registry.tecnisys.com.br/tdp/images/nifi:1.28.0-0"
Pré-requisitos
- Kubernetes 1.32+, Red Hat OpenShift 4.19+ ou Rancher Manager 2.10.x+
- Helm 3.2.0+
Recursos opcionais
- Ingress Controller — necessário apenas quando
ingress.enabled=true. - cert-manager — necessário apenas quando
nifikop.webhook.enabled=true.
- Com
ingress.enabled=true, o host configurado emingress.rulessó recebe tráfego quando há um Ingress Controller disponível no cluster. - Com
nifikop.webhook.enabled=true, os controllers do cert-manager precisam estar instalados e em execução para que o webhook do NiFiKop consiga emitir certificados.
CRDs do NiFiKop e cert-manager (tdp-crds)
Antes da primeira instalação do tdp-nifi, instale o chart tdp-crds, que entrega os CRDs usados pelo NiFiKop e, quando aplicável, os CRDs do cert-manager:
helm upgrade --install tdp-crds \
oci://registry.tecnisys.com.br/tdp/charts/tdp-crds \
--namespace tdp --create-namespace
Quando nifikop.webhook.enabled=true, além dos CRDs, os controllers do cert-manager também precisam estar instalados e em execução (cert-manager, cainjector e webhook). Se os controllers ainda não estiverem instalados, instale o cert-manager antes de habilitar o webhook do NiFiKop. Consulte Segurança — NiFi para detalhes.
OpenShift: runAsUser e fsGroup
No OpenShift, o SCC restricted exige que os pods executem com UID/GID atribuído ao namespace. Antes do deploy, obtenha o intervalo de UID do namespace e configure:
uid=$(kubectl get namespace <NAMESPACE> -o=jsonpath='{.metadata.annotations.openshift\.io/sa\.scc\.supplemental-groups}' | sed 's/\/10000$//' | tr -d '[:space:]')
Aplique no deploy:
helm upgrade --install tdp-nifi oci://registry.tecnisys.com.br/tdp/charts/tdp-nifi \
-n <NAMESPACE> --create-namespace \
--set nifiCluster.nodeConfigGroups.default_group.runAsUser="${uid}" \
--set nifiCluster.nodeConfigGroups.default_group.fsGroup="${uid}"
Ou no values.yaml:
nifiCluster:
nodeConfigGroups:
default_group:
runAsUser: "<UID>"
fsGroup: "<UID>"
- Instalação
- Parâmetros principais
- Detalhes de configuração
- Acesso & Segurança
- Solução de problemas
- Desinstalação
Instalação (OCI)
helm upgrade --install <RELEASE_NAME> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-nifi \
-n <NAMESPACE> --create-namespace
Parâmetros principais
| Parâmetro | Descrição | Padrão (referência) |
|---|---|---|
tdp-nifi.enabled | Habilitar o chart | true |
zookeeper.replicaCount | Réplicas ZooKeeper | 1 |
zookeeper.persistence.storageClass | StorageClass do ZooKeeper | local-path |
zookeeper.persistence.size | Tamanho do volume do ZooKeeper | 4Gi |
nifikop.enabled | Operador NiFiKop | true |
nifikop.watchOwnNamespace | Watch só no namespace do release | true |
nifikop.webhook.enabled | Webhook do operador | false |
nifikop.certManager.enabled | cert-manager para webhook | false |
nifiCluster.zkAddress | Endereço ZooKeeper | <RELEASE_NAME>-zookeeper:2181 |
nifiCluster.externalServices[0].spec.type | Tipo do serviço NiFi | NodePort |
nifiCluster.externalServices[0].spec.portConfigs[0].port | Porta HTTP dos nós NiFi | 8080 |
nifiCluster.nodeConfigGroups.default_group.resourcesRequirements | Recursos (CPU/memória) dos nós NiFi | execute helm show values |
ingress.enabled | Criar Ingress | false |
ingress.rules[0].host | Host do Ingress | nifi.tdp.local |
ingress.ingressClassName | Classe do Ingress | nginx |
TDP-Settings.gateway.ingress.enabled | Habilita Ingress | false |
TDP-Settings.gateway.gatewayApi.enabled | Habilita Gateway API (HTTPRoute) | false |
gatewayApi.nifi.enabled | Habilita HTTPRoute para o NiFi | false |
gatewayApi.nifi.hostnames[0] | Hostname do HTTPRoute | nifi.tdp.local |
Ajuste imagens, recursos, NifiCluster, listeners e health checks no arquivo de valores; a lista completa de chaves está em helm show values.
Personalização de propriedades do NiFi
É possível personalizar propriedades do NiFi adicionando nifiProperties.overrideConfigs em nifiCluster.readOnlyConfig. Isso permite ajustar persistência, desempenho e outras configurações específicas do NiFi.
Exemplo:
nifiCluster:
readOnlyConfig:
nifiProperties:
overrideConfigs: |
nifi.flowfile.repository.checkpoint.interval=5 mins
Casos de uso comuns:
- Ajustar intervalos de checkpoint
- Configurar implementação do repositório de provenênça
- Ajustar configurações do repositório de conteúdo
- Reduzir E/S de disco em ambientes de desenvolvimento
Algumas propriedades podem afetar a persistência de dados ou o desempenho. Revise a documentação do NiFi antes de aplicar em ambientes de produção.
Acesso
Por padrão, o chart expõe a UI do NiFi por um Service do tipo NodePort, normalmente chamado tdp-nifi-service. Esse acesso é útil para validação inicial, laboratórios ou ambientes em que o tráfego direto por IP de nó é permitido.
kubectl -n <NAMESPACE> get svc tdp-nifi-service
kubectl get nodes -o wide
A URL segue o formato:
http://<NODE_IP>:<NODE_PORT>/nifi
Port-forward
kubectl port-forward svc/tdp-nifi-service 8080:8080 -n <NAMESPACE>
Abra http://localhost:8080/nifi.
Exposição externa
Para exposição externa por Ingress ou Gateway API, consulte Exposição externa — NiFi. Essa página concentra os exemplos completos para Kubernetes padrão, OpenShift, HTTPS e Gateway API.
Solução de problemas
Quando a UI não abre mas os Pods parecem Running, verifique primeiro o NifiCluster (describe) e eventos do namespace: o operador costuma registrar falhas de listener, TLS ou ZooKeeper antes que o serviço HTTP responda. Comandos abaixo ajudam a correlacionar fase do CRD, eventos e estado dos *workloads`.
kubectl -n <NAMESPACE> get pods
kubectl -n <NAMESPACE> get nificlusters
kubectl -n <NAMESPACE> describe nificluster <CLUSTER_NAME>
kubectl -n <NAMESPACE> get events --sort-by=.lastTimestamp
kubectl -n <NAMESPACE> logs <POD_NAME> -f
Desinstalação
helm uninstall <RELEASE_NAME> -n <NAMESPACE>
O chart inclui um hook pre-delete que remove o CR NifiCluster e seus finalizadores antes de o Helm desinstalar o operador. Isso evita que o CR fique preso em estado Terminating.
Para evitar perda de dados ao desinstalar em produção, defina reclaimPolicy: Retain nos PVCs de dados:
nifiCluster:
nodeConfigGroups:
default_group:
storageConfigs:
- name: flowfile-repository
reclaimPolicy: Retain
- name: content-repository
reclaimPolicy: Retain
- name: provenance-repository
reclaimPolicy: Retain