DevOps

Kubernetes en 2024 : Guide Complet

Johan C.
5 mai 2024
15 min

Maîtrisez Kubernetes en 2024 avec ce guide complet sur l'orchestration de conteneurs et la gestion d'infrastructure.

📝
Kubernetes en 2024 continue d'évoluer avec des fonctionnalités avancées qui simplifient la gestion des applications distribuées et transforment l'orchestration de conteneurs en une expérience plus intuitive et performante.

Architecture et Concepts Fondamentaux


Kubernetes 2024 améliore l'architecture de base avec de nouvelles fonctionnalités qui simplifient la gestion des clusters.

Composants principaux :


# Architecture Kubernetes 2024
apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  containers:
  - name: myapp
    image: myapp:latest
    ports:
    - containerPort: 8080
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"

Métriques de performance :


  • Déploiement 60% plus rapide avec les nouvelles optimisations

  • Gestion mémoire améliorée pour les clusters volumineux

  • Monitoring intégré avec Prometheus et Grafana

Nouvelles Fonctionnalités


Kubernetes 2024 introduit plusieurs nouvelles fonctionnalités qui améliorent l'expérience de développement.

Gateway API :


# Gateway API pour la gestion du trafic
apiVersion: gateway.networking.k8s.io/v1beta1
kind: Gateway
metadata:
  name: my-gateway
spec:
  gatewayClassName: istio
  listeners:
  - name: http
    port: 80
    protocol: HTTP
    allowedRoutes:
      namespaces:
        from: Same
---
apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
  name: my-route
spec:
  parentRefs:
  - name: my-gateway
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /api
    backendRefs:
    - name: my-service
      port: 8080

Pod Security Standards :


# Configuration de sécurité des pods
apiVersion: v1
kind: Pod
metadata:
  name: secure-pod
spec:
  securityContext:
    runAsNonRoot: true
    runAsUser: 1000
    fsGroup: 2000
  containers:
  - name: myapp
    image: myapp:latest
    securityContext:
      allowPrivilegeEscalation: false
      readOnlyRootFilesystem: true
      capabilities:
        drop:
        - ALL

Gestion des Ressources


Kubernetes 2024 améliore la gestion des ressources avec de nouvelles fonctionnalités d'optimisation.

Horizontal Pod Autoscaler V2 :


# Autoscaling avancé
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: myapp-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: myapp
  minReplicas: 2
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 70
  - type: Resource
    resource:
      name: memory
      target:
        type: Utilization
        averageUtilization: 80
  behavior:
    scaleDown:
      stabilizationWindowSeconds: 300
      policies:
      - type: Percent
        value: 10
        periodSeconds: 60

Vertical Pod Autoscaler :


# Autoscaling vertical
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
  name: myapp-vpa
spec:
  targetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: myapp
  updatePolicy:
    updateMode: "Auto"
  resourcePolicy:
    containerPolicies:
    - containerName: '*'
      minAllowed:
        cpu: 100m
        memory: 50Mi
      maxAllowed:
        cpu: 1
        memory: 500Mi
      controlledResources: ["cpu", "memory"]

Monitoring et Observabilité


Kubernetes 2024 améliore le monitoring avec de nouveaux outils et métriques.

Prometheus Operator :


# Configuration Prometheus
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: myapp-monitor
spec:
  selector:
    matchLabels:
      app: myapp
  endpoints:
  - port: metrics
    interval: 30s
    path: /metrics
---
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: myapp-alerts
spec:
  groups:
  - name: myapp.rules
    rules:
    - alert: HighCPUUsage
      expr: container_cpu_usage_seconds_total > 0.8
      for: 5m
      labels:
        severity: warning
      annotations:
        summary: High CPU usage detected

Grafana Dashboards :


# Dashboard Grafana
apiVersion: v1
kind: ConfigMap
metadata:
  name: grafana-dashboard
  labels:
    grafana_dashboard: "1"
data:
  dashboard.json: |
    {
      "dashboard": {
        "title": "Kubernetes Cluster Overview",
        "panels": [
          {
            "title": "CPU Usage",
            "type": "graph",
            "targets": [
              {
                "expr": "sum(rate(container_cpu_usage_seconds_total[5m]))"
              }
            ]
          }
        ]
      }
    }

Sécurité Avancée


Kubernetes 2024 renforce la sécurité avec de nouvelles fonctionnalités.

Network Policies :


# Politique réseau restrictive
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  - Egress
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-frontend
spec:
  podSelector:
    matchLabels:
      app: frontend
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: backend
    ports:
    - protocol: TCP
      port: 8080

RBAC avancé :


# Rôles et permissions granulaires
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: app-developer
rules:
- apiGroups: [""]
  resources: ["pods", "services"]
  verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["apps"]
  resources: ["deployments", "replicasets"]
  verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: app-developer-binding
subjects:
- kind: User
  name: developer@company.com
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: app-developer
  apiGroup: rbac.authorization.k8s.io

Déploiement et CI/CD


Kubernetes 2024 améliore l'intégration avec les pipelines CI/CD.

ArgoCD pour GitOps :


# Application ArgoCD
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: myapp
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/myorg/myapp
    targetRevision: HEAD
    path: k8s
  destination:
    server: https://kubernetes.default.svc
    namespace: production
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
    - CreateNamespace=true

Tekton Pipelines :


# Pipeline Tekton
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
  name: build-and-deploy
spec:
  params:
  - name: git-url
  - name: git-revision
  tasks:
  - name: fetch-repository
    taskRef:
      name: git-clone
    params:
    - name: url
      value: $(params.git-url)
    - name: revision
      value: $(params.git-revision)
  - name: build-image
    runAfter: [fetch-repository]
    taskRef:
      name: kaniko
    params:
    - name: IMAGE
      value: myapp:latest

Migration et Adoption


La migration vers Kubernetes 2024 est progressive avec des outils de migration automatique.

Étapes de migration :


1. Mise à jour du cluster : Upgrade vers la dernière version
2. Migration des ressources : Adoption des nouvelles APIs
3. Optimisation : Application des meilleures pratiques
4. Monitoring : Mise en place de l'observabilité

Exemple de migration :


# Ancien (Kubernetes 1.20)
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: myapp-ingress
spec:
  rules:
  - host: myapp.com
    http:
      paths:
      - path: /
        backend:
          serviceName: myapp-service
          servicePort: 80

# Nouveau (Kubernetes 2024)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: myapp-ingress
spec:
  rules:
  - host: myapp.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: myapp-service
            port:
              number: 80

Impact sur l'Écosystème


Kubernetes 2024 influence l'écosystème avec de nouvelles intégrations et outils.

Intégrations améliorées :


  • Istio : Service mesh avancé

  • Helm : Gestion des packages

  • Kustomize : Configuration déclarative

Outils de développement :


# kubectl avec nouvelles fonctionnalités
kubectl version --client
kubectl get nodes
kubectl top nodes

# Monitoring
dashboard-kubernetes
kubectl port-forward svc/kubernetes-dashboard 8080:443 -n kube-system

Conclusion


Kubernetes en 2024 représente l'évolution naturelle de l'orchestration de conteneurs avec des fonctionnalités avancées de sécurité, de monitoring et d'automatisation. Les développeurs qui adoptent ces nouvelles fonctionnalités bénéficient d'une gestion simplifiée des applications distribuées et d'une meilleure observabilité.

Tags

KubernetesOrchestrationConteneursCloudInfrastructure