Sari la conținutul principal

Deployment-ul Ticketing API

Deployment-ul descrie starea dorită a aplicației: imaginea, numărul de replici, configurația, probele și strategia de actualizare.

Elementele principale din k8s/base/20-deployment.yaml sunt:

apiVersion: apps/v1
kind: Deployment
metadata:
name: ticketing-api
namespace: cc-lab2
spec:
replicas: 2
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 0
maxSurge: 1
selector:
matchLabels:
app: ticketing-api
template:
metadata:
labels:
app: ticketing-api
version: v1
spec:
containers:
- name: api
image: ghcr.io/cloud-computing-upb/lab2:1.0.0
envFrom:
- configMapRef:
name: ticketing-api-config
env:
- name: APP_VERSION
value: "v1"

Manifestul complet conține și:

  • portul HTTP 8080
  • readiness și liveness probes pe /health
  • requests și limits pentru CPU și memorie
  • un security context compatibil cu imaginea distroless
  • o perioadă de grație pentru oprirea controlată a aplicației.

Aplicați Deployment-ul:

kubectl diff -f k8s/base/20-deployment.yaml
kubectl apply -f k8s/base/20-deployment.yaml
kubectl rollout status deployment/ticketing-api -n cc-lab2

Inspectați obiectele create:

kubectl get deployments -n cc-lab2
kubectl get replicasets -n cc-lab2
kubectl get pods -n cc-lab2 -o wide
kubectl describe deployment ticketing-api -n cc-lab2

Deployment-ul a creat un ReplicaSet, iar acesta a creat două Pod-uri. Nu am creat direct niciunul dintre aceste obiecte.

Desired state

Câmpul replicas: 2 nu reprezintă o comandă de a porni două Pod-uri o singură dată. El declară că Kubernetes trebuie să mențină permanent două replici disponibile.