Mon premier manifest¶
Les manifests permettent de décrire l’état souhaité des ressources déployées dans un cluster (approche déclarative). Il est recommandé d'utiliser des fichiers yaml
ou des déploiements Helm pour déployer les applications afin de minimiser les erreurs.
Description d'un manifest¶
Les manifests sont constitués de la version de l'API, du type de ressource (pod, service, déploiement...), de métadonnées et des caractéristiques.
Issu d'un exemple générique d'un tuto DevSecOps
apiVersion: v1
kind: Pod
metadata:
labels:
app: mon-label
name: mon-premier-pod
namespace: mon-ns
spec:
containers:
- name: conteneur-simple
image: hello-world
Manifests de l'application Jupyter¶
Nous allons utiliser le même pod Jupyter et service NodePort de la partie précédente.
Manifest du pod¶
Exercice
A partir de l'exemple ci-dessus, écrire un manifest myjupyter.yaml
qui utilise l'image Jupyter de base et s'applique dans le namespace tuto
.
Solution
Application d'un manifest¶
Manifest du service¶
Comme précédemment dans le cas d'un service web, il reste à créer le service NodePort correspondant en le décrivant dans un autre manifest myjupyter-svc.yaml
et l'appliquer :
apiVersion: v1
kind: Service
metadata:
name: myjupyter-service
namespace: tuto
spec:
type: NodePort
selector:
app: myjupyter
ports:
- protocol: TCP
port: 8888
nodePort: 30007
Nous remarquons que cette fois le port NodePort a été fixé à 30007
.
Vous pouvez vérifier que l'application Jupyter fonctionne comme précédement avec le port-forwarding.
Labels¶
Le label permet d'attacher les objets pour les identifier et les organiser.
Exercice
Ajouter au manifest myjupyter.yaml
les 3 labels de version, du nom d'application et d'environnement et réappliquer le pod.
Solution
Nous pouvons noter que l'update du pod est effectué automatiquement lorsque nous voyons pod/myjupyter configured
.
Il est aussi possible d'ajouter des labels à la volée :
La commande k edit
permet aussi de faire cette opération. Il est possible d'afficher les labels avec :
Les sélecteurs sont utilisés pour sélectionner un ensemble de ressources en fonction de leurs labels. Il est possible d'obtenir les logs d'une application grâce aux labels :
Si plusieurs pods de la même application sont en cours d'execution (comme nous verrons lors des déploiemenst), nous pouvons accéder à leurs logs simultanément.