[TOC]
# Q1 - Installation de `kubectl` sous WSL

- 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
```

# Q2 - Installation de `minikube` sous WSL

- 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
```

# Q3 - Lancement de `minikube`

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`

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
```

```BASH=
docker run --rm -it --network=host alpine ash -c "apk add socat && socat TCP-LISTEN:5000,reuseaddr,fork TCP:$(minikube ip):5000"
```

# Q5 - Pousser dans un registre local

```BASH=
docker tag <IMAGE ID> localhost:5000/myimage
docker push localhost:5000/myimage
```

# Q6 - Ecrire un fichier YAML pour démarrer un pod

**`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

```BASH=
kubectl port-forward static-web 5001:8080
```
[`http://localhost:5001/`](http://localhost:5001/)

# Q8 - Modifiez votre manifest pour y inclure une liveness et readiness probe