[TOC] # Q1 - Installation de `kubectl` sous WSL ![image](https://hackmd.io/_uploads/rywvm3YRp.png) - Lien Doc : [Install and Set Up kubectl on Linux using native package management](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#install-using-native-package-management) Verification de la bonne installation : ```BASH= kubectl version -–client ``` ![image](https://hackmd.io/_uploads/SkELznFCa.png) # Q2 - Installation de `minikube` sous WSL ![image](https://hackmd.io/_uploads/Sko_mntA6.png) - Lien Doc : [minikube start](https://minikube.sigs.k8s.io/docs/start/) Sous WSL lancer : ``` curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64 minikube version ``` ![image](https://hackmd.io/_uploads/r1xWZVnFRp.png) # Q3 - Lancement de `minikube` ![image](https://hackmd.io/_uploads/S1bc73t0a.png) S'assurer du bon lancement du service `docker` avant de lancer `minikube` : ```BASH= sudo service docker status sudo service docker start ``` `minikube` utilise un driver `docker` pour construire le cluster. Pour cela, `docker` doit pouvoir être lancé par un utilisateur autre que `root` mais ayant les droits root. Il faut pour cela l'ajouter au groupe `docker` par la commande : ```BASH= sudo usermod -aG docker arnaud ``` Puis redemarrer WSL via la commande suivante dans un Powershell: ```BASH= wsl shutdown ``` Verification de la bonne installation : ```BASH= minikube version ``` On peut ensuite lancer la construction du cluster minikube via la commande : ```BASH= minikube start --insecure-registry "10.0.0.0/24" ``` La commande `--insecure-registry "10.0.0.0/24"` indique de ne pas utiliser le ptotocole TLS sur l'IP `"10.0.0.0/24"` par défaut du cluster IP. # Q4 - Configuration d'un registre docker local au cluster `minikube` ![image](https://hackmd.io/_uploads/ryY4V3KRp.png) On commence tout d'abord par activer l'addon "`registry`" de minikube ```BASH= minikube addons enable registry ``` Cet addon expose son port 80 sur la vm de minikube, ce qui est visible par la commande : ```BASH= kubectl get service --namespace kube-system ``` ![image](https://hackmd.io/_uploads/rycm_g71A.png) ```BASH= docker run --rm -it --network=host alpine ash -c "apk add socat && socat TCP-LISTEN:5000,reuseaddr,fork TCP:$(minikube ip):5000" ``` ![image](https://hackmd.io/_uploads/SyZrdemy0.png) # Q5 - Pousser dans un registre local ![image](https://hackmd.io/_uploads/B1njtrbf0.png) ```BASH= docker tag <IMAGE ID> localhost:5000/myimage docker push localhost:5000/myimage ``` ![image](https://hackmd.io/_uploads/rJ3RdemkA.png) # Q6 - Ecrire un fichier YAML pour démarrer un pod ![image](https://hackmd.io/_uploads/BJzAKrbzC.png) **`static-web.yaml`** : ```YAML apiVersion: v1 kind: Pod metadata: name: static-web labels: role: myrole spec: containers: - name: kuar-website image: localhost:5000/kuar-demo ports: - name: http containerPort: 8080 protocol: TCP ``` # Q7 - Configurer le port-forwarding ![image](https://hackmd.io/_uploads/BJqU9BZz0.png) ```BASH= kubectl port-forward static-web 5001:8080 ``` [`http://localhost:5001/`](http://localhost:5001/) ![image](https://hackmd.io/_uploads/rkP1jlmJA.png) # Q8 - Modifiez votre manifest pour y inclure une liveness et readiness probe