# TP01 : Introduction à Kubernetes ## Installation Minikube & kubectl * Minikube ```bash= curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube ``` * Kubectl : ```bash minikube kubectl -- get po -A ``` ## Pod Nginx ### Déployer un pod nginx La commande qui permet de pouvoir déployer un pod nginx est : ```bash kubectl run my-pod-nginx --image=nginx ``` Résultat : ```bash= jere@LAPTOP-ADMIN:~/cours-cloud/conteneur-cours$ kubectl run my-pod-nginx --image=nginx pod/my-pod-nginx created ``` ### A l’aide de la commande kubectl port-forward et d’un navigateur accéder à la page par défaut de votre pod Nginx ```bash kubectl port-forward my-pod-nginx 80:8080 ``` Résultat : ```bash= jere@LAPTOP-ADMIN:~/cours-cloud/conteneur-cours$ kubectl port-forward my-pod-nginx 8080:8080 Forwarding from 127.0.0.1:8080 -> 8080 Forwarding from [::1]:8080 -> 8080 ``` ## 3 - Connexion entre plusieurs Pods ### 3 - a : A l’image du TP 1 sur Docker (question 7 et 8), héberger un Pod phpmyadmin et mysql, cette fois-ci en utilisant minikube #### Partie phpmyadmin Fichier configuration de phpmyadmin: ```bash= --- apiVersion: apps/v1 kind: Deployment metadata: name: phpmyadmin-deployment spec: replicas: 1 selector: matchLabels: app: phpmyadmin template: metadata: labels: app: phpmyadmin spec: containers: - name: phpmyadmin image: phpmyadmin/phpmyadmin ports: - containerPort: 80 env: - name: PMA_HOST value: mysql - name: MYSQL_ROOT_PASSWORD value: P@ssword - name: PMA_PORT value: "3306" ``` Apply la configuration de phpmyadmin : ```bash= jere@LAPTOP-ADMIN:~/cours-cloud/conteneur-cours/repo-tp-conteneurisation/02-KUBERNETES/tp01/phpmyadmin$ kubectl apply -f conf-phpmyadmin.yml deployment.apps/phpmyadmin-deployment created service/phpmyadmin-service created ``` #### Partie MySQL Fichier de configuration de MySQL : ```bash= --- apiVersion: apps/v1 kind: Deployment metadata: name: mysql spec: selector: matchLabels: app: mysql strategy: type: Recreate template: metadata: labels: app: mysql spec: containers: - image: mysql:5.6 name: mysql env: - name: MYSQL_ROOT_PASSWORD value: P@ssword ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage ``` Apply la configuration de mysql : ```bash= jere@LAPTOP-ADMIN:~/cours-cloud/conteneur-cours/repo-tp-conteneurisation/02-KUBERNETES/tp01/mysql$ kubectl apply -f conf-mysql.yml deployment.apps/mysql configured service/mysql unchanged ``` ### 3 - b : Créer un service associé au Pod mysql Dasn mon cas, j'ai 2 fichiers : * 1 fichier conf MYSQL * 1 fichier conf phpmyadmin Voici le service associé au pod MySQL : ```bash= --- apiVersion: v1 kind: Service metadata: name: mysql spec: ports: - port: 3306 selector: app: mysql ``` ### 3 - c : Connecter phpmyadmin avec le Service mysql et vérifier que vous pouvez administrer cette base de données Service qui permet de connecter phpmyadmin avec le service MySQL : ```bash= --- apiVersion: v1 kind: Service metadata: name: phpmyadmin-service spec: type: NodePort selector: app: phpmyadmin ports: - protocol: TCP port: 80 targetPort: 80 ``` Puis apply via la commande : > kubectl apply -f conf-phpmyadmin.yml ### 3 - d : Avec la commande kubectl-port forward, vérifier que phpmyadmin arrive à contacter et administrer votre base de données mysql Commande port-forward sur le port 8080 du fichier conf de phpmyadmin pour pouvoir acceder à l'interface graphique : ```bash= jere@LAPTOP-ADMIN:~/cours-cloud/conteneur-cours/repo-tp-conteneurisation/02-KUBERNETES/tp01/phpmyadmin$ kubectl port-forward phpmyadmin-deployment-54f84d8f8f-24kms 8080:80 Forwarding from 127.0.0.1:8080 -> 80 Forwarding from [::1]:8080 -> 80 Handling connection for 8080 Handling connection for 8080 Handling connection for 8080 ``` ![](https://i.imgur.com/3TJvmXw.png) ### 3 - e : Ajouter un Ingress pour accéder à phpmyadmin sans utiliser la commande kubectl port-forward