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 listeNotIn: La valeur n'est pas dans la listeExists: La clé existeDoesNotExist: 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