Déploiement avec Kubernetes
Chaque module d'Open ENT v3 est déployé sous forme d'un container avec ce déploiment. Chaque module est appelé par une url différentes
Le reverse proxy Ingress avec Nginx ou Traefik assure la distribution vers les différents containers suivant l'appel.
Déploiement avec Helm
Helm est un gestionnaire de packages pour Kubernetes, qui facilite le déploiement et la gestion d'applications dans un cluster Kubernetes.
Un Helm Chart 'openent' est disponible avec de nombreux paramètres de configuration. Un Helm Chart est un ensemble de fichiers qui définissent et configurent une application Kubernetes. Helm utilise ces charts pour déployer et gérer des applications dans un cluster Kubernetes.
Installer Helm pour assurer le déploiement.
A partir du répertoire './helm' d'open-ent, lancer la commande du script
./helm-upgrade.sh 1.0.1
ou bien
helm install openent . --set namespace=openent
Dans ce cas le fichier values.yaml est utilisé
Paramétrages du Helm Charts
Il est possible de préciser quels services vous voulez déployer et de préciser des variables d'environnement spécifique pour chaque container.
Exemple :
# Open ENT Modules to be deployed
modules:
catalog:
enabled: true
# Environment variables
portal:
enabled: true
env:
# Environment variable name
ENVIRONMENT: "dev"
app-registry:
enabled: false
directory:
enabled: true
feeder:
enabled: true
env:
QUARKUS_NEO4J_URI: "bolt://openent-neo4j.openent-dev.svc.cluster.local:7687"
QUARKUS_MONGODB_CONNECTION_STRING: "mongodb://openent-mongodb.openent-dev.svc.cluster.local:27017"
admin:
enabled: false
Voici un diagramme de la configuration de déploiement pour les différents modules et services associés :
Déploiement en mode développeur
Helm Charts peut être configuré pour le développement en activant le mode dev (isDev: true). Dans ce mode, vous pouvez vous connecter à votre POD et utiliser la commande suivante pour lancer le développement à distance avec Quarkus :
mvn quarkus:remote-dev -Dquarkus.live-reload.url=http://localhost:8080 -Dquarkus.live-reload.password=openent -Premote
Configuration des PODS
Pod Disruption Budget
- minAvailable : 0
Replica Count
- replicaCount : 1
Image Docker
- repository : ghcr.io/pass-tech-developpement/openent
- pullPolicy : IfNotPresent
- tag : ""
Service Account
- create : false
Labels et Annotations
- podAnnotations :
- podLabels :
Sécurité
- podSecurityContext :
- securityContext :
Configuration des Services
Service principal
- Type : ClusterIP
- Port : 8080
Configuration RBAC
enabled : true
Configuration Ingress
Le service est accessible via Ingress, avec la configuration suivante. Dans cette exemple, nous utilisons Traefik au lieu de Nginx mais la configuration serait similaire avec un changement des annotations.
ingress.enabled : true ingress.annotations :
- traefik.ingress.kubernetes.io/router.tls: "true"
- traefik.ingress.kubernetes.io/router.entrypoints: "websecure"
hosts :
- openent.tech.fr paths :
- / -> openent-portal:8080
- /admin -> openent-admin:8080
- /directory -> openent-directory:8080
Configuration persistence
La persistance des données est activée avec les volumes et montages suivants :
Volume principal : openent-main-claim (500M) Montage : /open-ent/data
Ce répertoire contient tous les fichier manipulés par Open ENT. Le volume est conservé en cas de suppression du chart Helm dans le cluster Kubernetes pour éviter de perdre les données après désinstallation.
Configuration des services
Neo4j, OpenSearch, MongoDB, PostgreSQL sont installées par une dépendances de chart dans le chart d'Open ENT
Les services sont disponibles dans différents repositories de chart Helm.
Il n'est pas nécessaire de gérer les dépendances avec les différentes repositories de chart Helm si vous utilisez les dépendances par défaut. En effet le chart openent intégre par défaut les dépendances avec cette version
dependencies:
- name: neo4j
version: 5.21.0
repository: https://helm.neo4j.com/neo4j
condition: neo4j.enabled
- name: opensearch
version: 2.22.1
repository: https://opensearch-project.github.io/helm-charts/
condition: opensearch.enabled
- name: postgresql
version: 15.5.23
repository: https://charts.bitnami.com/bitnami
condition: postgresql.enabled
- name: mongodb
version: 15.6.14
repository: https://charts.bitnami.com/bitnami
condition: mongodb.enabled
Voici les repos nécessaires pour gérer les dépendances
helm repo ls
NAME URL
stable https://charts.helm.sh/stable
bitnami https://charts.bitnami.com/bitnami
neo4j https://helm.neo4j.com/neo4j
opensearch https://opensearch-project.github.io/helm-charts/
Ajouter les repos si vous n'avez pas les repositories et si vous voulez changer une version de dépendances.
helm repo add opensearch https://opensearch-project.github.io/helm-charts/
helm repo add neo4j https://helm.neo4j.com/neo4j
helm repo add bitnami https://charts.bitnami.com/bitnami
Dans le répertoire du chart ./helm/openent, il est alors possible mettre à jour les dépendances
helm dependency build
helm dependency update
Visualisation du déploiement
kubectl get pods
NAME READY STATUS RESTARTS AGE
cypher-shell 1/1 Running 0 150d
openent-catalog-6774fffb88-qmt7t 1/1 Running 0 171d
openent-neo4j-0 1/1 Running 0 111d
openent-feeder-5d894dfbcc-c878x 1/1 Running 0 180d
openent-postgresql-0 1/1 Running 0 112d
openent-mongodb-6489d9dd8f-kc6wl 1/1 Running 0 181d
openent-admin-8446f67dc8-kltqb 1/1 Running 0 43d
openent-appregistry-6d56ffd44-dl2j4 1/1 Running 0 42d
openent-communication-75c7b74b8-cdcd9 1/1 Running 0 41d
openent-portal-784456857f-rswqz 1/1 Running 0 36d
openent-directory-66b955d69b-mjt22 1/1 Running 0 24d
openent-opensearch-cluster-master-0 1/1 Running 0 22d
openent-opensearch-dashboards-74b85b45c5-bp56k 1/1 Running 0 19d
openent-dashboard-7f6445555b-fb79w 1/1 Running 0 19d
Le container porte le nom de openent-$nom du module permettant une identification simple dans kubernetes.