kubectl exec -it <nom pod> -- /bin/bash
kubectl logs <nom pod>
Utilisé par exemple pour stocker la configuration d'une application
apiVersion: v1
kind: ConfigMap # un nouveau type
metadata:
name: my-app-config # on lui met un nom
data: # puis une liste de clefs-valeurs
database_uri: mongodb://localhost:27017
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: test-container
image: my-image
env:
- name: DATABASE_URI
valueFrom:
configMapKeyRef:
name: my-app-config
key: database_uri
Ici, nous indiquons où aller chercher les valeurs pour les variables d’environnement.
Consultez ce guide de la doc
Par exemple, si je demande un volume de 10G mais que l'administrateur n'a rendu disponible que des volumes de 5G, il faudra que j'attende qu'un volume de 10G soit disponible, sinon, je dois me contenter de 5G.
apiVersion: v1
kind: PersistentVolume # un nouveau type
metadata:
name: pv-volume
labels:
type: local
spec:
storageClassName: manual # la classe du stockage
capacity:
storage: 10Gi # la taille du volume
accessModes:
- ReadWriteOnce
hostPath: # on veut stocker sur le nœud physique
path: "/mnt/data" # son emplacement sur le nœud
Vérifications:
❯ kubectl get pv pv-volume
NAME CAPACITY ACCESSMODES ... STATUS STORAGECLASS
pv-volume 10Gi RWO ... Available manual
storageClassName: manual
indique que nous utilisons un stockage "statique";ReadwriteOnce
indique que seul un nœud pourra monter ce stockage, il sera donc disponible uniquement pour les Pods tournant sur ce nœud.Permet à un Pod de demander l'accès au stockage
apiVersion: v1
kind: PersistentVolumeClaim # un nouveau type
metadata:
name: app-pv-claim # un nom
spec:
storageClassName: manual # la classe du stockage
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi # la taille demandée
Vérifications:
❯ kubectl get pvc app-pv-claim
NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE
app-pv-claim Bound pv-volume 10Gi RWO manual 30s
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
volumes:
- name: my-app-storage # un nom pour le volume
persistentVolumeClaim:
claimName: app-pv-claim # le nom du "claim" à utiliser
containers:
- name: my-app
image: nginx
ports:
- containerPort: 80
volumeMounts:
- mountPath: "/usr/share/nginx/html" # point de montage dans le /pod/
name: my-app-storage # nom du stockage
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-claim
spec:
accessModes:
- ReadWriteMany
storageClassName: nfs
resources:
requests:
storage: 10Gi
ReadWriteMany
indique que ce PVC pourra être monté dans plusieurs PodsstorageClassName: nfs
indique que nous allons utiliser la classe de stockage NFSUn Dockerfile:
FROM debian
# ...
RUN useradd test
USER test
# CMD / ENTRYPOINT
Un Dockerfile:
FROM debian as builder
RUN apt install -y nodejs npm
RUN npm install && npm run build
FROM nginx
COPY --from=builder /app/dist/html /var/www/html
trivy k8s --report=summary
trivy k8s --severity=CRITICAL --report=all