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