Closed
Milestone
started on Mar 7, 2022
libre.sh v0.1.0
Milestone ID: 36
Périmètre
Cette version a pour objectif de déployer une application (HedgeDoc ?) à partir d'un CRD k8s.
Nous nous concentrons donc uniquement sur le controller, et la chart helm de l'application.
CRDs
Instance
apiVersion: "libre.sh/v1alpha1"
kind: Instance
metadata:
name: liiib-re
namespace: liiib-re
spec:
configFrom:
- name: liiibre-base
type: ConfigMap
config:
domain: liiib.re
applications:
pad:
enabled: true
Application
apiVersion: "libre.sh/v1alpha1"
kind: Application
metadata:
name: hedgedoc
namespace: libre-system
spec:
chart:
chart: hedgedoc
version: ">=9.0.0"
sourceRef:
kind: HelmRepository
name: indiehosters
namespace: libre-system
capabilities:
oidc: true
postgres: true
mongo: false
bucket: true
Configurations
controller
sso:
url: "https://id.indie.host"
user:
realm: master
secretRef:
name: keycloak-admin
objectStore:
url:
secretRef:
name: minio-admin
defaultConfigFrom:
- type: ConfigMap
name: default-config
instance
sso:
enabled: true
realm:
...RealmConfig
applications:
chat:
enabled: true
application:
name: rocketchat
namespace: libre-system
nuage:
enabled: true
application:
name: nextcloud
namespace: libre-system
values:
replicas: 3
pad:
enabled: false
application:
name: hedgedoc
namespace: libre-system
Arbre de valeurs
Instance config
Patches:
- controllerConf.defaultConfigFrom
- instancecConf.configFrom
- instanceConf.config
Helm values
Patches:
- root.libre: Valeurs standards générées par le controller
- root: "Instance Config".applications.*.values
Processus
Création
- Une ressource intance est crée.
- Le controller créer un realm et admin de realm grâce à sa config.
- Le controller créer un secret avec les credentials du realm dans le namespace de l'instance.
- La réconciliation est lancée.
Réconciliation
- Realm
- Génération de la config de realm en fonction de la configuration de l'instance.
- Ajout des clients à configuration de realm en fonction.
- Application de la configuration de realm.
- Buckets
- Génération de la liste de buckets nécessaires
- Création des buckets manquants
- Base de données (postgres/mongo)
- Génération de la ressource de bdd.
- Application de la ressource.
- HelmRelease
- Génération de la ressource ConfigMap de values.yml.
- Application de la ressource.
- Génération de la ressource HelmRelease.
- Application de la ressource.
Notes :
- NC suspend cron before upgrade