Aller plus loin

Congratulations

Bravo, vous avez terminé ce workshop qui vous a présenté les concepts essentiels du Cloud et des technologies DevOps modernes.

Afin de ne pas épuiser votre crédit sur Exoscale, vous pouvez à présent supprimer les ressources que vous avez créée:

  • Le load balancer
  • Le NodePoll associé au clsuter
  • Le cluster

Pour approfondir vos connaissances et améliorer le déploiement et la gestion de vos applications, voici plusieurs pistes d’amélioration, organisées par domaine, que vous pourrez considérer.

Amélioration des déploiements

Optimisation des ressources Kubernetes

Pour une gestion plus fine des ressources et une meilleure stabilité :

  • Resource Management : Définir des limites et requêtes appropriées

    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"
  • Health Checks : Sonder la santé de vos applications

    readinessProbe:
      httpGet:
        path: /health
        port: 8080
    livenessProbe:
      httpGet:
        path: /health
        port: 8080
  • Haute Disponibilité : Assurer la résilience avec des répliques

    spec:
      replicas: 3
      strategy:
        type: RollingUpdate
        rollingUpdate:
          maxSurge: 1
          maxUnavailable: 1

Renforcement de la sécurité

Sécuriser vos déploiements avec des contextes de sécurité appropriés :

  • Security Context : Contrôler les privilèges des conteneurs

    securityContext:
      runAsNonRoot: true
      runAsUser: 1000
      fsGroup: 2000
      capabilities:
        drop:
        - ALL
  • Pod Security Standards : Appliquer des politiques de sécurité

    • Privileged : Accès sans restriction
    • Baseline : Prévient les escalations connues
    • Restricted : Sécurité renforcée
  • Network Policies : Contrôler le trafic réseau

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: deny-all
    spec:
      podSelector: {}
      policyTypes:
      - Ingress
      - Egress

Isolation

Organiser vos applications avec des espaces de noms et des quotas :

  • Namespaces : Isoler logiquement vos applications

    • Environnements : dev, staging, prod
    • Équipes : frontend, backend, data
    • Applications : par projet ou service
  • Resource Quotas : Limiter l’utilisation des ressources

    apiVersion: v1
    kind: ResourceQuota
    metadata:
      name: compute-quota
    spec:
      hard:
        requests.cpu: "4"
        requests.memory: 8Gi
        limits.cpu: "8"
        limits.memory: 16Gi
  • Limit Ranges : Définir des limites par défaut

    apiVersion: v1
    kind: LimitRange
    metadata:
      name: default-limits
    spec:
      limits:
      - default:
          cpu: "500m"
          memory: "512Mi"
        type: Container

Observabilité avancée

Instrumenter votre cluster pour une visibilité complète :

  • Monitoring : Stack Prometheus + Grafana

    • Métriques système et applicatives
    • Alerting automatisé
    • Dashboards personnalisés
  • Log Management : Centralisation avec Loki

    • Logs structurés en JSON
    • Corrélation avec les métriques
    • Recherche et filtrage avancés
  • Tracing Distribué : OpenTelemetry + Jaeger

    • Suivi des requêtes end-to-end
    • Détection des goulots d’étranglement
    • Analyse des performances

Sécurité

Policy engines

Runtime

Les étapes recommandées

  • Explorez les concepts avancés de Kubernetes : Custom Resources, Operators, et l’écosystème CNCF

  • Préparez les certifications CKA (Certified Kubernetes Administrator) ou CKAD (Certified Kubernetes Application Developer)

  • Déployez vos propres applications en appliquant les bonnes pratiques apprises dans ce workshop

  • Rejoignez les communautés Kubernetes et Cloud Native pour continuer à apprendre et partager

VotingApp en production

Pour mettre vous-même la VotingApp en production, considérez ces améliorations :

  • Monitoring : Métriques business (votes/minute, utilisateurs actifs)
  • Scaling : HorizontalPodAutoscaler basé sur CPU/mémoire
  • Persistance : Volumes persistants pour Redis et PostgreSQL
  • Sécurité : Secrets Kubernetes, chiffrement TLS
  • CD : Pipeline GitOps avec ArgoCD ou Flux