Aller au contenu principal

Chapitre 3.3 - Labels et Selectors

Objectifs d'Apprentissage

À la fin de ce chapitre, vous serez capable de:

  • Comprendre le rôle des Labels
  • Créer et utiliser des Labels
  • Sélectionner des ressources avec Selectors
  • Organiser vos ressources efficacement

Qu'est-ce qu'un Label?

Un Label est une paire clé-valeur attachée à une ressource Kubernetes pour l'identifier et l'organiser.


Pourquoi Utiliser des Labels?

Organisation

Les Labels permettent de:

  • Grouper des ressources logiquement
  • Filtrer et sélectionner des ressources
  • Organiser par environnement, application, version, etc.

Exemples de Labels

labels:
app: my-application # Nom de l'application
env: production # Environnement
tier: frontend # Couche (frontend/backend)
version: v1.2.3 # Version
team: backend-team # Équipe responsable
component: api-server # Composant

Déclaration de Labels

Dans le YAML

apiVersion: v1
kind: Pod
metadata:
name: web-pod
labels:
app: web
env: production
tier: frontend
version: v1
spec:
containers:
- name: nginx
image: nginx:1.20

Via kubectl

# Ajouter un label
kubectl label pod web-pod team=backend

# Modifier un label existant
kubectl label pod web-pod env=staging --overwrite

# Supprimer un label
kubectl label pod web-pod team-

Selectors

Les Selectors permettent de sélectionner des ressources basées sur leurs Labels.

Selectors Simples

selector:
matchLabels:
app: web
env: production

Selectors avec Expressions

selector:
matchExpressions:
- key: env
operator: In
values:
- production
- staging
- key: version
operator: NotIn
values:
- v1

Opérateurs:

  • In: La valeur est dans la liste
  • NotIn: La valeur n'est pas dans la liste
  • Exists: La clé existe
  • DoesNotExist: La clé n'existe pas

Utilisation dans kubectl

Filtrer avec Labels

# Pods avec un label spécifique
kubectl get pods -l app=web

# Pods avec plusieurs labels
kubectl get pods -l app=web,env=production

# Pods sans un label
kubectl get pods -l '!env'

# Pods avec un label dans une liste
kubectl get pods -l 'env in (production,staging)'

Sélecteurs Complexes

# Expression AND
kubectl get pods -l app=web,env=production

# Expression OR (via plusieurs requêtes)
kubectl get pods -l app=web
kubectl get pods -l app=api

Cas d'Usage: Services

Les Services utilisent des Selectors pour trouver les Pods:

apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
selector:
app: web
tier: frontend
ports:
- port: 80
targetPort: 8080

Bonnes Pratiques

Conventions de Nommage

  • Utilisez des noms courts et descriptifs
  • Évitez les caractères spéciaux (sauf - et _)
  • Utilisez des valeurs en minuscules
  • Maximum 63 caractères par label

Labels Recommandés

labels:
app.kubernetes.io/name: my-app
app.kubernetes.io/instance: my-app-prod
app.kubernetes.io/version: "1.2.3"
app.kubernetes.io/component: frontend
app.kubernetes.io/part-of: my-system
app.kubernetes.io/managed-by: helm

Résumé

Dans ce chapitre, vous avez appris:

Labels: Paires clé-valeur pour organiser les ressources
Selectors: Sélectionner des ressources basées sur les Labels
Utilisation: Services, Deployments, ReplicaSets utilisent des Selectors
Commandes: kubectl label, filtrage avec -l
Bonnes pratiques: Conventions de nommage et labels recommandés


Prochaines Étapes

Maintenant que vous maîtrisez les Labels:

Chapitre 3.4: Cycle de Vie des Pods
Chapitre 3.5: ReplicaSets


Chapitre créé le: Décembre 2024