0% ont trouvé ce document utile (0 vote)
31 vues39 pages

Guide D'étude CKAD

Ce document est un guide d'étude pour l'examen de Développeur d'Applications Kubernetes Certifié (CKAD). Il couvre des sujets tels que la création d'images de conteneurs, l'exécution de tâches et de cronjobs, la création de pods multi-conteneurs, l'utilisation de conteneurs d'initialisation et de volumes, le déploiement d'applications, la mise en œuvre de contrôles de santé et de sondes, la surveillance des applications, le débogage dans Kubernetes, la configuration des environnements d'application et de la sécurité, ainsi que les services et le réseau. Pour chaque sujet, il fournit un aperçu et des exemples pour aider à comprendre les concepts Kubernetes pertinents et à se préparer à la certification CKAD.

Transféré par

ScribdTranslations
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
31 vues39 pages

Guide D'étude CKAD

Ce document est un guide d'étude pour l'examen de Développeur d'Applications Kubernetes Certifié (CKAD). Il couvre des sujets tels que la création d'images de conteneurs, l'exécution de tâches et de cronjobs, la création de pods multi-conteneurs, l'utilisation de conteneurs d'initialisation et de volumes, le déploiement d'applications, la mise en œuvre de contrôles de santé et de sondes, la surveillance des applications, le débogage dans Kubernetes, la configuration des environnements d'application et de la sécurité, ainsi que les services et le réseau. Pour chaque sujet, il fournit un aperçu et des exemples pour aider à comprendre les concepts Kubernetes pertinents et à se préparer à la certification CKAD.

Transféré par

ScribdTranslations
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Guide d'étude

Kubernetes certifié
Développeur d'application (CKAD)
Guide d'étude
Will Boyd
Février 2022
Guide d'étude | Développeur d'applications Kubernetes certifié (CKAD)

Contenu

Conception et développement d'applications 5

Création d'images de conteneurs 5

Exécuter des emplois et des CronJobs 6

Construire des pods multi-conteneurs 7

Utilisation des conteneurs d'initialisation 8

Explorer les volumes 9

Utilisation des PersistentVolumes dix

Déploiement d'application 13

Comprendre les déploiements 13

Réalisation de mises à jour progressives 14

Déploiement avec des stratégies Blue/Green et Canary 14

Installation de Helm 18

Utiliser Helm 18

2
Guide d'étude | Développeur d'application Kubernetes certifié (CKAD)

Observabilité et maintenance des applications 20

Comprendre la politique de dépréciation de l'API 20

Mise en œuvre de sondes et de vérifications de santé 20

Surveillance des applications Kubernetes 22

Accéder aux journaux de conteneur 22

Débogage dans Kubernetes 23

Environnement d'application, configuration et sécurité 25

Utilisation des ressources personnalisées (CRD) 25

Utiliser des comptes de service 26

Comprendre l'authentification Kubernetes 27

Explorer le contrôle d'admission 28

Gestion de l'utilisation des ressources informatiques 29

Configurer des applications avec ConfigMaps et Secrets 31

Configuration du SecurityContext pour les conteneurs 34

Services et Réseautage 35

Contrôler l'accès au réseau avec des NetworkPolicies 35

3
Guide d'étude | Développeur d'application Kubernetes certifié (CKAD)

Exploration des services 37

Exposer des applications avec Ingress 38

4
Guide d'étude | Développeur d'application Kubernetes certifié (CKAD)

Conception et construction d'application

Création d'Images de Conteneurs

Documentation pertinente

• Installer Docker Engine sur Ubuntu


• docker construire
• Référence Dockerfile

Conseils pour les examens

• Les images sont des fichiers qui incluent tous les logiciels nécessaires à l'exécution d'un
conteneur.
Un Dockerfile définit le contenu d'une image.
• Le construction dockerLa commande construit une image en utilisant un Dockerfile.

Un Dockerfile est un ensemble d'instructions pour construire une image de conteneur avec
Docker

Cet exemple de Dockerfile utilise le nginx:stableimage comme base. Ensuite,


il copie un fichier appelé [Link] système de fichiers local dans le
image de conteneur à l'emplacement /usr/share/nginx/html/.

DE nginx:stable

COPIER [Link] /usr/share/nginx/html/

• DE- Définit une image de départ à utiliser comme référence.


• COPIER- Copie un fichier ([Link]) depuis le système de fichiers local dans le
image de conteneur (dans ce cas, à l'emplacement /usr/share/nginx/
html/).

Construisez une image de conteneur à partir du répertoire actuel. Le -tle drapeau spécifie
le nom de la balise d'image.

docker build -t mon-image:1.0 .

Enregistrez une image dans un fichier. Le -odéfinit le fichier de destination. 1.0est


le nom de l'étiquette de l'image à enregistrer.

docker save -o ~/[Link] mon-image:1.0

5
Guide d'étude | Développeur d'applications Kubernetes certifié (CKAD)

Exécution des tâches et des CronJobs

Documentation pertinente

• Emplois
• Tâche planifiée

Conseils pour les examens

• Un travail est conçu pour exécuter avec succès une tâche conteneurisée pour
achèvement.
Les CronJobs exécutent des tâches périodiquement selon un calendrier.
• Le politiqueDeRedémarragepour un Pod Job ou CronJob doit être Échecou
Jamais.
• Utiliser secondesActiveDeadlinedans la spécification du travail pour terminer le travail si cela
court trop longtemps.

