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