Saltar al contenido principal

Despliegue con Kubernetes (Helm)

Para producción a escala (múltiples nodos, alta disponibilidad, autoescalado), el CentralOps trae un Helm chart que aprovisiona la API, el frontend, los workers de recolección (Celery), el planificador, además de HPA (autoescalado), PDB (disponibilidad durante el mantenimiento) y NetworkPolicies. Es el mismo artefacto Docker de Docker Compose — solo cambia la orquestación.

Cuándo usarlo

Elige Kubernetes cuando necesites escala horizontal, resiliencia multi-nodo o integración con un clúster existente. Para 1 servidor, Docker Compose es más simple.

Requisitos previos

  • Un clúster de Kubernetes 1.27+ con acceso a kubectl.
  • Helm 3.9+.
  • Un Postgres y un Redis — gestionados (recomendado) o dentro del clúster.

Paso a paso

1. Prepara los valores

Crea un values.override.yaml con lo mínimo para tu entorno:

image:
repository: ghcr.io/segark-oficial/centralops
tag: "v1.0.0" # fixe uma tag imutável em produção

frontendImage:
repository: ghcr.io/segark-oficial/centralops-frontend
tag: "v1.0.0"

# Segredos essenciais (use um Secret existente em produção)
config:
appEnv: production
# APP_MASTER_KEY e a URL do banco devem vir de um Secret — ver "Segredos" abaixo.

postgres:
# aponte para o seu Postgres gerido
host: postgres.exemplo.internal
database: centralops

autoscaling:
enabled: true
minReplicas: 2
maxReplicas: 6

2. Instala

kubectl create namespace centralops
helm install centralops kubernetes/helm/centralops \
--namespace centralops \
-f values.override.yaml

3. Verifica

kubectl -n centralops rollout status deploy/centralops-api
kubectl -n centralops get pods
kubectl -n centralops port-forward svc/centralops-api 8080:80 &
curl -fsS http://localhost:8080/readyz

Secretos esenciales

Nunca coloques secretos en el values.yaml. Crea un Secret y referéncialo:

kubectl -n centralops create secret generic centralops-secrets \
--from-literal=APP_MASTER_KEY="<chave-de-32+-caracteres>" \
--from-literal=DATABASE_URL="postgresql+psycopg2://user:senha@host:5432/centralops"
ClavePara qué sirve
APP_MASTER_KEYClave maestra de cifrado de los secretos de integración (≥ 32 caracteres).
DATABASE_URLConexión con el Postgres de producción.
POSTGRES_PASSWORDSi usas el Postgres in-cluster del chart.

La referencia completa de variables está en Configuración.

Recursos que entrega el chart

  • API + frontend + workers Celery + beat como Deployments separados (release desacoplado de la UI).
  • HPA para escalar la API/workers por CPU.
  • PodDisruptionBudget para no derribar todas las réplicas durante el mantenimiento.
  • NetworkPolicies que restringen el tráfico entre componentes.
  • License keyring (ConfigMap con claves públicas) para verificar la licencia Enterprise offline — ver Ediciones y Upgrade.

Próximos pasos