Cheatsheet Kubernetes
Tags :
- MON
- 2023-2024
- temps 2
- kubernetes
- devops
Auteurs :
- Arthur Louradou
Une fois l’installation de minikube faite avec Docker, voici les commandes utiles pour setup un nouveau projet, couplées avec les configurations de base pour lancer une app web avec une base de données MongoDB.
minikube start --driver=none
Sur Ubuntu, --driver=qemu
fonctionne, --driver=docker
aussi, à condition de rentrer dans newgrp docker
Commandes
Après la configuration, voilà les commandes à disposition si les fichiers de configuration sont déjà prêts (fichier.yaml
désigne les fichiers configmap, secret, deployment, service…) :
kubectl apply -f fichier.yaml
kubectl get pod
kubectl get services
kubectl get all
kubectl logs <nom du service dans get pods> # pour afficher les logs du container
kubectl describe pod <nom du service dans get pods> # pour corriger certains bugs
minikube ip # afficher l'ip de sortie
kubectl get node -o wide # alternantive sans minikube
Fichiers de configuration
ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
name: mongo-config
data:
mongo-url: mongo-service
Secret
apiVersion: v1
kind: Secret
metadata:
name: mongo-secret
type: Opaque
data:
mongo-user: YWRtaW4=
mongo-password: YWRtaW4=
Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: mongo-deployment
labels:
app: mongo
spec:
replicas: 1
selector:
matchLabels:
app: mongo
template:
metadata:
labels:
app: mongo
spec:
containers:
- name: mongodb
image: mongo:5.0.23
ports:
- containerPort: 27017 # à reférencer dans les targetPort
env:
- name: MONGO_INITDB_ROOT_USERNAME
valueFrom:
secretKeyRef:
name: mongo-secret
key: mongo-user
- name: MONGO_INITDB_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mongo-secret
key: mongo-password
Pour ajouter des variables d’environnement au déploiement :
spec:
containers:
- name: envar-demo-container
image: gcr.io/google-samples/node-hello:1.0
env:
- name: DEMO_GREETING
value: "Hello from the environment"
- name: DEMO_FAREWELL
value: "Such a sweet sorrow"
Ces variables seront considérées comme des variables de la ligne du dockerfile contenant “ENV”
ENV MONGO_DB_USERNAME=admin MONGO_DB_PWD=password
Service
apiVersion: v1
kind: Service
metadata:
name: mongo-service
spec:
selector:
app: mongo
ports:
- protocol: TCP
port: 27017 # quelconque
targetPort: 27017 # lié au containerPort
apiVersion: v1
kind: Service
metadata:
name: webapp-service
spec:
type: NodePort
selector:
app: webapp
ports:
- protocol: TCP
port: 3000 # quelconque
targetPort: 3000 # lié au containerPort
nodePort: 30100 # port ouvert sur l'extérieur avec l'ip du NodePort