Exemple complet de déploiement¶
Voici un exemple complet du déploiement d’un serveur web de test présentant la page minimaliste whoami de containous.
L’image est disponible sur le DockerHub .
La partie Deployment permet de gérer le déploiement et la résilience des pods en eux-même :
apiVersion: apps/v1
kind: Deployment
metadata:
name: whoami
labels:
app: whoami
spec:
replicas: 2
selector:
matchLabels:
app: whoami
template:
metadata:
labels:
app: whoami
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- whoami
topologyKey: "kubernetes.io/hostname"
containers:
- name: test
image: docker.io/traefik/whoami:v1.10.3
imagePullPolicy: Always
readinessProbe:
httpGet:
path: /index.html
port: 80
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
httpGet:
path: /index.html
port: 80
initialDelaySeconds: 5
periodSeconds: 10
ports:
- name: web
containerPort: 80
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
Les Services et IngressRoute permettent de l’exposer (NB, il se peut que vous deviez modifier le host si celui-ci existe déjà sur le cluster) :
apiVersion: v1
kind: Service
metadata:
name: whoami
spec:
ports:
- protocol: TCP
name: web
port: 80
selector:
app: whoami
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: whoami
spec:
entryPoints:
- websecure
routes:
- match: Host(`whoami.kns.dri.fr`)
kind: Rule
services:
- name: whoami
port: 80
Ces manifestes peuvent être stockés ensemble ou séparémment dans des fichiers yaml, et déployés via la commande kubectl apply
N’oubliez pas de spécifier votre namespace via l’option -n
ou --namespace
, ou encore avec un outil comme kubens.