Un emploi exécute une tâche conteneurisée et tente de l'exécuter avec succès pour
achèvement.

versionDeL'api: lot/v1
Emploi

mon-travail
spéc
modèle
spec
conteneurs
imprimer
busybox:stable
command: ["echo", "This is a test!"]
Jamais
backoffLimit: 4
activeDeadlineSeconds: 10

secondesActivesAvantÉchéancefixe une limite de temps pour l'exécution du travail. Si le


Le travail dépassant cette limite de temps sera terminé.

Un CronJob exécute des tâches régulièrement selon un emploi du temps.

6
Guide d'étude | Développeur d'application Kubernetes certifié (CKAD)

versionApi: batch/v1
CronJob

mon-cronjob
spécification
*/1 * * * *
jobTemplate
spécifications
modèle
spec
conteneurs
imprimer
busybox:stable
command: ["echo", "This is a test!"]
Jamais
backoffLimit: 4
activeDeadlineSeconds: 10

Le horaireest une expression cron qui détermine le calendrier le


Le CronJob s'exécutera. Cet exemple s'exécutera une fois par minute.

Construire des Pods Multi-Containers

Documentation pertinente

• Le Kit d'Outils pour Systèmes Distribués : Modèles pour Conteneurs Composites


• Pods - Partage des ressources et communication
• Volumes Partagés

Conseils pour les examens

Un conteneur sidecar effectue une tâche qui aide le conteneur principal.


• Un conteneur d'ambassadeur fait office de proxy pour le trafic réseau vers et/ou depuis le
conteneur principal.
Un conteneur adaptateur transforme la sortie du conteneur principal.

Un Pod multi-contenant est simplement un Pod qui inclut plus d'un.


conteneur.

Dans cet exemple, écrivainest le conteneur principal. Il écrit des données dans un fichier. Le
sidecarLe conteneur lit ces données à partir d'un volume partagé puis les écrit.
au journal du conteneur.

7
Guide d'étude | Développeur d'application Kubernetes certifié (CKAD)

versionApi: v1
Pod
metadata:
test de sidecar
spec
conteneurs
écrivain
busybox:stable
commande: ['sh', '-c', 'echo "L'écrivain a écrit ceci !" > /
sortie/donné[Link]; pendant que vrai; faire dormir 5; terminé]

