Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Prise en main et premiers pas

Nœuds Kubernetes

Les nœuds du cluster sont répartis en deux catégories :

  • Les masters : au nombre de trois pour assurer une haute disponibilité, ils pilotent le cluster. Ils sont exclusivement dédiés à la gestion du cluster et n'exécutent que les conteneurs nécessaires à son fonctionnement.
  • Les workers : leur nombre est adapté aux besoins de vos applications. Ils exécutent vos conteneurs ainsi que quelques conteneurs système (fournisseurs de stockage, Ingress, monitoring, etc.).

Au-delà des nœuds, le cluster propose également des services de stockage et d'accessibilité réseau.

Services de stockage

Le cluster met à votre disposition plusieurs StorageClass permettant d'assurer un stockage persistant avec différentes politiques de rétention.

Ces classes de stockage vous permettent de provisionner à la demande des PersistentVolumes pour vos applications.

StorageClassTypeRétentionCas d'usage
managed-nfs-storageNFSDeleteStockage temporaire supprimé automatiquement avec le PVC (bases de données de test, cache, etc.)
managed-nfs-storage-retainNFSRetainStockage persistant conservé après suppression du PVC (données de production, sauvegardes, etc.)

Pour plus de détails, consultez la documentation Stockage.

Exposition des applications

Le cluster expose vos applications au monde extérieur grâce à des contrôleurs d'Ingress basés sur HAProxy qui routent le trafic HTTP et HTTPS vers vos conteneurs.

Accès HTTP/HTTPS

Deux points d'entrée réseau sont disponibles selon vos besoins :

TypeAccessibilitéUsage recommandé
PublicInternetApplications destinées au grand public, sites web de production, APIs publiques
PrivéVPN uniquementEnvironnements de test, back-offices, consoles d'administration, outils internes

Routage TCP/UDP

Il est également possible, sur demande, de mettre en place un routage TCP/UDP direct vers vos workloads pour des protocoles non-HTTP (bases de données, services custom, etc.), sous la forme de services de type LoadBalancer.

Pour plus de détails, consultez la documentation Réseau.

Services annexes

Registry OCI

SdV vous met à disposition une registry OCI lors de la livraison de votre cluster Kubernetes.

Référez-vous à la documentation dédiée.

Collecte et centralisation des logs

SdV propose plusieurs options pour collecter et centraliser les logs de vos applications déployées dans ses clusters Kubernetes :

DestinationDescriptionCas d'usage
Buckets S3Stockage objet pour archivage long termeConformité, audit, analyse différée
ElasticsearchIndexation et recherche en temps réelDebugging, monitoring, dashboards Kibana
Services externesRoutage TCP vers des services tiers (Logstash, Splunk, etc.)Intégration avec infrastructure existante

Pour plus de détails, consultez la documentation Logs.

Monitoring / Alerting

Chaque cluster Kubernetes SdV est livré avec une solution de monitoring complète et opérationnelle dès sa mise en service. Cette infrastructure de supervision repose sur des outils standards de l'écosystème Kubernetes :

ComposantRôle et fonctionnalités
Prometheus OperatorSystème de collecte, d'agrégation et de stockage des métriques issues du cluster et de vos applications. Supporte les ServiceMonitors pour un scraping automatique.
GrafanaPlateforme de visualisation offrant une interface web intuitive pour explorer vos métriques via des graphiques interactifs et des tableaux de bord personnalisables.
Dashboards préconfigurésEnsemble de tableaux de bord prêts à l'emploi couvrant les aspects essentiels du cluster : vue d'ensemble, détail par namespace, par nœud, et par workload.
AlertManagerGestionnaire d'alertes centralisant les notifications issues de Prometheus. Supporte le routage intelligent, le groupement, la déduplication et l'envoi vers multiples canaux (email, Slack, webhook, PagerDuty, etc.).

Indicateurs disponibles

Cette stack de monitoring vous donne une visibilité complète sur :

  • Ressources matérielles : consommation CPU, mémoire RAM, espace disque et I/O réseau
  • Infrastructure : état de santé des nœuds (masters et workers), disponibilité et charge système
  • Workloads : statut des pods, nombre de restarts, temps de réponse, erreurs applicatives
  • Métriques applicatives : vous pouvez exposer vos propres métriques custom via le format Prometheus pour un monitoring spécifique à votre domaine métier

Système d'alerting

AlertManager gère de manière intelligente les alertes déclenchées par Prometheus selon plusieurs mécanismes :

  • Routage intelligent : direction des alertes vers différents destinataires selon leur sévérité, leur source ou tout autre critère configurable
  • Groupement : regroupement d'alertes similaires en une seule notification pour éviter la saturation
  • Déduplication : suppression des alertes redondantes déjà notifiées
  • Silencing : désactivation temporaire d'alertes pendant des maintenances programmées
  • Canaux multiples : envoi simultané vers plusieurs systèmes (email, Slack, Microsoft Teams, webhook HTTP, PagerDuty, Opsgenie, etc.)

Pour plus de détails, consultez la documentation Monitoring.

Connexion au cluster

L'accès à l'API Kubernetes est sécurisé et s'effectue selon deux modes possibles, définis lors de la mise en place initiale du cluster.

Modes d'accès

