DevOps-bootcamp · Les

Implementeren in Kubernetes met Actions

Stel Continuous Deployment naar Kubernetes-clusters in en beheer deployments en services rechtstreeks vanuit GitHub Actions.

Les 3 van 411 stappen

Implementeren in Kubernetes met Actions is een gratis DevOps-bootcamp-les op CoddyKit. Dit is les 3 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.

Inleiding tot K8s CD met Actions

Welkom! In deze les leer je hoe je Continue Deployment (CD) naar Kubernetes-clusters instelt met GitHub Actions.

Door implementaties te automatiseren, kunnen wijzigingen aan je toepassing snel en betrouwbaar live gaan, zonder handmatige stappen.

We behandelen authenticatie, het toepassen van Kubernetes-manifesten en het beheren van updates.

Essentiële K8s-implementaties

Voordat we gaan implementeren, halen we kort twee belangrijke Kubernetes-resources terug:

  • Implementaties: Deze beheren de Pods van je toepassing en zorgen ervoor dat er altijd een gewenst aantal replica's actief is. Ze verwerken updates en terugdraaiacties.
  • Services: Deze bepalen hoe je toegang krijgt tot je toepassing, bijvoorbeeld intern binnen het cluster of extern via een LoadBalancer.

Ons doel is om de YAML-bestanden waarin deze zijn gedefinieerd vanuit GitHub Actions op ons cluster toe te passen.

Actions authenticeren bij K8s

Om te implementeren moet je GitHub Actions-workflow communiceren met de API-server van je Kubernetes-cluster.

Daarvoor is authenticatie nodig. De standaardmanier om je bij Kubernetes te authenticeren is met een kubeconfig-bestand.

We moeten de inhoud van dit bestand veilig beschikbaar maken voor onze workflowrunner.

Kubeconfig beveiligen

Het kubeconfig-bestand bevat gevoelige informatie, zoals cluster-eindpunten en gebruikersinloggegevens. Het moet geheim blijven!

GitHub Actions biedt hiervoor Secrets. Je slaat de inhoud van je kubeconfig-bestand op als een geheim van je repository.

Hoe krijg je je kubeconfig? Dat hangt af van je K8s-provider, bijvoorbeeld aws eks update-kubeconfig of gcloud container clusters get-credentials.

K8s-context instellen

Zodra je kubeconfig als geheim is opgeslagen, laten we het KUBE_CONFIG_DATA noemen, kan je workflow het gebruiken.

De gebruikelijke aanpak is om de inhoud van het geheim naar een tijdelijk bestand op de runner te schrijven en vervolgens de omgevingsvariabele KUBECONFIG in te stellen zodat deze naar dat bestand verwijst.

Hiermee laat je kubectl weten waar de verbindingsgegevens van het cluster staan.

<code>kubectl</code> gebruiken in workflows

kubectl is het officiële opdrachtregelprogramma voor interactie met Kubernetes-clusters. Op GitHub Actions-runners is kubectl vooraf geïnstalleerd.

Nadat je kubeconfig hebt ingesteld, kan je in de workflowstappen elke kubectl-opdracht uitvoeren.

Laten we een eenvoudig voorbeeld bekijken:

name: K8s Setup Test

on: [workflow_dispatch]

jobs:
  test-kubeconfig:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up Kubeconfig
        env:
          KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }}
        run: |
          mkdir -p ~/.kube
          echo "$KUBE_CONFIG_DATA" > ~/.kube/config
          chmod 600 ~/.kube/config
          echo "KUBECONFIG=$HOME/.kube/config" >> $GITHUB_ENV

      - name: Verify kubectl access
        run: kubectl version --client

Eenvoudig K8s-implementatiemanifest

Hier zie je een eenvoudig Kubernetes-Deployment- en Service-manifest voor een toepassing met de naam "hello-world". Dit is wat we Kubernetes laten uitvoeren.

In dit voorbeeld wordt een eenvoudige Nginx-image gebruikt, die beschikbaar wordt gemaakt op poort 80.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-app-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hello-app
  template:
    metadata:
      labels:
        app: hello-app
    spec:
      containers:
      - name: hello-app
        image: nginx:latest
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: hello-app-service
spec:
  selector:
    app: hello-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: LoadBalancer

De volledige implementatieworkflow

Nu integreren we de implementatiestap in een workflow. Nadat je je containerimage hebt gebouwd en gepusht, zoals in eerdere lessen, kan je het implementeren.

Deze workflow gaat ervan uit dat je kubeconfig-geheim is ingesteld en dat het manifestbestand, bijvoorbeeld k8s/deployment.yaml, in je repository staat.

name: Deploy to Kubernetes

on:
  push:
    branches:
      - main
  workflow_dispatch:

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up Kubeconfig
        env:
          KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }}
        run: |
          mkdir -p ~/.kube
          echo "$KUBE_CONFIG_DATA" > ~/.kube/config
          chmod 600 ~/.kube/config
          echo "KUBECONFIG=$HOME/.kube/config" >> $GITHUB_ENV

      - name: Deploy application to K8s
        run: kubectl apply -f k8s/deployment.yaml

Je toepassing bijwerken

Een van de sterke eigenschappen van kubectl apply is de idempotentie ervan. Als de resources die in je YAML zijn gedefinieerd al bestaan, werkt kubectl apply ze bij in plaats van nieuwe te maken.

Om een nieuwe versie van je toepassing te implementeren, werk je eenvoudig de imagetag in je deployment.yaml bij en push je de wijziging. GitHub Actions wordt vervolgens geactiveerd en Kubernetes voert een stapsgewijze update uit. Daarbij worden oude Pods geleidelijk vervangen door nieuwe, zodat de uitvaltijd minimaal blijft.

Korte controle

Je hebt de belangrijkste stappen geleerd om een toepassing met GitHub Actions naar Kubernetes te implementeren.

Wat is de juiste volgorde van stappen in een GitHub Actions-workflow om een Kubernetes-manifest te implementeren?

Herhaling en volgende stappen

Goed gedaan! Je hebt geleerd hoe je Continue Deployment naar Kubernetes instelt met GitHub Actions.

  • We slaan gevoelige kubeconfig-gegevens op in GitHub Secrets.
  • Workflows gebruiken dit geheim om kubectl te configureren.
  • kubectl apply -f wordt gebruikt om K8s-manifesten te implementeren of bij te werken.
  • Kubernetes verwerkt stapsgewijze updates wanneer wijzigingen worden toegepast.

Deze krachtige combinatie automatiseert je implementaties, waardoor je ontwikkelproces soepeler en sneller verloopt. Blijf geavanceerdere K8s-functies verkennen!

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 “Implementeren in Kubernetes met Actions” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad DevOps-bootcamp, waaronder “Implementeren in Kubernetes met Actions”, 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 “Implementeren in Kubernetes met Actions”?

Stel Continuous Deployment naar Kubernetes-clusters in en beheer deployments en services rechtstreeks vanuit GitHub Actions. 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 3 van 4.

Hoe lang duurt de les “Implementeren in Kubernetes met Actions”?

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. Docker-images bouwen met Actions
  2. Images naar registries pushen
  3. Implementeren in Kubernetes met Actions
  4. Helm-charts en Kubernetes-manifesten in CI/CD
← Terug naar DevOps-bootcamp