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.