brew install fluxctl
-
Cloner ce projet
-
Déplacer vous au niveau du dossier
cloud-gitops
-
Installer le flux-system avec la commande suivante
kubectl apply -k install/
-
Récuperer la clé de deploiement ssh avec la commande suivante
fluxctl --k8s-fwd-ns=flux-system identity
-
Avec cette clé, creer un clé de deploiement ssh au niveau de ce repos avec l'option read/write
-
cloner ce repos
-
taper la commande suivante pour rendre le script executable
chmod +x scripts/create-team.sh
-
Creer le projet avec la commande suivante
./scripts/create-team.sh <nom du projet>
NB. Cette commande créera tous les fichiers nécessaires pour nous.
- Au niveau du fichier
cluster/<nom du projet>/flux-patch.yaml
, changer l'url git pour que ça point vers le repo du nouveau projet.
vim cluster/<nom du projet>/flux-patch.yaml
--git-url=git@github.com:org/dev-cluster
-
Faire un commit et pusher le faire le vers le referentiel
-
Attendre quelques minutes pour que flux crée tous les objets kubernetes se trouvant dans le dossier
cluster/<nom du projet>
ou faites le vous meme avec la commande suivante:kubectl apply -k cluster/<nom du projet>
-
Recuperer la clé ssh de la nouvelle instance flux associée au projet avec la commande suivante
fluxctl --k8s-fwd-ns=<nom du projet> identity
-
Avec cette clé, creer un clé de deploiement ssh au niveau du repos du nouveau projet avec l'option read/write
creer:
- un fichier nommé
flux.yaml
avec le contenu suivant.
version: 1
patchUpdated:
generators:
- command: kustomize build .
patchFile : flux-patch.yaml
- un fichier vide nommé
flux-patch.yaml
- un autre fichier nommé
kustomization.yaml
avec le contenu suivant
namespace: team1
bases:
- ./workloads/
- Et en fin creer le dossier
workloads
ou vous allez mettre vos manifestes kubernetes.
Flux fera un un kubectl apply -k workloads
à chaque commit sur la branch master
Exportation de la variable d'environnement contenant le namespace de l'instance flux à utiliser:
export FLUX_FORWARD_NAMESPACE=team1
Si on veut utiliser une instance de flux qui se trouve sur un namespace autre que celui par defaut, il faut passer l'option --k8s-fwd-ns au niveau de la commande. Par exemple:
fluxctl list-workloads --k8s-fwd-ns=team2
Flux verifie périodiquement s'il y'a de nouveaux changements sur le référentiel. Ce qui fait qu'il peut y'avoir une latence de quelques secondes voire minutes pour que flux synchronise l'etat du cluster avec le repo. On peut forcer la synchronisation avec la commande suivante
fluxctl sync
fluxctl list-workloads --all-namespaces
Filtrage par neamespace
fluxctl list-workloads -n team1
fluxctl list-images
Filtrage par workload
fluxctl list-images --workload team1:deployment/backend
Changer la version de l'image d'un workload (faudrait que le déploiement automatique des images soit désactiver)
fluxctl release --workload=<workload> --update-image=<image>:<tag>
fluxctl automate --workload=<nom du workload>
fluxctl deautomate --workload=<nom du workload>
fluxctl lock --workload=deployment/helloworld
fluxctl lock --workload=deployment/helloworld