Deployments: K8S
A declarative way of maintaining the desired state.
Continuing my example from the last blog
--- # Pod deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: go-server-deployment
spec:
replicas: 2
selector:
matchLabels:
app: my-go-server
template:
metadata:
labels:
app: my-go-server
spec:
containers:
- name: go-server
image: samarthya/epserver:2.0
resources:
limits:
memory: "256Mi"
cpu: "1024m"
env:
- name: SERVERPORT
value: "9090"
ports:
- containerPort: 9090
# Reference - https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
In my deployment, I have two replicas configured, which can be increased to three using the command like the one below.
k scale deployment/go-server-deployment --replicas=3
If I wish rollout a change for all pods, which can be conveniently managed via deployments it is as easy as issuing a single command.
k set image deployment/go-server-deployment go-server=samarthya/epserver:1.0 --record=true
History is also maintained
k rollout history deployment go-server-deployment
REVISION CHANGE-CAUSE
1 <none>
2 k set image deployment/go-server-deployment go-server=samarthya/epserver:2.0 --record=true
Other command that you can issue for rollout are as under
Available Commands:
history View rollout history
pause Mark the provided resource as paused
restart Restart a resource
resume Resume a paused resource
status Show the status of the rollout
undo Undo a previous rollout
k rollout undo
References
- https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#creating-a-deployment