Skip to content

Commit

Permalink
fix compose2_manifests.md
Browse files Browse the repository at this point in the history
  • Loading branch information
natman committed Oct 28, 2024
1 parent 8748d5b commit ab2554d
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 25 deletions.
2 changes: 2 additions & 0 deletions documentation/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
64 changes: 39 additions & 25 deletions documentation/compose2manifests_functions.md
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -15,25 +31,22 @@
- 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

#### Transformation des variables en env_file

- 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

Expand All @@ -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

Expand All @@ -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

Expand All @@ -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.

Expand All @@ -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 ()`

Expand Down

0 comments on commit ab2554d

Please sign in to comment.