Docker/Kubernetes
Kubernetes est un logiciel open-source sorti en 2015 pour orchestrer de plusieurs conteneurs avec des options de quotas, scalabilité horizontale, déploiement sans coupure de service et relance automatique en cas d'indisponibilité. Pour ces raisons, il est plus orienté pour la production que pour le développement[1], de plus il nécessite d'utiliser des images Docker déjà construites.
InstallationModifier
La configuration peut être stockée dans des fichiers .yaml et modifiée par la commande kubectl
[2], ou via l'interface graphique Dashboard[3]. De plus, il est nécessaire de lancer un cluster contenant les conteneurs via kubeadm
[4].
DebianModifier
Sur Debian ou ses dérivés[5] :
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt-get install kubeadm kubelet kubectl
Test :
kubectl --help
TypesModifier
podModifier
Un pod désigne un groupe de conteneur géré par Kubernetes[6].
replica setModifier
Un replica set désigne un ensemble de pods, dont le nombre maximum peut y être défini.
secretModifier
Liste de variables d'environnement chiffrées, généralement des mots de passe.
Ils sont chiffrés via "kubeseal", à partir d'un fichier YAML non versionné contenant les chaines encodées en base64.
Ce fichier contient plusieurs paramètres, par exemple le type. Il en existe huit, "opaque" étant celui par défaut[7].
La commande de chiffrement quant-à-elle permet de définir le scope des secrets[8] :
- strict (par défaut) : le nom et le namespace ne peuvent pas changer sans rechiffrer.
- namespace-wide : utilisable dans tout le namespace.
- cluster-wide : utilisable dans tout le cluster.
Toutefois on peut aussi les mettre dans le .yaml. Ex : metadata:
annotations: sealedsecrets.bitnami.com/cluster-wide: "true"
CronJobModifier
Lance un conteneur dédié à une tâche planifiée (cron), à chaque fois qu'elle tourne[9].
IngressModifier
Accès à l'application (DNS).
PVCModifier
Persistent volume : stocke des données indépendamment du redémarrage des pods.
kubectlModifier
getModifier
kubectl get -A all
execModifier
kubectl exec -it mon_pod -- /bin/bash
scaleModifier
Pour augmenter le nombre de pods dans un replicatset. Par exemple si on peut passer le nombre de 2 à 3 sur "mysql"[10] :
kubectl scale --current-replicas=2 --replicas=3 deployment/mysql
RéférencesModifier
- ↑ https://kubernetes.io/docs/setup/
- ↑ https://kubernetes.io/fr/docs/reference/kubectl/overview/
- ↑ https://kubernetes.io/fr/docs/tasks/access-application-cluster/web-ui-dashboard/
- ↑ https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
- ↑ https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
- ↑ https://kubernetes.io/fr/docs/concepts/workloads/pods/pod/
- ↑ https://kubernetes.io/docs/concepts/configuration/secret/#secret-types
- ↑ https://github.com/bitnami-labs/sealed-secrets#scopes
- ↑ https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/
- ↑ https://jamesdefabia.github.io/docs/user-guide/kubectl/kubectl_scale/