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