Kubernetes, Docker og Orkestrering

Hva er Kubernetes, og hvordan henger det sammen med Docker?

Kubernetes er en åpen kildekodeplattform for orkestrering av containere – det vil si at den styrer hvordan og hvor containerbaserte applikasjoner kjøres. Opprinnelig ble Kubernetes utviklet for å administrere Docker-containere, og selv om den nå støtter andre OCI-kompatible runtime-miljøer, er Docker fortsatt den mest brukte metoden for å bygge og levere container-images.

Med Docker bygger du “images” som inneholder applikasjonen din og alle dens avhengigheter. Kubernetes tar disse image-filene, starter dem som “pods” (den minste deployerbare enheten i Kubernetes), og sørger for at riktig antall kopier alltid kjører og at de blir restarte ved feil. Dermed danner Docker og Kubernetes sammen en komplett arbeidsflyt for deploy og drift av moderne applikasjoner.

Illustrasjon: Docker-images kjøres i Kubernetes pods
Docker og Kubernetes: Docker bygger images, mens Kubernetes orkestrerer containerne som kjører disse image-ene.

Installer Minikube på Ubuntu

Minikube lar deg kjøre et lokalt Kubernetes-cluster for utvikling og testing. Følg disse stegene for å sette opp Minikube på Ubuntu:

  1. Oppdater pakkelisten og installer virtualiseringskomponenter:
    sudo apt-get update
    sudo apt-get install -y virtualbox virtualbox-ext-pack
  2. Last ned og installer Minikube:
    curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
    sudo install minikube-linux-amd64 /usr/local/bin/minikube
  3. Start et lokalt cluster:
    minikube start --driver=virtualbox
    kubectl get pods -A

Enkel Deployment og Service med YAML

La oss se på et praktisk eksempel. Nedenfor finner du et YAML-manifest som definerer en Deployment og en tilhørende Service for en enkel Node.js-applikasjon.

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-deploy
spec:
  replicas: 3
  selector:
    matchLabels:
      app: hello
  template:
    metadata:
      labels:
        app: hello
    spec:
      containers:
      - name: hello-container
        image: min-node-app:latest
        ports:
        - containerPort: 3000
---
# service.yaml
apiVersion: v1
kind: Service
metadata:
  name: hello-service
spec:
  type: NodePort
  selector:
    app: hello
  ports:
    - port: 3000
      targetPort: 3000
      nodePort: 30007

Disse filene kan deployeres med:

kubectl apply -f deployment.yaml
kubectl apply -f service.yaml

Når de er deployert, kan du nå applikasjonen via NodeIP:30007.

Sikkerhetstips for Kubernetes

For å sikre at ditt Kubernetes-miljø er robust, bør du ta i bruk følgende tiltak:

Alternativer: Docker Swarm og Cluster

Selv om Kubernetes er den mest brukte orkestreringsløsningen i dag, finnes det også andre alternativer:

Både Kubernetes og Docker Swarm er designet for å administrere containere på tvers av flere noder, men Kubernetes gir mer avanserte funksjoner for skalering, selvhelbredelse og sikkerhet.

Kubernetes i DevSecOps

Kubernetes er en essensiell del av DevSecOps fordi det automatiserer deploy, skalerer applikasjoner og sikrer at applikasjoner kjøres på en konsistent og sikker måte. Ved å integrere Kubernetes med:

Denne integrasjonen sikrer at sikkerhet og stabilitet er innebygd i hele utviklings- og deployprosessen, fra koding til drift og monitorering.

Lenker og kilder