Přeskočit obsah

Helm Charts

Referenční příručka konfigurace Helm chartů MazeVault

Verze dokumentu: 1.0.46
Poslední aktualizace: 2026-06-08
Licenční úroveň: Enterprise


1. Přehled

MazeVault poskytuje customer Helm chart jako OCI artifact publikovaný do GHCR při každém release tagu vX.Y.Z.

Primární distribuční kanál:

  • oci://ghcr.io/mazevault/charts/mazevault-customer

Zdrojový chart zůstává v repozitáři maze-release v adresáři helm/mazevault-customer.

echo "$GITHUB_TOKEN" | helm registry login ghcr.io -u YOUR_GITHUB_USER --password-stdin

helm show chart oci://ghcr.io/mazevault/charts/mazevault-customer --version 1.2.3

helm upgrade --install mazevault oci://ghcr.io/mazevault/charts/mazevault-customer \
  --version 1.2.3 \
  -n mazevault \
  --create-namespace \
  -f values.customer.yaml

Začněte z helm/mazevault-customer/values.yaml a zákaznické hodnoty ukládejte do vlastního override souboru nebo GitOps repozitáře. V produkci vždy pinujte explicitní --version.

Strategie tagů image a pull preflight

  • Pro produkční nasazení preferujte explicitní release tagy (například v1.0.44) místo latest.
  • Před Helm upgradem spusťte pull preflight, aby byla dostupnost image ověřena ještě před samotným nasazením.
# Izolovaný Docker auth context bez vedlejších efektů lokálních přihlášení
TMP_DOCKER_CFG=$(mktemp -d)

# Ověření, že release tagy jsou v GHCR resolvable
DOCKER_CONFIG="$TMP_DOCKER_CFG" docker manifest inspect ghcr.io/mazevault/mazevault-backend:v1.0.44 >/dev/null
DOCKER_CONFIG="$TMP_DOCKER_CFG" docker manifest inspect ghcr.io/mazevault/mazevault-frontend:v1.0.44 >/dev/null
DOCKER_CONFIG="$TMP_DOCKER_CFG" docker manifest inspect ghcr.io/mazevault/mazevault-docs:v1.0.44 >/dev/null
DOCKER_CONFIG="$TMP_DOCKER_CFG" docker manifest inspect ghcr.io/mazevault/mazevault-ocsp:v1.0.44 >/dev/null

rm -rf "$TMP_DOCKER_CFG"

2. Reference hodnot (Values)

Globální nastavení

global:
  environment: "customer"
  rolloutNonce: ""
  workloadIdentity:
    enabled: true
    clientId: ""
  keyVault:
    enabled: true
    secretStore:
      vaultUrl: https://__SET_KEYVAULT_NAME__.vault.azure.net
      tenantId: ""
  ingress:
    enabled: true
    appHost: mazevault.example.com
    docsHost: docs.mazevault.example.com

Backend (API Server)

backend:
  replicaCount: 1                            # Zachovat single-writer semantiku backendu
  image:
    repository: "ghcr.io/mazevault/mazevault-backend"
    tag: "v1.0.44"                          # V zákaznickém prostředí preferujte pinned release tagy

  resources:
    requests:
      cpu: "500m"
      memory: "1Gi"
    limits:
      cpu: "2000m"
      memory: "4Gi"

  config:
    MAZEVAULT_CUSTOMER_NAME: __SET_CUSTOMER_NAME__
    MAZEVAULT_CUSTOMER_EMAIL: __SET_CUSTOMER_EMAIL__
    MAZEVAULT_COMPANY_ID: __SET_COMPANY_ID__
    MAZEVAULT_ENV: production
    LOG_LEVEL: info

  # Databázové a Redis runtime přihlašovací údaje se promítají přes generovaný runtime secret.

  # Health probes
  livenessProbe:
    httpGet:
      path: /api/v1/health
      port: 8080
    initialDelaySeconds: 30
    periodSeconds: 30

  readinessProbe:
    httpGet:
      path: /api/v1/health
      port: 8080
    initialDelaySeconds: 10
    periodSeconds: 10

Frontend (Webové rozhraní)

