Puis installez MicroK8s via snap et configurer-le pour l'utilisateur de la VM:
Puis installez MicroK8s via snap et configurez-le pour l'utilisateur de la VM:
```bash
sudo snap install microk8s --classic
...
...
@@ -59,7 +59,7 @@ kubectl top nodes
kubectl top pods -A
```
Déloiyez *metrics-server* et vérifiez que le pod correspondant tourne bien :
Déployez *metrics-server* et vérifiez que le pod correspondant tourne bien :
```bash
microk8s enable metrics-server
kubectl get pods -A
...
...
@@ -132,7 +132,7 @@ L'erreur est `Back-off restarting failed container`, ce qui signifie que le pod
```bash
kubectl logs mariadb-*
```
On voit qu'il manque des options (variables d'environnement) pour le que conteneur mariadb démarre correctement. Définissez les variables MYSQL_ROOT_PASSWORD, MYSQL_USER, MYSQL_PASSWORD et MYSQL_DATABASE dans le fichier `mariadb.yml` à l'aide du champ [env](https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/).
On voit qu'il manque des options (variables d'environnement) pour le que conteneur mariadb démarre correctement. Définissez les variables `MYSQL_ROOT_PASSWORD`, `MYSQL_USER`, `MYSQL_PASSWORD` et `MYSQL_DATABASE` dans le fichier `mariadb.yml` à l'aide du champ [env](https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/).
_Dans la suite, nous verrons comment éviter les secrets en clair... Si nous avons le temps ;)_
...
...
@@ -232,7 +232,7 @@ firefox http://localhost
### 3. Aller plus loin ###
#### Ressources ####
Afin de limiter l'usage des ressources par les pods, et de faciliter le travail du scheduler, il est fortement conseillé de spécifier des [Resources](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/).
Afin de limiter l'usage des ressources par les pods et de faciliter le travail du scheduler, il est fortement conseillé de spécifier des [Resources](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/).
Vous pouvez par exemple configurer le pod nginx avec 2Mo/10Mo, et le pod vapormap avec 40Mo/80Mo.
#### Secrets ####
...
...
@@ -241,7 +241,7 @@ Ajouter un secret avec les différentes variables d'environnement nécessaire, e
Par la suite, on peut utiliser [sops](https://github.com/mozilla/sops) pour chiffrer les secrets yaml et les ajouter au dépôt en toute confiance...
#### Volume ####
Vous aurez remarqué que les données ne sont pas persitantes. En effet, à chaque redémarrage du pod MariaDB, les données sont perdues. Cette problématique est résolue par Kubernetes grâce aux [Volumes](https://kubernetes.io/docs/concepts/storage/volumes/).
Vous aurez remarqué que les données ne sont pas persistantes. En effet, à chaque redémarrage du pod MariaDB, les données sont perdues. Cette problématique est résolue par Kubernetes grâce aux [Volumes](https://kubernetes.io/docs/concepts/storage/volumes/).
Notez que Kubernetes est capable de communiquer avec le cloud sous-jacent (par exemple cinder, dans le cas d'Openstack), mais aussi de tailler des volumes iSCSI, nfs, etc...
Pour MicroK8s, il s'agit par défaut d'un simple stockage fichier dans un répertoire de la machine hôte. Il faut tout d'abord activer le composant qui gère le stockage persitant :
...
...
@@ -250,7 +250,7 @@ Pour MicroK8s, il s'agit par défaut d'un simple stockage fichier dans un réper
microk8s.enable storage
```
Puis, ajoutez une [PersistentVolumeClaim](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) attachez-le au pod du déploiement MariaDB. Vérifiez ensuite qu'un redémarrage du pod préserve les données.
Puis, ajoutez une [PersistentVolumeClaim](https://kubernetes.io/docs/concepts/storage/persistent-volumes/)et attachezle volume résultant au pod du déploiement MariaDB. Vérifiez ensuite qu'un redémarrage du pod préserve les données.
#### NetworkPolicy ####
Par défaut, la base mariadb est accessible à tous les pods du cluster. Vous pouvez limiter les pods qui y ont accès à l'aide d'une [NetworkPolicy](https://kubernetes.io/docs/concepts/services-networking/network-policies/). Utilisez le namespaceSelector qui correspond à votre namespace, et le label `app: vapormap`.
...
...
@@ -266,7 +266,7 @@ alias helm='microk8s helm3'
echo"alias helm='microk8s helm3'">> ~/.bashrc
```
Puis, on peut déployer le chart Helm qui est dans le répertoire `helm`. Les différentes valeurs peuvent être configurées via le fichier `values.yaml`.
Vous pourrez alors déployer le chart Helm. Les différentes valeurs peuvent être configurées via le fichier `values.yaml`.
Pour fluidifier les mises en production d'application, nous allons utiliser Argo CD, qui permet de mettre en place de pratique [GitOps](https://www.weave.works/technologies/gitops/). Cet outil va surveiller un dépôt git contenant la définition de votre application et mettre à jour automatiquement à chaque modification.
Pour fluidifier les mises en production d'application, nous allons utiliser Argo CD, qui permet de mettre en place des pratiques[GitOps](https://www.weave.works/technologies/gitops/). Cet outil va surveiller un dépôt git contenant la définition de votre application et mettre à jour automatiquement à chaque modification.