Kubernetes manifests cheatsheet
Kubernetes manifests: Workloads
8 common Kubernetes manifests tasks.
Deployment
Run three replicas of a container and roll out updates gradually.
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: web
image: nginx:1.27
ports:
- containerPort: 80
Set resource requests and limits
Request what a container needs for scheduling, and cap what it can use.
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 256Mi
Add health probes
Use readiness to control traffic and liveness to restart a stuck container.
readinessProbe:
httpGet:
path: /healthz
port: 80
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
httpGet:
path: /healthz
port: 80
initialDelaySeconds: 15
Pass configuration as environment variables
Load a ConfigMap and read one key from a Secret into environment variables.
envFrom:
- configMapRef:
name: app-config
env:
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-secret
key: password
Harden a container
Run as a non-root user with a read-only filesystem and no extra privileges.
securityContext:
runAsNonRoot: true
runAsUser: 10001
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
capabilities:
drop: ["ALL"]
Run setup before the app starts
Run a container to completion before the main containers start.
initContainers:
- name: wait-for-db
image: busybox:1.36
command: ["sh", "-c", "until nc -z db 5432; do sleep 2; done"]
Job
Run a task to completion, retrying on failure.
apiVersion: batch/v1
kind: Job
metadata:
name: migrate
spec:
backoffLimit: 3
template:
spec:
restartPolicy: Never
containers:
- name: migrate
image: myapp:1.0
command: ["./migrate"]
CronJob
Run a Job on a schedule. This one runs daily at 02:00.
apiVersion: batch/v1
kind: CronJob
metadata:
name: nightly-report
spec:
schedule: "0 2 * * *"
jobTemplate:
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: report
image: myapp:1.0
command: ["./report"]