montagesDeVolume
partagé
/sortie
sidecar
busybox:stable
commande: ['sh', '-c', 'tant que véritable; faire cat /input/[Link];
sleep 5; done']
montagesDeVolume
partagé
/input
volumes
partagé
emptyDir: {}

Utiliser des conteneurs d'initialisation

Documentation pertinente

• Conteneurs d'init

Conseils pour les examens

Les conteneurs Init s'exécutent jusqu'à leur achèvement avant que le conteneur principal ne démarre.
• Ajoutez des conteneurs d'initialisation en utilisant le initContainerschamp du PodSpec.

Les conteneurs d'init exécutent des tâches pendant la phase de démarrage d'un Pod, avant le
le conteneur principal commence à se lancer.

8
Guide d'étude | Développeur d'applications Kubernetes certifié (CKAD)

apiVersion: v1
Pod

test-init
spécification
conteneurs
nginx
image: nginx:stable
initContainers:
busybox
busybox:stable
command: ['sh', '-c', 'sleep 60']

Explorer les volumes

Documentation pertinente

• Volumes

Conseils d'examen

Le volumesLe champ dans la spécification du Pod définit les détails concernant les volumes utilisés.
dans le Pod.
• Le montages de volumesLe champ dans la spécification du conteneur monte un volume à un
conteneur spécifique à un emplacement spécifique.
• cheminHôteles volumes montent des données à partir d'un emplacement spécifique sur l'hôte
(nœud k8s)
• cheminHôtetypes de volume
• Répertoire– Monte un répertoire existant sur l'hôte.
• RépertoireOuCréerMonte un répertoire sur l'hôte et crée
s'il n'existe pas.
• Fichier– Monte un fichier unique existant sur l'hôte.
• FichierOuCréer– Monte un fichier sur l'hôte, et le crée si cela est nécessaire.
n'existe pas.
• dossierVideles volumes offrent un stockage temporaire qui utilise le fichier hôte
système et sont supprimés si le Pod est supprimé.

Les volumes sont utilisés pour fournir un stockage externe aux conteneurs.

Cet exemple de Pod utilise un volume hostPath pour lire des données à partir de l'hôte
machine à /etc/hostPath.

9
Guide d'étude | Développeur d'applications Kubernetes certifié (CKAD)

versionApi: v1
Pod
No text provided for translation.
test-volume-hostpath
spec
En cas d'échec
conteneurs
busybox
busybox:stable
commande: ['sh', '-c', 'cat /data/[Link]']
montagesDeVolume
données-hôte
/données
volumes
données-hôtes
hostPath
/etc/hostPath
Répertoire

Utiliser des volumes persistants

Documentation pertinente

• Volumes Persistants

Conseils pour les examens

Un PersistentVolume définit une ressource de stockage.


Un PersistentVolumeClaim définit une demande de consommation d'un stockage
ressource.
Les PersistentVolumeClaims se lient automatiquement à un PersistentVolume qui
répond à leurs critères.
Montez un PersistentVolumeClaim dans un conteneur comme un volume normal.

Un PersistentVolume, comme un volume régulier, fournit un stockage externe à


les conteneurs. Cependant, un PersistentVolume vous permet de traiter le stockage comme un
ressource abstraite, tout comme Kubernetes traite d'autres ressources telles que
CPU et mémoire.

10
Guide d'étude | Développeur d'applications Kubernetes certifié (CKAD)

Un PersistentVolume :

versionApi: v1
VolumePersistant

hostpath-pv
spec
capacité
1Gi
accessModes
LireÉcrireUneFois
lent
hostPath
/etc/hostPath
Répertoire

Pour utiliser un PersistentVolume, vous avez besoin d'une PersistentVolumeClaim.


Le PersistentVolumeClaim se liera automatiquement à un PersistentVolume qui
répond à ses exigences.

versionApi: v1
PersistentVolumeClaim

hostpath-pvc
spec
accessModes
LectureÉcritureUneFois

ressources
requests
200Mo
lent

11
Guide d'étude | Développeur d'application Kubernetes certifié (CKAD)

Vous pouvez monter un PersistentVolumeClaim dans un Pod tout comme n'importe quel autre.
volume.

v1
Pod

test-pv-pod
spec
En cas d'échec
conteneurs
busybox
busybox:stable
command: ['sh', '-c', 'cat /data/[Link]']
volumeMounts
pv-hôte-données
/data
volumes
donnees-hôte-pv
persistentVolumeClaim
hostpath-pvc

12
Guide d'étude | Développeur d'application Kubernetes certifié (CKAD)

Déploiement d'Application

Comprendre les déploiements

Documentation pertinente

• Déploiement

Conseils pour les examens

• Un déploiement gère activement un état souhaité pour un ensemble de répliques


Gousses.
• Le modèle de Pod fournit la configuration du Pod que le Déploiement
sera utilisé pour créer de nouveaux Pods.
• Le répliquesle champ définit le nombre de répliques. Vous pouvez augmenter ou diminuer
diminuez en changeant cette valeur.

Un déploiement gère un état souhaité pour un ensemble de Pods répliqués et aide


avec le processus de déploiement de nouveau code.

Cet exemple crée 2 réplicas d'un Pod en cours d'exécution nginx.

apiVersion: apps/v1
Déploiement

déploiement-nginx
spec
replicas: 2
selector
matchLabels
nginx
modèle

étiquettes
nginx
spec
conteneurs
nginx
nginx:1.14.2
ports
- containerPort: 80

13
Guide d'études | Développeur d'applications Kubernetes certifié (CKAD)

Effectuer des mises à jour progressives

Documentation pertinente

• Mise à jour d'un déploiement

Conseils pour les examens

Une mise à jour progressive déploie progressivement des changements sur le Pod d'un Déploiement.
modèle en remplaçant progressivement les répliques par de nouvelles.
• Utiliser kubectl état de déploiementvérifier le statut d'une mise à jour en continu.
• Rétrogradez la dernière mise à jour progressive avec : kubectl rollback.

Les déploiements peuvent effectuer des mises à jour progressives en remplaçant progressivement les anciens Pods.
avec de nouveaux exécutant de nouveaux codes/configurations.

Vous pouvez initier une mise à jour continue simplement en changeant le modèle de Pod.
configuration (comme la version de l'image). Une façon de le faire est simplement par
modifier le déploiement, par exemple, avec kubectl modifier le déploiement.

Vous pouvez également utiliser une commande déclarative comme :

kubectl définir l'image dé[Link]/rolling-deployment


nginx:1.16.1

Vérifiez l'état du déploiement en cours :

kubectl rollout status déploiement/rolling-deployment

Annuler/revenir en arrière de la dernière mise à jour progressive :

kubectl rollback déploiement/déploiement-roulant

Déploiement avec des stratégies Blue/Green et Canary

Documentation pertinente

• Déploiement
• Service

Conseils pour les examens

Vous pouvez utiliser plusieurs Déploiements pour configurer des environnements blue/green.
dans Kubernetes.

14
Guide d'étude | Développeur d'application Kubernetes certifié (CKAD)

• Utilisez des étiquettes et des sélecteurs sur les services pour diriger le trafic des utilisateurs vers différents
Gousses.
• Une méthode simple pour configurer un environnement canari dans Kubernetes est d'utiliser un
Service qui sélectionne des Pods de 2 déploiements différents. Variez le
nombre de répliques pour diriger moins d'utilisateurs vers l'environnement canari.

Les stratégies de déploiement comme le blue/green et le canary peuvent vous aider à améliorer
stabilité lors du déploiement de nouveau code.

•Bleu/Vert - Créez un deuxième environnement identique fonctionnant avec le nouveau


codez, testez-le, puis dirigez le trafic des utilisateurs vers le nouvel environnement.
•Canary - Créez un deuxième environnement identique exécutant le nouveau
code, et diriger un petit pourcentage du trafic des utilisateurs vers le nouveau
environnement pour vérifier qu'il fonctionne avant de déployer le nouveau code pour
tous les utilisateurs.

Vous pouvez utiliser des objets Kubernetes comme des Déploiements et des Services pour
mettez en œuvre ces stratégies de déploiement.

Un exemple de configuration bleue/verte :

apiVersion: apps/v1
Déploiement

déploiement-bleu
spec
replicas: 1
sélecteur
étiquettesDeCorrespondance
test-bleuvert
bleu
modèle
métadonnées :
labels
test-bleubleu
bleu
spécification
conteneurs
nginx
image: linuxacademycontent/ckad-nginx:blue
ports
- containerPort: 80

15
Guide d'étude | Développeur d'application Kubernetes certifié (CKAD)

apiVersion: apps/v1
Déploiement

déploiement-vert
spec
replicas: 1
selector
matchLabels
test-bleuvert
vert
modèle

étiquettes
test-bleuvert
vert
spec
conteneurs
nginx
linuxacademycontent/ckad-nginx:vert
ports
- containerPort: 80

v1
Service

service-test-bleuvert
spec
selector
test bleu-vert
bleu
ports
TCP
port : 80
targetPort: 80

16
Guide d'étude | Développeur d'application Kubernetes certifié (CKAD)

Un exemple de configuration canari :

versionApi: apps/v1
Déploiement

déploiement-principal
spec
replicas: 3
selector
matchLabels
test-de-canari
principal
modèle

étiquettes
test-de-cannari
principal
spéc
conteneurs
nginx
linuxacademycontent/ckad-nginx:1.0.0
ports
- containerPort: 80

apiVersion : apps/v1
Déploiement

déploiement-canarien
spec
replicas: 1
selector
matchLabels
test-de-canet
canari
modèle

labels
test-canariste
canari
spécifications
conteneurs
nginx
linuxacademycontent/ckad-nginx:canary
ports
- containerPort: 80

17
Guide d'étude | Développeur d'applications Kubernetes certifié (CKAD)

versionApi: v1
Service

service-test-canari
spécifications
selector
test de canari
ports
TCP
port: 80
targetPort: 80

Installation de Helm

Documentation pertinente

• Installation de Helm

Conseils pour les examens

• Helm est un outil de gestion de paquets pour les applications Kubernetes.

Remarque : L'installation de l'outil Helm ne fait pas partie du programme CKAD.

Utiliser Helm

Documentation pertinente

• Guide de démarrage rapide de Helm

Conseils pour les examens

• Les Helm Charts sont des packages qui contiennent toutes les définitions de ressources.
nécessaire de faire fonctionner une application dans un cluster.
Un dépôt Helm est une collection de Charts et une source pour naviguer.
et les télécharger.

Avant d'installer un Helm Chart, vous devez ajouter un dépôt.

ajouter le dépôt helm bitnami [Link]

Mettre à jour un référentiel.

mise à jour du dépôt helm

18
Guide d'étude | Développeur d'applications Kubernetes certifié (CKAD)

Voir une liste de graphiques disponibles dans un référentiel.

helm chercher repo bitnami

Installer un graphique.

helm install --set [Link]=false -n dokuwiki


dokuwiki bitnami/docuwiki

19
Guide d'étude | Développeur d'applications Kubernetes certifié (CKAD)

Observabilité et Maintenance des Applications

Comprendre la politique de dépréciation de l'API

Documentation pertinente

• Politique de désuétude de Kubernetes


• Guide de migration de l'API obsolète

Conseils pour les examens

La dépréciation de l'API est le processus d'annonce des changements à une API à l'avance,
donner aux utilisateurs le temps de mettre à jour leur code et/ou leurs outils.
Kubernetes supprime le support des API obsolètes qui sont en GA.
(Disponibilité générale) uniquement après 12 mois ou 3 versions de Kubernetes,
le plus long des deux.

Mise en œuvre des sondes et des vérifications de santé

Documentation pertinente

• Configurer les sondes de vivacité, de disponibilité et de démarrage

Conseils pour les examens

Les sondes de vivacité vérifient si un conteneur est en bonne santé afin qu'il puisse être
redémarré s'il ne l'est pas.
• Les sondes de disponibilité vérifient si un conteneur est entièrement démarré et
prêt à être utilisé.
• Les probes peuvent exécuter une commande à l'intérieur du conteneur, effectuer une requête HTTP
demander ou tenter une connexion de socket TCP pour déterminer le conteneur
statut.

20
Guide d'étude | Développeur d'application Kubernetes certifié (CKAD)

Une sonde de vivacité qui exécute une commande pour détecter l'état de santé du conteneur :

v1
Pod

pod-de-vitalité
spec
conteneurs
busybox
busybox:stable
command: ['sh', '-c', 'while true; do sleep 10; done']
livenessProbe
exécuter :
command: ['echo', 'health check!']
initialDelaySeconds: 5
periodSeconds: 5

Ce Pod a à la fois un test de vivacité et un test de préparation, tous deux


utiliser un httpdemande de vérifier le statut du conteneur.

apiVersion: v1
Pod
metadata:
pod de préparation
spec
conteneurs
nginx
nginx:1.20.1
ports
- containerPort: 80
livenessProbe
httpObtenir
/
port: 80
initialDelaySeconds: 3
periodSeconds: 3
readinessProbe
httpGet
/
80
initialDelaySeconds: 15
periodSeconds: 5

21
Guide d'études | Développeur d'applications Kubernetes certifié (CKAD)

Surveillance des applications Kubernetes

Documentation pertinente

• Pipeline des métriques de ressources


• Outils de surveillance des ressources
• metrics-server GitHub

Conseils d'examen

L'API de métriques Kubernetes fournit des données métriques sur les conteneurs.
performance.
• Vous pouvez consulter les métriques des pods en utilisant kubectl top pod.

Lorsque le serveur de métriques est installé, vous pouvez utiliser kubectl topà voir
données d'utilisation des ressources.

Afficher l'utilisation des ressources pour les Pods dans le défautEspace de noms :

kubectl top pod

Vous pouvez utiliser -npour spécifier l'Espace de noms :

kubectl top pos -n un

Voir l'utilisation des ressources par nœud :

kubectl top nœud

Accéder aux journaux des conteneurs

Documentation pertinente

• Architecture de journalisation

Conseils pour les examens

La sortie standard/erreur des conteneurs est stockée dans le journal du conteneur.


• Vous pouvez afficher le journal du conteneur à l'aide de kubectl journaux.

• Pour les Pods multi-conteneurs, utilisez le -cflag pour spécifier de quel conteneur
logs que vous souhaitez consulter.

Utiliser kubectl journauxrécupérer les journaux du conteneur.

22
Guide d'étude | Développeur d'applications Kubernetes certifié (CKAD)

kubectl logs my-pod -n un

Utiliser -cpour spécifier quel conteneur obtenir les journaux. Cela est requis si le
Le pod a plus d'un conteneur.

kubectl logs mon-pod -n un -c busybox

Débogage dans Kubernetes

Documentation pertinente

• Dépanner les applications


• Introspection et débogage d'application
• Surveillance, journalisation et débogage

Conseils pour les examens

• Utiliser kubectl obtenir des podsvérifier le statut de tous les Pods dans un
Espace de noms. Utilisez le --tous-les-espaces-de-nomsdrapeau si vous ne savez pas quoi
Namespace à explorer.
• Utiliser kubectl décrireobtenir des informations détaillées sur Kubernetes
objets.
• Utiliser kubectl logspour récupérer les journaux des conteneurs.
• Vérifiez les journaux au niveau du cluster si vous ne pouvez toujours pas localiser des éléments pertinents.
information.

Lister les Pods pour voir l'état des Pods dans un Namespace :

kubectl obtenir des pods

Utiliser --tous-les-espaces-de-nomsvérifier l'état des Pods dans tous les espaces de noms. Ceci est
utile si vous ne savez pas dans quel espace de noms un problème est situé.

kubectl obtenir des pods --tous les espaces de noms

Obtenez des informations détaillées sur un seul Pod :

kubectl décrire pod mon-pod

Obtenez les journaux de conteneur pour diagnostiquer les problèmes :

kubectl logs mon-pod

23
Guide d'étude | Développeur d'application Kubernetes certifié (CKAD)

Obtenez les journaux du serveur API Kubernetes pour le cluster kubeadm (doit être exécuté sur un
nœud du plan de contrôle) :

sudo cat /var/log/containers/kube-apiserver-k8s-control_kube-


system_kube-apiserver-<hash>.log

Obtenez les journaux kubelet pour le nœud actuel :

sudo journalctl -u kubelet

24
Guide d'étude | Développeur d'applications Kubernetes certifié (CKAD)

Environnement d'application, configuration, et

Sécurité

Utilisation des ressources personnalisées (CRD)

Documentation pertinente

• Étendre l'API Kubernetes avec des CustomResourceDefinitions


• Ressources personnalisées

Conseils pour les examens

Les ressources personnalisées sont des extensions de l'API Kubernetes.


Une CustomResourceDefinition définit une ressource personnalisée.

Un exemple de CRD :

apiVersion: [Link]/v1
DéfinitionDeRessourcePersonnalisée

[Link]
spec
[Link]
names
ruche
ruche
Ruche
shortNames
ruche
Nommé
versions
v1
served: true
véridique
schema
openAPIV3Schema
objet
propriétés
spec
objet
propriétés

25
Guide d'étude | Développeur d'applications Kubernetes certifié (CKAD)

supers
entier
abeilles
entier

L'exemple de CRD vous permettrait de créer des objets comme ceci :

apiVersion: [Link]/v1
Ruche

test-ruche
spéc
supers: 3
bees: 60000

Vous pouvez interagir avec des ressources personnalisées, tout comme avec Kubernetes normal.
ressources, avec des commandes comme kubectl obteniret kubectl décrire.

Utilisation des comptes de service

Documentation pertinente

• Configurer des comptes de service pour les pods


• Gestion des comptes de service
• Utilisation de l'autorisation RBAC

Conseils pour les examens

Les ServiceAccounts permettent aux processus au sein des conteneurs de s'authentifier.


avec le serveur d'API Kubernetes.
• Vous pouvez définir le ServiceAccount du Pod avec nomDuCompteDeServicedans
la spécification du Pod.
Le jeton ServiceAccount du Pod est automatiquement monté sur le Pod.
conteneurs.

Un exemple de compte de service :

versionApi: v1
Compte de service

mon-sa
automountServiceAccountToken: true

26
Guide d'étude | Développeur d'application Kubernetes certifié (CKAD)

Définissez le ServiceAccount utilisé par un Pod avec nomDuCompteDeServiceSpec.

v1
Pod

sa-pod
spéc.
mon-sa
conteneurs
nginx
image: nginx:stable

Comprendre l'authentification Kubernetes

Documentation Pertinente

• Authentification
• Contrôle d'accès à l'API Kubernetes
• Utiliser l'autorisation RBAC

Conseils pour les examens

• Les utilisateurs normaux s'authentifient généralement à l'aide de certificats clients, tandis que
Les comptes de service utilisent généralement des jetons.
• L'autorisation pour les utilisateurs normaux et les comptes de service peut être
géré en utilisant le contrôle d'accès basé sur les rôles (RBAC).
• Les rôles et les ClusterRoles définissent un ensemble spécifique de permissions.
• Les RoleBindings et ClusterRoleBindings lient des Rôles ou des ClusterRoles à
utilisateurs/ComptesDeService.

Le contrôle d'accès basé sur les rôles (RBAC) fournit une autorisation pour le
API Kubernetes, détermination des autorisations accordées aux utilisateurs,
Comptes de service, etc.

• Rôle- Définit un ensemble de permissions et existe au sein d'un Namespace.


• ClusterRole- Définit un ensemble de permissions et existe à l'échelle du cluster.
• Lien de rôle- Lier un Rôleou ClusterRoleà des sujets tels que
utilisateurs ou Comptes de Service. Les autorisations ne prennent effet que dans un
Espace de noms.
• ClusterRoleBinding- Lie un Rôleou ClusterRoleaux sujets
tels que les utilisateurs ou les Comptes de Service. La permission prend effet au niveau du cluster-
large

27
Guide d'étude | Développeur d'application Kubernetes certifié (CKAD)

Un rôle qui permet d'obtenir une liste de Pods :

versionApi: [Link]/v1
Rôle

liste-des-pods-rôle
règles
- apiGroups: [""]
resources: ["pods"]
verbs: ["list"]

Un RoleBinding qui lie le Rôle lister-les-pods-rôleau Compte de Service


mon-sadans le défautEspace de noms.

apiVersion: [Link]/v1
LiensDeRôle

lister-des-pods-rb
sujets
Compte de service
mon-sa
espace de noms: par défaut

roleRef
Rôle
liste-des-pods-rôle
apiGroupe: [Link]

Explorer le contrôle d'admission

Documentation pertinente

• Utilisation des contrôleurs d'admission


• Un guide sur les contrôleurs d'admission Kubernetes

Conseils d'examen

Les contrôleurs d'admission interceptent les demandes à l'API Kubernetes et peuvent


être utilisé pour les valider et/ou les modifier.
• Vous pouvez activer les contrôleurs d'admission en utilisant le
--activer-les-plugins-d'admissiondrapeau pour kube-apiserver.

Les contrôleurs d'admission agissent sur les requêtes entrantes à l'API Kubernetes.
Ils peuvent valider/décliner et même modifier les demandes.

sudo vi /etc/kubernetes/manifests/[Link]

28
Guide d'étude | Développeur d'applications Kubernetes certifié (CKAD)

Le --activer-les-plugins-d'admissionle drapeau pour le serveur API Kube vous permet de


activer des plugins d'admission supplémentaires. Le NamespaceAutoProvision
Le plugin de contrôleur d'admission crée automatiquement des espaces de noms lorsque vous
essayez de créer un objet avec un espace de noms qui n'existe pas.

--enable-admission-
NodeRestriction, NamespaceAutoProvision

Gestion de l'utilisation des ressources de calcul

Documentation pertinente

• Gestion des ressources pour les conteneurs


• Affecter des ressources CPU aux conteneurs et aux pods
• Quota de ressources

Conseils pour les examens

Une demande de ressource informe le cluster de l'utilisation des ressources attendue.


pour un conteneur. Il est utilisé pour sélectionner un nœud qui dispose de suffisamment de ressources
disponible pour exécuter le Pod.
Une limite de ressource fixe une limite supérieure au nombre de ressources qu'un conteneur
peut utiliser. Si le processus du conteneur essaie de dépasser cette limite, le
le processus du conteneur sera terminé.
Un ResourceQuota limite la quantité de ressources qui peuvent être utilisées
dans un espace de noms spécifique. Si un utilisateur tente de créer ou de modifier
objets dans cet espace de noms de sorte que le quota serait dépassé,
la demande sera refusée.

Demandes de ressources - Spécifiez un montant approximatif attendu


utilisation des ressources. Kubernetes utilisera ces informations pour planifier les Pods sur
Nœuds où les ressources demandées sont disponibles.

Limites de ressources - Spécifiez une limite supérieure imposée pour l'utilisation des ressources. Le
le processus de conteneur sera terminé s'il dépasse ces limites.

29
Guide d'étude | Développeur d'applications Kubernetes certifié (CKAD)

Un Pod avec des demandes de ressources et des limites pour cpuet mémoire .

versionApi: v1
Pod

ressources-pod
ressources-test
spec
conteneurs
busybox
busybox:stable
commande: ['sh', '-c', 'tandis que vrai; faire echo En cours...;
dormir 5 ; fait
ressources
demandes
64Mo
250m
limites
128Mi
500m

ResourceQuota - Spécifiez les limites d'utilisation des ressources pour un Namespace. Quand
en créant des Pods, le ResourceQuota vérifiera les demandes de ressources du Pod
à côté de tous les Pods existants. Cela refusera la création de Pod si cela devait causer le
Quota de l'espace de noms dépassé.

versionApi: v1
Quota de ressources
métadonnées:
ressources-test-quota
ressources-test
spécification
dur
128Mi
500m
256Mi
1

30
Guide d'étude | Développeur d'application Kubernetes certifié (CKAD)

Configurer des applications avec des ConfigMaps et


Secrets

Documentation pertinente

• ConfigMaps
• Secrets

Conseils pour les examens

• Un ConfigMap stocke les données de configuration qui peuvent être transmises à


conteneurs.
• Un Secret est conçu pour stocker des données de configuration sensibles telles que
mots de passe ou clés API.
Les données provenant à la fois des ConfigMaps et des Secrets peuvent être transmises aux conteneurs.
en utilisant soit un montage de volume soit des variables d'environnement.

Les ConfigMaps stockent les données de configuration à transmettre à l'application


conteneurs.

Un exemple de ConfigMap :

versionApi: v1
ConfigMap

ma-configmap
data
Bonjour, le monde!
|
Un fichier de configuration !
valeur1
valeur2

31
Guide d'étude | Développeur d'applications Kubernetes certifié (CKAD)

Vous pouvez passer les données de ConfigMap à un conteneur soit sous forme d'environnement
variable ou comme un volume monté :

versionApi: v1
Pod

cm-pod
spécifications
Jamais
conteneurs
busybox
busybox:stable
command: ['sh', '-c', 'echo $MESSAGE; cat /config/[Link]']
env :
MESSAGE
valueFrom
configMapKeyRef:
ma-configmap
message
montagesDeVolume
config
/config
readOnly: true
volumes
configuration
configMap
ma-configmap
éléments
[Link]
[Link]

Les secrets sont similaires aux ConfigMaps, mais sont conçus pour stocker des données sensibles.
comme les mots de passe ou les clés API.

Lors de la création d'un manifeste Secret, vous devez d'abord encoder en base64 tout secret.
valeurs.

echo Choses secrètes! | base64

32
Guide d'étude | Développeur d'applications Kubernetes certifié (CKAD)

Un exemple de Secret avec des valeurs encodées en base64 :

versionApi : v1
Secret

mon-secret
Opaque
data
Secret Stuff!
U2VjcmV0IHN0dWZmIGluIGEgZmlsZSEK

Vous pouvez passer des données secrètes à un conteneur en utilisant des variables d'environnement ou
volumes montés, tout comme un ConfigMap.

versionApi: v1
Pod

pod-secret
spec
Jamais
conteneurs
busybox
busybox:stable
commande: ['sh', '-c', 'echo $SENSITIVE_STUFF; cat /config/']
[Link]
env
CHARENT_STUFF
valueFrom
secretKeyRef
mon-secret
donné[Link]
montagesDeVolume
configuration-secrète
/config
readOnly: true
volumes
configuration-secrète
secret
mon-secret
articles
mots_de_passe.txt
mots_de_passe.txt

33
Guide d'étude | Développeur d'applications Kubernetes certifié (CKAD)

Configuration du SecurityContext pour les conteneurs

Documentation pertinente

• Configurer un contexte de sécurité pour un Pod ou un conteneur

Conseils pour l'examen

Le SecurityContext d'un conteneur vous permet de contrôler la sécurité avancée


paramètres liés au conteneur.
• Définir l'identifiant d'utilisateur (UID) et l'identifiant de groupe (GID) du conteneur avec
[Link] [Link].
• Activer ou désactiver l'escalade des privilèges avec
[Link]'élévationDesPrivilèges.
• Rendre le système de fichiers racine du conteneur en lecture seule avec
[Link].

contexteDeSécuritévous permet de personnaliser une variété de niveaux OS, sécurité-


paramètres liés aux conteneurs.

Un Pod qui utilise contexte de sécurité:

versionApi : v1
Pod

contexteSécurité-pod
spec
conteneurs
busybox
busybox:stable
commande: ['sh', '-c', 'tant que vrai; faire écho Exécution...;
dormir 5; fait
securityContext
runAsUser: 3000
runAsGroup: 4000
false
readOnlyRootFilesystem: true

• runAsUser: 3000Le processus du conteneur s'exécutera sous l'ID utilisateur 3000.


• runAsGroup: 4000- Le processus de conteneur s'exécutera avec l'ID de groupe 4000.
• allowPrivilegeEscalation: false- Désactive le mode privilégié pour
le conteneur.
• readOnlyRootFilesystem: true- Marque la racine du conteneur
système de fichiers en lecture seule, empêchant toute écriture sur ce système de fichiers.

34
Guide d'étude | Développeur d'applications Kubernetes certifié (CKAD)

Services et Réseautage

Contrôler l'accès au réseau avec des NetworkPolicies

Documentation pertinente

• PolitiquesDeRéseau
• Réseautage de cluster

Conseils pour les examens

• Si un Pod n'est sélectionné par aucune NetworkPolicies, le Pod est non-


isolé, et tout le trafic est autorisé.
• Si un Pod est sélectionné par une NetworkPolicy, le trafic sera bloqué à moins que
il est autorisé par au moins 1 NetworkPolicy qui sélectionne le Pod.
• Si vous combinez un sélecteurDeNamespaceet un sélecteurDePoddans le
la même règle, le trafic doit répondre à la fois aux exigences liées au Pod et à celles liées au Namespace
conditions afin d'être autorisé.
• Même si une NetworkPolicy autorise le trafic sortant depuis le Pod source,
Les NetworkPolicies pourraient toujours bloquer le même trafic lorsqu'il est en entrée vers
le pod de destination.

Les NetworkPolicies vous permettent de contrôler quels trafics sont autorisés et lesquels ne le sont pas.
au sein du réseau de cluster.

Choses importantes à retenir :

• Si aucune NetworkPolicy ne sélectionne un Pod, le Pod est non isolé. Il permet


trafic vers et depuis lui-même.
• Si un Pod est sélectionné par au moins 1 NetworkPolicy, il est isolé. Afin de
Pour que le trafic soit autorisé, il doit y avoir au moins 1 NetworkPolicy qui sélectionne le Pod.
doit permettre le trafic.

35
Guide d'étude | Développeur d'application Kubernetes certifié (CKAD)

Une NetworkPolicy de refus par défaut désactive tout le trafic par défaut, laissant le soin à
d'autres NetworkPolicies pour permettre spécifiquement le trafic souhaité. Notez que le
sélecteur de pod vide {}sélectionne tous les Pods dans l'Espace de noms.

apiVersion: [Link]/v1
PolitiqueRéseau

np-test-a-default-deny-ingress
espace de noms : np-test-a
spec
podSelector: {}
policyTypes
Ingress

Cette politique n'affecte que Infiltration(entrant) trafic. Cela permet le trafic de


tout Pod qui répond à l'une des deux critères suivants :

• Dans un espace de noms avec le équipeétiquette.


• Le Pod a l'étiquette np-test-client.

versionApi: ré[Link]/v1
PolitiqueRéseau

np-test-client-allow
np-test-a
spec
podSelector
matchLabels
np-test-server
policyTypes
Ingress
ingress
from
namespaceSelector
matchLabels
équipe
podSelector
matchLabels
np-test-client
ports
TCP
port: 80

36
Guide d'étude | Développeur d'application Kubernetes certifié (CKAD)

Cette politique s'applique à Sortie(sortant) du trafic. Il permet le trafic vers les Pods dans
tout espace de noms avec l'étiquette équipe.

apiVersion : [Link]/v1
PolitiqueRéseau
Il n'y a pas de texte à traduire.
np-test-client-allow-egress
np-test-b
spécification
podSelector
matchLabels
np-test-client
policyTypes
Sortie
sortie
-à:
namespaceSelector
matchLabels
équipe
ports
- protocole : TCP
port: 80

Explorer les services

Documentation pertinente

• Service

Conseils pour les examens

Les services vous permettent d'exposer une application s'exécutant dans plusieurs Pods.
Les services ClusterIP exposent les Pods à d'autres applications au sein de
grappe.
Les services NodePort exposent les Pods à l'extérieur en utilisant un port qui écoute
sur chaque nœud du cluster.

Les services exposent des applications, dirigeant le trafic vers des Pods en arrière-plan.

37
Guide d'étude | Développeur d'applications Kubernetes certifié (CKAD)

Un ClusterIPLe service est axé sur l'exposition à d'autres Pods dans le cluster. Il
fournit une adresse IP et des noms d'hôtes au sein du réseau de cluster qui
d'autres Pods peuvent utiliser pour accéder au Service.

v1
Service

service-clusterip
spécifications
type: ClusterIP
selector
application: serveur de service

ports
TCP
port: 8080
targetPort: 80

Un NodePortLe service peut exposer une application à l'extérieur. Il écoute sur un


port sur chaque nœud du cluster.

versionApi: v1
Service

service-nodeport
spéc
NodePort
selector
application : serveur de service

ports
TCP
8080
targetPort: 80
nodePort: 30080

Exposer des applications avec Ingress

Documentation pertinente

• Ingress

Conseils pour l'examen

Un Ingress gère l'accès externe aux applications Kubernetes.


Un Ingress route vers 1 ou plusieurs Services Kubernetes.

38
Guide d'étude | Développeur d'application Kubernetes certifié (CKAD)

Vous avez besoin d'un contrôleur Ingress pour mettre en œuvre la fonctionnalité Ingress.
Le contrôleur que vous utilisez détermine les spécificités de la façon dont l'Ingress
va travailler.

Un Ingress est conçu pour exposer des applications à l'extérieur. En général, un


L'Ingress dirige le trafic vers un backend de service. Un Ingress peut également fournir
des fonctionnalités supplémentaires telles que la terminaison SSL.

apiVersion: [Link]/v1
Ingress

ingress-test-ingress
spécifications
nginx
règles
[Link]
http:
chemins
/
Préfixe
backend
service
service de test d'entrée
port
80

39

Vous aimerez peut-être aussi