DevOps-bootcamp · Les

Deployments begrijpen

Leer hoe Deployments het beheer van Pods en ReplicaSets voor stateless applicaties automatiseren.

Les 1 van 411 stappen

Deployments begrijpen is een gratis DevOps-bootcamp-les op CoddyKit. Dit is les 1 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject DevOps-bootcamp. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus DevOps-bootcamp bevat in totaal 4 lessen.

Wat zijn Deployments?

Welkom! In Kubernetes betekent applicaties beheren dat je hun Pods beheert. Maar het rechtstreeks beheren van afzonderlijke Pods of zelfs ReplicaSets kan ingewikkeld worden.

Een Deployment is een object op hoger niveau dat het beheer van stateless applicaties vereenvoudigt. Zie het als de manager van je applicatie.

  • Het definieert de gewenste toestand van je applicatie.
  • Het zorgt ervoor dat die toestand behouden blijft, zelfs als Pods uitvallen.
  • Het automatiseert updates en terugdraaiacties.

Waarom Deployments gebruiken?

Deployments bieden belangrijke voordelen om applicaties betrouwbaar in Kubernetes uit te voeren:

  • Geautomatiseerd beheer: Ze regelen het aanmaken, schalen en verwijderen van Pods.
  • Zelfherstel: Als een Pod crasht, vervangt de Deployment deze automatisch om het gewenste aantal replica's te behouden.
  • Declaratieve updates: Je beschrijft de gewenste nieuwe toestand en de Deployment bepaalt hoe die wordt bereikt, bijvoorbeeld door nieuwe versies geleidelijk uit te rollen.

Dit is de aanbevolen manier om stateless applicaties te beheren.

De kerntaak van een Deployment

In de kern beheert een Deployment ReplicaSets. De taak van een ReplicaSet is ervoor te zorgen dat er altijd een opgegeven aantal Pod-replica's actief is.

Een Deployment gebruikt ReplicaSets dus om zijn doel te bereiken: ervoor zorgen dat je applicatie volgens je definitie het juiste aantal gezonde Pods heeft draaien.

Deze abstractielaag maakt het veel eenvoudiger om de levenscyclus van je applicatie te definiëren en te onderhouden.

Anatomie van YAML voor een Deployment

Net als de meeste Kubernetes-objecten worden Deployments met YAML gedefinieerd. Dit zijn de belangrijkste secties die je doorgaans aantreft:

  • apiVersion en kind: identificeren het objecttype (Deployment).
  • metadata: de naam, labels enzovoort van de Deployment zelf.
  • spec: de kerndefinitie, waaronder:
    • replicas: het gewenste aantal Pods.
    • selector: hoe de Deployment de Pods vindt die deze beheert.
    • template: het sjabloon voor de aan te maken Pods.

Het Pod-sjabloon

Het veld template binnen de spec van een Deployment is bijzonder belangrijk. Het is in feite een volledige Pod-definitie.

Alle Pods die door deze Deployment worden aangemaakt, gebruiken dit sjabloon. Je definieert hierin:

  • De te gebruiken containerimages.
  • De poorten die beschikbaar moeten worden gesteld.
  • Omgevingsvariabelen.
  • Resourceverzoeken en -limieten.
  • En meer!

Wijzigingen in dit sjabloon starten updates van je applicatie.

Een eenvoudige Deployment aanmaken

Laten we een Deployment definiëren voor een eenvoudige Nginx-webserver. We willen 3 replica's.

Let op dat selector.matchLabels moet overeenkomen met template.metadata.labels. Hiermee geef je aan welke Pods eigendom zijn van de Deployment.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

De Deployment toepassen

Om deze Deployment in je Kubernetes-cluster aan te maken, bijvoorbeeld in Minikube, gebruik je de opdracht kubectl apply. Sla de bovenstaande YAML op als nginx-deployment.yaml.

kubectl maakt het Deployment-object aan. De Deployment-controller ziet dit object vervolgens en onderneemt actie: deze maakt een ReplicaSet aan, dat daarna de 3 Nginx-Pods aanmaakt.

kubectl apply -f nginx-deployment.yaml

Je Deployment inspecteren

Nadat je de Deployment hebt toegepast, kun je de status van je Deployment en de Pods die deze beheert controleren:

  • kubectl get deployments: toont je Deployment.
  • kubectl get replicasets: toont de ReplicaSet die door de Deployment is aangemaakt.
  • kubectl get pods -l app=nginx: toont de Pods die door de Deployment worden beheerd via de labelselector.
  • kubectl describe deployment my-nginx-deployment: geeft gedetailleerde informatie over de Deployment, inclusief gebeurtenissen.
kubectl get deployments
kubectl get pods -l app=nginx
kubectl describe deployment my-nginx-deployment

De gewenste toestand behouden

Een van de krachtigste functies van Deployments is de mogelijkheid om de gewenste toestand te behouden. Als je replicas: 3 hebt gedefinieerd, zorgt de Deployment ervoor dat er altijd 3 Pods actief zijn.

Probeer handmatig een van de Nginx-Pods te verwijderen (kubectl delete pod <pod-name>). Je ziet dat de Deployment snel een nieuwe Pod aanmaakt om deze te vervangen! Dit is zelfherstel in actie.

Korte controle

Voor welk type applicatie wordt een Deployment voornamelijk gebruikt?

Samenvatting: Deployments begrijpen

Goed gedaan! Je hebt je eerste stappen gezet met Kubernetes-Deployments.

  • Deployments zijn objecten op hoog niveau voor het beheren van stateless applicaties.
  • Ze automatiseren het aanmaken, schalen en zelfherstel van Pods door ReplicaSets te beheren.
  • Je definieert een Deployment met een YAML-manifest, waarin je het gewenste aantal replicas en een template voor de Pods opgeeft.
  • kubectl apply maakt de Deployment aan en met kubectl get/describe kun je deze controleren.

Vervolgens gaan we dieper in op ReplicaSets en bekijken we hoe ze je gewenste aantal Pods garanderen!

Gratis beginnen

Leer DevOps-bootcamp met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
142
Lessen
568

Veelgestelde vragen

Is de les “Deployments begrijpen” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad DevOps-bootcamp, waaronder “Deployments begrijpen”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus DevOps-bootcamp bevat in totaal 4 lessen.

Wat leer ik in “Deployments begrijpen”?

Leer hoe Deployments het beheer van Pods en ReplicaSets voor stateless applicaties automatiseren. Je oefent met DevOps-bootcamp door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met DevOps-bootcamp te beginnen?

Ervaring vooraf is niet nodig. DevOps-bootcamp op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “Deployments begrijpen”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over DevOps-bootcamp?

Ja. Elke les over DevOps-bootcamp bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Deployments begrijpen
  2. Applicaties schalen met ReplicaSets
  3. Rolling updates en rollbacks
  4. Deploymentstrategieën: blue-green en canary
← Terug naar DevOps-bootcamp