Skip to content

Czym jest Deployment?

Jest to obiekt w skład którego wchodzi wiele podów, które uruchamiane są w ramach Replica Setu - w Replica Set wchodzi wiele Podów, które są uruchamiane w zależności od wymogów aplikacji bądź administratora.

Dzięki Deploymentom mamy łatwiejszą możliwość aktualizacji aplikacji, zmiany wszystkich podów jednocześnie.

Domyślnym sposobem aktualizacji Deploymentu (podów, aplikacji) jest Rolling Update Strategy. Oznacza to, że aktualizacja odbywa się poprzez usuwanie starego Poda i natychmiastowe zastępowanie go nowym, po kolei po każdym podzie, jeden po drugim.

Konfiguracja Deployment

yaml dla Deployment jest bardzo podobny do Replica Set. Zmieniamy pole kind na Deployment.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-replicaset
  labels:
    app: myapp
    type: front-end
spec:
  template:
    metadata:
      name: myapp-pod
      labels:
        app: myapp
        type: front-end
    spec:
      containers:
        - name: nginx-container
          image: nginx
  replicas: 3
  selector:
    matchLabels:
      type: front-end

W sekcji template oczekiwana jest definicja Poda. Nie podajemy jedynie apiVersion oraz kind.

Po wdrożeniu tego Deployment również tworzy Replica Set.

╭─root@minikube [SSH:10.0.2.15] ~/.../kubernetes-absolute-beginners/infrastructure/deployments  
╰─$ kubectl get deploy
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
myapp-deployment   3/3     3            3           33s
╭─root@minikube [SSH:10.0.2.15] ~/.../kubernetes-absolute-beginners/infrastructure/deployments  
╰─$ kubectl get rs
NAME                          DESIRED   CURRENT   READY   AGE
myapp-deployment-56db76d944   3         3         3       35s