Kubernetes, my friends... Kubernetes
Tags: fr
Published: 2021-02-21 05:29:21

# Qu’Est-ce que Kubernetes
Kubernetes est un comme un chef d’orchestre. Il est en charge de veiller a que tous les containers de Docker roulent et soient disponibles. Kubernetes peut donc automatiser toute la gestion des conteneurs; partir des nouveaux conteneurs, redémarrer des conteneurs et même arrêter des conteneurs. Pour cette raison, Kubernetes est souvent utilisé lorsqu’on a une grande quantité de conteneurs à gérer, afin d’alléger la gestion et permettre l'évolutivité.

# Lexique Important
**Cluster**  : un cluster est un ensemble de machines ou conteneurs aussi appelés « _nodes_ ». Chaque cluster contient au moins un _node._

**Container** : une image portable qui continent toutes les dépendances nécessaires pour fonctionner

**Controller**  : vigilent et contrôle l'état des conteneurs, fais des changements ou demande des changements au besoin afin de s'approcher le plus possible aux résultats attendus

**Pod**  : un set de conteneurs dans un cluster. Est aussi l'élément plus simple et petit des objets Kubernetes

**Workload** : Une application qui roule sur Kubernetes

**Volume**  : Un dossier qui continent des données qui sont accessibles aux conteneurs dans des Pods

**Control Pane**  : Un conteneur d'orchestration qui expose aussi l'API de Kubernetes. Sert a definir les interfaces, deployer et gerer le cycle de vie des conteneurs.

**API Server (aka** _ **kube-apiserver** _**):** Le serveur API de Kubernetes. C'est comme le front-end du _control pane_ de Kubernetes

**Endpoints** :Siventles addresses IP des Pods

# Tutoriel de déploiement d'application Express JS sur Kubernetes

1. En premier on crée notre pojet express qui ressemble à ceci ![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nskhujitq9tcu5is76bw.png) 

2. On crée maintenant un Dockerfile afin de conteneuriser notre très lourde application express
![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3wc7meqo7elykbu7jyof.png)

3. On build notre image docker
```angel@BigAngel:~/DockerStuff/kubTest$ docker build -t kubernetes-node .```

4. On construis notre ficher deployment.yaml
![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c367xdhg9aqw9q2ze63l.png)

5. On déploie à l’aide de kubernetes
```angel@BigAngel:~/DockerStuff/kubTest$ kubectl apply -f deployment.yaml```

6. On expose notre port
```angel@BigAngel:~/DockerStuff/kubTest$ kubectl expose deploy kubernetes-node-deployment --type=NodePort```

7. Quel port nous a été assigné?
```angel@BigAngel:~/DockerStuff/kubTest$ kubectl get service```

8. On teste et voilà
![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/26i1a0vxltv412u89m2k.png)

## Maintenant effectuons un changement cette application

1. On modifie le code source – Quel grand changement
![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zl3i4v8m492uok2f0a99.png)

2. On va faire un autre build docker, cette fois la version 2 de l’application
```angel@BigAngel:~/DockerStuff/kubTest$ docker build -t kubernetes-node:v2 .```

3. On doit alors aller faire un petit changement au ficher de déploiement de Kubernetes
![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0lalhoii98t1fp51ff2m.png)

4. On déploie à nouveau avec Kubernetes
```angel@BigAngel:~/DockerStuff/kubTest$ kubectl apply -f deployment.yaml```

5. On teste à nouveau – Quelle belle magie
![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k9l7m9pwnx5eruriy4r3.png)
 

> [Source](https://www.youtube.com/watch?v=6NG_cUeuNhU)