DEV Community

Cover image for Rolling update in Kubernetes
ahmad bayhaqi
ahmad bayhaqi

Posted on

4

Rolling update in Kubernetes

Rolling Update is a way of updating your application running in Kubernetes without causing downtime. It gradually replaces the old version with the new version one by one, so that users can still access the application while the update is happening. This makes updates more reliable and easier to manage, and helps ensure that your application remains available and responsive to users.

Step 1 -- Create deployment and Service

create file named rolling-app.yaml

cat > rolling-app.yaml << EOF
apiVersion: apps/v1
kind: Deployment
metadata:
 name: my-app
 namespace: rolling
spec:
 replicas: 5
 selector:
   matchLabels:
     app: my-app
 template:
   metadata:
     labels:
       app: my-app
   spec:
     containers:
       - name: nginx
         image: bayhaqisptr/nginx-canary:v1
         ports:
           - name: http
             containerPort: 80
         resources:
           requests:
             cpu: 100m
             memory: 50Mi
           limits:
             cpu: 200m
             memory: 100Mi
---
apiVersion: v1
kind: Service
metadata:
 name: my-app
 namespace: rolling
 labels:
   app: my-app
spec:
 type: NodePort
 ports:
 - name: http
   port: 80
   targetPort: http
 selector:
   app: my-app
EOF
Enter fullscreen mode Exit fullscreen mode

Create namespace rolling

kubectl create ns rolling
Enter fullscreen mode Exit fullscreen mode

and apply rolling-app.yaml

kubectl apply -f rolling-app.yaml
Enter fullscreen mode Exit fullscreen mode

Step 2 -- Set image with another version tag

use command kubectl set image to set image in existing deployment

kubectl set image deployment.v1.apps/my-app my-app=bayhaqisptr/nginx-canary:v2
Enter fullscreen mode Exit fullscreen mode

see rollout status with following command

kubectl rollout status deployments/my-app
Enter fullscreen mode Exit fullscreen mode

show available changes that made

➜  rolling kubectl rollout history deployment.apps/my-app -n rolling                               
deployment.apps/my-app 
REVISION  CHANGE-CAUSE
2         <none>
3         <none>
Enter fullscreen mode Exit fullscreen mode

check service will be responses with version 2

access app with node ip and node port has been created

➜ curl 172.23.0.5:31374 
<html>
<h1>Hello World!</h1>
<p>This is version 2</p>
</html>
Enter fullscreen mode Exit fullscreen mode

Step 3 -- Rollback deployment

rolling back to one previous version

kubectl rolling undo deployment/my-app
Enter fullscreen mode Exit fullscreen mode

rolling back to specific revisions

kubectl rolling undo deployment/my-app --revision=2
Enter fullscreen mode Exit fullscreen mode

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (0)

Image of Datadog

Create and maintain end-to-end frontend tests

Learn best practices on creating frontend tests, testing on-premise apps, integrating tests into your CI/CD pipeline, and using Datadog’s testing tunnel.

Download The Guide

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay