Kubernetes Readiness
Kubernetes mein DEPLOY karne ke liye, Spring Boot APPLICATION ko KAAI THINGS "AWARE" hona CHAHIYE — CONFIGURATION, ConfigMaps (non-sensitive) aur Secrets (sensitive) se, ENVIRONMENT VARIABLES ke roop mein AATI hai. HEALTH CHECKS (/actuator/health/liveness, /readiness), Kubernetes ko BATATE hain APPLICATION ki STATE.
GRACEFUL SHUTDOWN EQUALLY IMPORTANT hai — JAB Kubernetes EK POD ko TERMINATE karta hai (DEPLOYMENT/SCALING/ROLLING UPDATE ke DAURAN), APPLICATION ko IN-FLIGHT REQUESTS COMPLETE karne ka MAUKA MILNA CHAHIYE, NAYE REQUESTS ACCEPT kiye BINA — WARNA, USERS ko ERRORS DIKH sakte hain.
# application.properties:
server.shutdown=graceful
spring.lifecycle.timeout-per-shutdown-phase=30s
# Kubernetes deployment.yaml:
apiVersion: apps/v1
kind: Deployment
spec:
template:
spec:
containers:
- name: myapp
image: myapp:latest
envFrom:
- configMapRef: { name: app-config }
- secretRef: { name: db-secret }
livenessProbe:
httpGet: { path: /actuator/health/liveness, port: 8080 }
readinessProbe:
httpGet: { path: /actuator/health/readiness, port: 8080 }- ConfigMaps (non-sensitive) + Secrets (sensitive) = environment variables ke roop mein config
- Liveness/readiness probes (Actuator) = Kubernetes ko APPLICATION state BATATE hain
- Graceful shutdown = in-flight requests COMPLETE, naye requests REJECT — ZERO-DOWNTIME deploys ke liye
Kubernetes mein, NON-SENSITIVE configuration ConfigMaps mein, aur SENSITIVE data (passwords) Secrets mein STORE hoती hai — DONO, ENVIRONMENT VARIABLES ke roop mein, POD ke ANDAR APPLICATION ko AVAILABLE karaए jaate hain.
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
SPRING_PROFILES_ACTIVE: "prod"
---
apiVersion: v1
kind: Secret
metadata:
name: db-secret
stringData:
SPRING_DATASOURCE_PASSWORD: "supersecret"server.shutdown=graceful PROPERTY se, Spring Boot, SHUTDOWN SIGNAL milne par, IN-FLIGHT REQUESTS ko COMPLETE hone deta hai (EK TIMEOUT tak), NAYE REQUESTS ACCEPT karna BAND kar deta hai — Kubernetes DEPLOYMENTS/ROLLING UPDATES ke DAURAN, USER-FACING ERRORS AVOID karne ke liye CRITICAL.
server.shutdown=graceful
spring.lifecycle.timeout-per-shutdown-phase=30s