Skip to main content

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.

Dépendances par défaut

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.