Files

134 lines
5.1 KiB
Markdown

# 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`](https://git.lions.dev/lionsdev/unionflow-server-impl-quarkus).
Ce repo consomme le chart parent [`helm-chart-lions-app`](https://git.lions.dev/lionsdev/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
```bash
# 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)
```bash
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
```bash
# 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 :
```bash
# 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
- [Chart parent helm-chart-lions-app](https://git.lions.dev/lionsdev/helm-chart-lions-app)
- [UnionFlow source code](https://git.lions.dev/lionsdev/unionflow-server-impl-quarkus)
- [Lions Infrastructure](https://git.lions.dev/lionsdev/lions-infrastructure-2025)