frontend:
  replicaCount: 1
  image:
    repository: "ghcr.io/mazevault/mazevault-frontend"
    tag: "v1.0.44"

  resources:
    requests:
      cpu: "100m"
      memory: "128Mi"
    limits:
      cpu: "500m"
      memory: "512Mi"

  urls:
    docs: "https://docs.mazevault.example.com"
    domain: "mazevault.example.com"

OCSP Responder

ocsp:
  enabled: true
  replicas: 1
  image:
    repository: "mazevault-ocsp"
    tag: "1.8.0"

  resources:
    requests:
      cpu: "200m"
      memory: "256Mi"
    limits:
      cpu: "1000m"
      memory: "1Gi"

  autoscaling:
    enabled: true
    minReplicas: 1
    maxReplicas: 5
    targetCPUUtilizationPercentage: 70

Ingress

ingress:
  enabled: true
  className: "nginx"
  annotations:
    cert-manager.io/cluster-issuer: "letsencrypt-prod"
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/proxy-body-size: "50m"

  hosts:
    - host: vault.example.com
      paths:
        - path: /api
          pathType: Prefix
          service: backend
        - path: /ocsp
          pathType: Prefix
          service: ocsp
        - path: /
          pathType: Prefix
          service: frontend

  tls:
    - secretName: mazevault-tls
      hosts:
        - vault.example.com

Monitoring

monitoring:
  serviceMonitor:
    enabled: true                            # Requires Prometheus Operator
    interval: 30s
    labels:
      release: prometheus

  prometheusRules:
    enabled: true
    rules:
      - alert: MazeVaultBackendDown
        expr: up{job="mazevault-backend"} == 0
        for: 5m
        labels:
          severity: critical
      - alert: MazeVaultHighErrorRate
        expr: rate(http_requests_total{status=~"5.."}[5m]) > 0.1
        for: 10m
        labels:
          severity: warning

3. Příklady pro jednotlivá prostředí

Produkce

# values-production.yaml
global:
  domain: "vault.company.com"
  tls:
    enabled: true

backend:
  replicas: 1
  resources:
    requests:
      cpu: "1000m"
      memory: "2Gi"
    limits:
      cpu: "4000m"
      memory: "8Gi"
  env:
    LOG_LEVEL: "warn"

frontend:
  replicas: 3
  autoscaling:
    enabled: true
    minReplicas: 3

monitoring:
  serviceMonitor:
    enabled: true

Staging

# values-staging.yaml
global:
  domain: "vault-staging.company.com"

backend:
  resources:
    requests:
      cpu: "500m"
      memory: "1Gi"
    limits:
      cpu: "2000m"
      memory: "4Gi"

frontend:
  replicas: 1
  autoscaling:
    enabled: false

4. Postup aktualizace

# Kontrola cílové verze chartu
helm show chart oci://ghcr.io/mazevault/charts/mazevault-customer --version 1.2.3

# Kontrola změn
helm diff upgrade mazevault oci://ghcr.io/mazevault/charts/mazevault-customer \
  --version 1.2.3 \
  -n mazevault -f values-production.yaml

# Provedení upgrade (pin verze)
helm upgrade --install mazevault oci://ghcr.io/mazevault/charts/mazevault-customer \
  --version 1.2.3 \
  -n mazevault -f values-production.yaml \
  --wait --timeout 10m

# Verify
kubectl get pods -n mazevault
kubectl exec -n mazevault deploy/mazevault-backend -- \
  wget -qO- http://localhost:8080/api/v1/health

5. Partner Onboarding Checklist (zkrácená verze)

Při onboarding partnera i před každým customer release ověřte minimálně následující body:

  • Verze a kompatibilita: chart verze odpovídá release (vX.Y.Z -> X.Y.Z), CI/CD používá pinned verzi.
  • ENV a secrets: povinné hodnoty jsou vyplněné, secret-only hodnoty nejsou v plaintext values.
  • AKS/ESO/Ingress: externí secret management a ingress/TLS model odpovídají prostředí.
  • Upgrade/rollback: partner má ověřený upgrade příkaz a rollback postup (helm rollback).
  • Smoke test: health endpoint, pody, ingress a externalsecret zdroje jsou po nasazení v pořádku.
  • Security: partner ověřuje původ artefaktů a checksum/signature dle interní politiky.

Detailní checklist pro release maintainery a partner handover je v repozitáři maze-release v souboru CUSTOMER_RELEASE_CHECKLIST.md.

Související