ModeDescriptionSécurité
Privé (défaut)L'API Kubernetes est hébergée dans un réseau privé, accessible uniquement via un tunnel VPN IPsecIsolation réseau complète + authentification K8s
Public (optionnel)L'API Kubernetes est exposée sur une adresse IP publique avec filtrage par liste blanche d'adresses IPFiltrage IP + authentification K8s

Configuration du VPN

Pour plus d'informations, référez-vous à la documentation dédiée.

Prérequis

Lors de la livraison du cluster, SdV vous fournit un dossier contenant :

  • Les paramètres de connexion VPN (adresse du serveur, certificats, clés)
  • Les identifiants d'authentification
  • La documentation spécifique à votre environnement

Installation du client

Un guide complet est disponible sur vpn.sdv.fr pour configurer votre client VPN selon votre système d'exploitation :

  • Windows : configuration via le client VPN natif ou des solutions tierces (OpenVPN, etc.)
  • macOS : configuration via les préférences système ou Tunnelblick
  • Linux : configuration via NetworkManager ou en ligne de commande
  • iOS/Android : applications mobiles compatibles

Validation de la connexion

Une fois le VPN actif, vous pouvez vérifier la connexion en testant l'accès à l'API Kubernetes :

Terminal
# Test de connectivité vers l'API Kubernetes
kubectl cluster-info
 
# Affichage des nœuds du cluster
kubectl get nodes

Utilisation de kubectl

Configuration initiale

Le fichier kubeconfig fourni à la livraison contient tous les éléments nécessaires pour authentifier vos requêtes :

  • L'URL de l'API Kubernetes
  • Les certificats d'authentification client
  • Les contextes pré-configurés (production, staging, etc.)

Pour l'utiliser, placez-le dans l'emplacement standard ou référencez-le explicitement :

Terminal
# Option 1 : Emplacement standard (recommandé)
mkdir -p ~/.kube
cp kube_config_rke_config.yml ~/.kube/config
 
# Option 2 : Variable d'environnement
export KUBECONFIG=/chemin/vers/kube_config_rke_config.yml
 
# Option 3 : Paramètre en ligne de commande
kubectl --kubeconfig=/chemin/vers/kube_config_rke_config.yml get pods

Gestion des permissions et sécurité

Bonnes pratiques de sécurité

Pour respecter le principe du moindre privilège, il est fortement recommandé de créer des identités dédiées avec des permissions limitées selon les besoins :

Type d'identitéUsage recommandé
ServiceAccountPour les applications et pipelines CI/CD automatisés nécessitant un accès programmatique au cluster
Utilisateur RBACPour les membres de l'équipe nécessitant un accès via kubectl avec des permissions spécifiques
Exemple de configuration à portée limitée

Voici un cas d'usage typique : créer un kubeconfig pour l'application A qui :

  • A des permissions en écriture uniquement sur les namespaces correspondant au pattern app-a-*
  • A des permissions en lecture seule sur les autres namespaces
Étape 1 : Créer un ServiceAccount
serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: app-a-deployer
  namespace: app-a-prod
Étape 2 : Définir les rôles et permissions
role.yaml
# Permissions en écriture sur les namespaces app-a-*
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: app-a-writer
  namespace: app-a-prod
rules:
- apiGroups: ["", "apps", "batch"]
  resources: ["pods", "deployments", "services", "configmaps", "secrets", "jobs"]
  verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
Étape 3 : Lier les rôles au ServiceAccount
rolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: app-a-writer-binding
  namespace: app-a-prod
subjects:
- kind: ServiceAccount
  name: app-a-deployer
  namespace: app-a-prod
roleRef:
  kind: Role
  name: app-a-writer
  apiGroup: rbac.authorization.k8s.io
Étape 4 : Générer le kubeconfig dédié

Vous trouverez plus de détails ainsi qu'un script vous facilitant la génération du kubeconfig dédié dans la section RBACs.

Terminal
# Récupérer le token du ServiceAccount
SECRET_NAME=$(kubectl get serviceaccount app-a-deployer -n app-a-prod -o jsonpath='{.secrets[0].name}')
TOKEN=$(kubectl get secret $SECRET_NAME -n app-a-prod -o jsonpath='{.data.token}' | base64 -d)
 
# Créer le fichier kubeconfig
kubectl config set-cluster mon-cluster --server=https://api.cluster.example.com:6443 --kubeconfig=kubeconfig-app-a
kubectl config set-credentials app-a-deployer --token=$TOKEN --kubeconfig=kubeconfig-app-a
kubectl config set-context app-a --cluster=mon-cluster --user=app-a-deployer --kubeconfig=kubeconfig-app-a
kubectl config use-context app-a --kubeconfig=kubeconfig-app-a

Commandes essentielles

Voici quelques commandes de base pour débuter avec votre cluster :

Terminal
# Lister les namespaces
kubectl get namespaces
 
# Lister les pods d'un namespace
kubectl get pods -n <namespace>
 
# Obtenir les détails d'un pod
kubectl describe pod <pod-name> -n <namespace>
 
# Consulter les logs d'un conteneur
kubectl logs <pod-name> -n <namespace>
 
# Exécuter une commande dans un pod
kubectl exec -it <pod-name> -n <namespace> -- /bin/bash

Documentation utile