From ab2554d1c1807dfcc3ea1c53fd8d3cd62273dfc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nathana=C3=ABl=20Blanchet?= Date: Mon, 28 Oct 2024 19:33:47 +0100 Subject: [PATCH] fix compose2_manifests.md --- documentation/README.md | 2 + documentation/compose2manifests_functions.md | 64 ++++++++++++-------- 2 files changed, 41 insertions(+), 25 deletions(-) diff --git a/documentation/README.md b/documentation/README.md index d7a4b90..c47966c 100644 --- a/documentation/README.md +++ b/documentation/README.md @@ -43,3 +43,5 @@ Cette documentation est donnée à titre d'exemple du travail collaboratif accom \- [OpenDataFoundation](odf.md) \- [Registry d\'images](registry.md) + +\- [Usage de compose2manifests.sh](compose2manifests_functions.md) diff --git a/documentation/compose2manifests_functions.md b/documentation/compose2manifests_functions.md index 79cc356..9bd669c 100644 --- a/documentation/compose2manifests_functions.md +++ b/documentation/compose2manifests_functions.md @@ -1,11 +1,27 @@ -## compose2manifests.sh +## Usage de compose2manifests.sh + +``` +usage: ./compose2manifests.sh [ prod || test || dev || local ] [ appli_name ] [default || '' || secret || env_file | help] [kompose] [helm] + +dev|test|prod: environnement sur lequel récupérer le .env. Local: fournir manuellement les '.env' et 'docker-compose.yml' +appli_name: nom de l'application à convertir +default or '' : Generates cleaned appli.yml compose file to plain k8s manifests +env_file: Generates cleaned advanced appli.yml with migrating plain 'environment' + to 'env_file' statement, will generate k8s "configmaps" for common vars and "secrets" for vars containing 'PASSWORD' or 'KEY' as keyword +kompose: Converts appli.yml into plain k8s manifests ready to be deployed with + 'kubectl apply -f *.yaml +helm: Kompose option that generates k8s manifest into helm skeleton for appli.yml + +example: ./compose2manifests.sh local item env_file kompose + +example: ./compose2manifests.sh prod qualimarc default kompose helm +``` `\> compose2manifests.sh environnement appli env_file kompose` ### environnement appli -- vérification et si besoin installation des pré-requis : jq, yq, jc, - docker-compose, kompose, oc, kubectl +- vérification et si besoin installation des pré-requis : `jq`, `yq`, `jc`, `docker-compose`, `kompose`, `oc`, `kubectl` - détermination du domaine @@ -15,14 +31,14 @@ - vérification de la connectivité ssh aux hôte Docker par clé, le cas échéant génération et installation d'une clé publique. -- téléchargement du « docker-compose.yml » par Github ou depuis l'hôte +- téléchargement du `docker-compose.yml` par Github ou depuis l'hôte Docker - téléchargement du « .env » depuis l'hôte Docker -- personnalisation de la variable .env +- personnalisation de la variable `.env` -- remplacement du nom du service par la directive « container_name » +- remplacement du nom du service par la directive `container_name` ### env_file @@ -30,10 +46,7 @@ - L'objectif de la transformation de la directive `environment` en `env_file` est de faciliter la prise en charge de `Kompose` pour une conversion de type `secretMapKeyRef` et `configMapKeyRef`. Cet objet `env` défini dans l'api `deployment` ne doit pas contenir de caractère `_` et être en minuscule. -- analyse les variables du fichier .env pour distinguer les variables - sensibles qui seront ensuite converties par kompose en objet k8s - « secret », des variables non sensibles qui seront transformées en - objet « configMap ». +- analyse les variables du fichier .env pour distinguer les variables sensibles qui seront ensuite converties par kompose en objet k8s `secret`, des variables non sensibles qui seront transformées en objet `configMap`. ### kompose @@ -45,21 +58,25 @@ Kompose transforme la directive docker ReadOnly d'un volume en volume ReadOnlyMany qui n'est pas supporté par la plupart des - drivers CSI. Le patch transforme ReadOnlyMany en ReadWriteOnly + drivers CSI. Le patch transforme `ReadOnlyMany` en `ReadWriteOnly`. + + https://kubernetes-csi.github.io/docs/drivers.html - `patch_secret ()` - Lors de la création d'un secret, le caractère « \\n » est inséré en + Lors de la création d'un secret, le caractère `\n` est inséré en base64, le patch le corrige - `patch_secretKeys ()` - les références à un secretKey doivent être faite en minuscule et sans caractère `.` ou `_ `. L'importation depuis Docker peut - faire référence à des noms en majuscule ou à des combinaisons de caractères non acceptés par les RFC adoptées par k8s. + les références à un `secretKey` doivent être faite en minuscule et sans caractère `.` ou `_ `. L'importation depuis Docker peut + faire référence à des noms en majuscule ou à des combinaisons de caractères non acceptés par les [RFC](https://praneethreddybilakanti.medium.com/1-2-understanding-kubernetes-object-names-and-ids-9e7b6e11ee7b) adoptées par k8s. - `patch_labels ()` - Contourne la limitation à 64 caractères des labels et des noms de volumes + Contourne la limitation à 64 caractères des labels et des noms de volumes. + + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/ ##### Réseau @@ -79,21 +96,19 @@ - `create_pv2 ()` - Ce patch cherche les volumes NFS montés sur l'hôte docker source et - crée un persistent Volume de type NFS plutôt que csi, avec les mêmes - caractéristiques. + Ce patch cherche les volumes NFS montés sur l'hôte docker source et crée un persistent Volume de type NFS plutôt que csi, avec les mêmes caractéristiques. - `create_pvc_nfs ()` Transforme le fichier pvc convertit par kompose en claim du - persistent volume généré avec create_pv2 () + persistent volume généré avec `create_pv2 ()` - `create_sc ()` Certains containers Docker accèdent au même volume. Beaucoup de drivers csi ne supportant que le mode ReadWriteOnly, ce patch - propose d'installer le drivers officiel nfs.csi.k8s.io avec la - capacité RWX et de convertir ces volumes en pvc compatibles. + propose d'installer le drivers officiel `nfs.csi.k8s.io` avec la + capacité `RWX` et de convertir ces volumes en pvc compatibles. ##### Fichiers @@ -105,13 +120,13 @@ - `create_configmaps ()` Crée des objets configMaps pour les volumes bind qui sont des - fichiers et non des répertoires. Un montage sshfs est utilisé sur l'hôte docker pour utiliser facilement la commande « oc create cm ». On peut ainsi créer des configmaps d'objets binaires. + fichiers et non des répertoires. Un montage sshfs est utilisé sur l'hôte docker pour utiliser facilement la commande `oc create cm`. On peut ainsi créer des configmaps d'objets binaires. #### Déploiement de l'application - Création du projet. -- Génération d'une règle Security Context Constraint pour le +- Génération d'une règle `Security Context Constraint` pour le ServiceAccount par défaut. Sans cela les conteneurs root ne démarrent pas sous OKD. @@ -121,8 +136,7 @@ - `select_nfs_mount_point ()` - Tri des pvc NFS et claim pour éviter par la suite la copie inutile - des partages NFS. + Tri des pvc NFS et claim pour éviter par la suite la copie inutile des partages NFS. - `copy_to_okd ()`