---
# System prepended metadata

title: TP 4

---

[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

