Files

5.1 KiB

unionflow-server-impl-quarkus-k1

Repo de déploiement pour UnionFlow Server (backend Quarkus) sur le cluster k1.

Qu'est-ce que ce repo ?

Ce repo contient uniquement la configuration de déploiement (Helm values) pour UnionFlow Server sur le cluster k1. Le code source de l'application est dans un autre repo : unionflow-server-impl-quarkus.

Ce repo consomme le chart parent helm-chart-lions-app et fournit juste les overrides spécifiques à UnionFlow.

┌────────────────────────────────────┐
│  unionflow-server-impl-quarkus     │  ← Code source (Maven, Java 21, Quarkus)
│  (le repo du code)                 │
└────────────────────────────────────┘
                │ lionsctl pipeline
                │ build + docker push
                ▼
┌────────────────────────────────────┐
│  registry.lions.dev/lionsdev/      │
│  unionflow-server-impl-quarkus     │  ← Image Docker buildée
│  :1.0.5-20260418-081420            │
└────────────────────────────────────┘
                │ lionsctl pipeline
                │ update values.yaml tag
                │ commit + push
                ▼
┌────────────────────────────────────┐
│  unionflow-server-impl-quarkus-k1  │  ← CE REPO (deploy config)
│  ├── Chart.yaml                    │
│  └── values.yaml                   │
└────────────────────────────────────┘
                │ helm upgrade --install
                ▼
┌────────────────────────────────────┐
│  K8s cluster k1 (namespace         │
│  applications)                     │
└────────────────────────────────────┘

Déploiement manuel

# Depuis le répertoire du repo
helm dependency update .

helm upgrade --install unionflow-server-impl-quarkus . \
  --namespace applications \
  --create-namespace \
  --wait \
  --timeout 5m

Déploiement via lionsctl (attendu)

lionsctl pipeline \
  -u https://git.lions.dev/lionsdev/unionflow-server-impl-quarkus \
  -b main -j 21 -e production -c k1 -p prod \
  -m admin@lions.dev

Sous le capot, lionsctl :

  1. Clone le repo du code source
  2. mvn package (Dagger container)
  3. docker build + push → registry.lions.dev/lionsdev/unionflow-server-impl-quarkus:<tag>
  4. Clone CE REPO (-k1 dérivé du nom de l'app + cluster)
  5. Update values.yaml : lions-app.image.tag: <new-tag>
  6. Commit + push avec le compte lionsctl-bot
  7. helm upgrade --install ...
  8. Health check + email

Validation locale

# Lint
helm lint .

# Dry-run rendu des manifests
helm template test . \
  --namespace applications \
  --debug

# Diff avec l'état live (requires helm-diff plugin)
helm diff upgrade unionflow-server-impl-quarkus . \
  --namespace applications

Secrets attendus dans Vault

Avant le premier déploiement, peupler Vault :

# Credentials DB (partagés avec lions-shared-db-secret actuel)
vault kv put lions/applications/unionflow-server/db \
  username=lionsuser \
  password=<mot-de-passe-fort>

# Credentials Keycloak OIDC
vault kv put lions/applications/unionflow-server/oidc \
  client-secret=<secret-keycloak> \
  admin-service-secret=<admin-service-secret>

L'ExternalSecret synchronisera ces valeurs vers le K8s Secret unionflow-server-impl-quarkus-secrets toutes les 1h (configurable via refreshInterval).

Environnement

  • Cluster : k1 (176.57.150.2)
  • Namespace : applications
  • Hostname : api.lions.dev/unionflow
  • Image : registry.lions.dev/lionsdev/unionflow-server-impl-quarkus
  • Ingress : TLS Let's Encrypt, path-strip /unionflow → backend
  • Secrets : Vault lions/applications/unionflow-server/*
  • DB : PostgreSQL unionflow-server-impl-quarkus sur postgresql-service.postgresql
  • Messaging : Kafka kafka-service.kafka port 9092

Conventions

  • Le nom du Helm release = unionflow-server-impl-quarkus (correspond au nom de l'app et de l'image)
  • Le namespace = environnement (applications pour prod)
  • L'image tag est automatiquement mis à jour par lionsctl pipeline à chaque déploiement
  • Ne jamais mettre de secrets en clair dans values.yaml — toujours via ExternalSecret + Vault

Lien vers les docs