Aller au contenu principal

Kubernetes

Objectifs

  • Estimer son travail
  • Utiliser minikube
  • Déployer une application sur Kubernetes
  • Créer un fichier deployment.yaml pour déployer l'application

Rendu

  • GitHub Classroom : https://classroom.github.com/a/xW6ZdJoY
    • Rapport individuel en Markdown à rendre avant le prochain cours
    • Nom du fichier : report.md à la racine du répertoire
  • Devoir sur Cyberlearn : mettre le lien de la pull request GitLab dans le champ texte
  • Délai: 1 semaine

Tâches

Estimer son travail

  • Estimez le temps nécessaire pour réaliser ce laboratoire
    • Découpez le travail en tâches pour faciliter l'estimation
  • Lorsque vous aurez terminé le laboratoire, comparez le temps estimé avec le temps réellement passé
TâcheTemps estiméTemps réelCommentaire
Estimation10m15m...
............
Total2h1h30...

Utiliser minikube

  • Suivez les instructions sur minikube pour déployer des applications sur votre machine
    • Suivez les points suivants:
      • 2. Start your cluster
        1. Interact with your cluster
        1. Deploy applications
        • Service
        • LoadBalancer
          • Scale votre Deployment à 2 replicas et vérifiez que les requêtes sont bien réparties entre les deux pods (en y accédant en navigation privée)
        • Ingress
  • Regardez les logs (au niveau du pod)
    • Sur le dashboard, sélectionnez un pod
      • En haut à droite, il y a plusieurs icônes, dont View logs et Exec into pod
    • En ligne de commande, utilisez kubectl logs et kubectl exec (kubectl get pods pour lister les pods)

Déployer une application

On va déployer notre application sur Kubernetes. Les instructions suivantes utilise https://gitlab.com/blueur/heig-vd-devops mais vous être libre d'utiliser votre propre application.

GUI

Déployez l'application sur Kubernetes en utilisant le dashboard.

  • Déployez le frontend
    • Cliquez sur le + en haut à droite
      • Create from form
        • App name : frontend
        • Container image : registry.gitlab.com/blueur/heig-vd-devops/frontend:latest
        • Service : Internal
        • Port : 80
        • Target port : 80
      • Cliquez sur Deploy
    • Vous pourrez accéder à l'application avec minikube service frontend
  • Déployez une base de donnée
    • App name : database
    • Container image : postgres:16-alpine
    • Service : Internal
    • Port : 5432
    • Target port : 5432
    • Cliquez sur Show advanced options
      • Environment variables
        • POSTGRES_PASSWORD : postgres
    • Cliquez sur Deploy
  • Déployez le backend
    • App name : backend
    • Container image : registry.gitlab.com/blueur/heig-vd-devops/backend:latest
    • Service : Internal
    • Port : 80
    • Target port : 80
    • Cliquez sur Show advanced options
      • Environment variables
        • POSTGRES_HOST : database
        • POSTGRES_PASSWORD : postgres
        • ROOT_PATH: /api
  • Créez un ingress
    • Create from input
      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
      name: heig-vd-devops-ingress
      annotations:
      nginx.ingress.kubernetes.io/use-regex: "true"
      nginx.ingress.kubernetes.io/rewrite-target: /$1
      spec:
      ingressClassName: nginx
      rules:
      - http:
      paths:
      - path: /?(.*)
      pathType: ImplementationSpecific
      backend:
      service:
      name: frontend
      port:
      number: 80
      - path: /api/?(.*)
      pathType: ImplementationSpecific
      backend:
      service:
      name: backend
      port:
      number: 80
  • Vous pourrez accéder à l'application sur http://127.0.0.1/

CLI

Cluster du cours

Déployez votre application sur le cluster Kubernetes du cours dans le namespace <votre-nom>.