DevOps Elastic Hayway
Document

SUBSCRIBE TO GET FULL ACCESS TO THE E-BOOKS FOR FREE 🎁SUBSCRIBE NOW

Professional Dropdown with Icon

SUBSCRIBE NOW TO GET FREE ACCESS TO EBOOKS

KubernetesLesson 15 / 354 min readUpdated October 17, 2023

Deployment

Kubernetes- Deployment

 A Deployment provides declarative updates for Pods ReplicaSets.

You describe a desired state in a Deployment, and the Deployment Controller changes the actual state to the desired state at a controlled rate. You can define Deployments to create new ReplicaSets, or to remove existing Deployments and adopt all their resources with new Deployments.

The following are typical use cases for Deployments:


Create a deployment

kubectl create deployment --image=nginx nginx


Generate Deployment YAML file (-o yaml). Don’t create it(–dry-run)

kubectl create deployment --image=nginx nginx --dry-run -o yaml


Generate Deployment with 4 Replicas

kubectl create deployment nginx --image=nginx --replicas=4


You can also scale a deployment using the kubectl scale command.

kubectl scale deployment nginx --replicas=4

LAB

# 1. Deployment YAML file

# nginx-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
  labels:
    app: nginx-app
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx-app
    spec:
      containers:
      – name: nginx-container
        image: nginx:1.7.9
        ports:
        – containerPort: 80
  selector:
    matchLabels:
      app: nginx-app



Create and Display Deployment


kubectl create -f nginx-deploy.yaml
kubectl get deploy -l app=nginx-app
kubectl get rs -l app=nginx-app
kubectl get po -l app=nginx-app
kubectl describe deploy nginx-deploy


*******************************************************************

Testing: Rollback update 


kubectl set image deploy nginx-deploy nginx-container=nginx:1.91 --record
kubectl rollout status deployment/nginx-deploy
kubectl rollout history deployment/nginx-deploy
kubectl rollout undo deployment/nginx-deploy
kubectl rollout status deployment/nginx-deploy
kubectl describe deploy nginx-deploy | grep -i image


*******************************************************************

 Testing: Update Version of “nginx:1.7.9”  to “nginx:1.9.1”


kubectl set image deploy nginx-deploy nginx-container=nginx:1.9.1
kubectl edit deploy nginx-deploy
kubectl rollout status deployment/nginx-deploy
kubectl get deploy


*******************************************************************

Testing: Scale UP


kubectl scale deployment nginx-deploy --replicas=5
kubectl get deploy
kubectl get po -o wide


*******************************************************************

Testing: Scale DOWN


kubectl scale deployment nginx-deploy --replicas=3
kubectl get deploy
kubectl get po -o wide

   

*******************************************************************


Cleanup


kubectl delete -f nginx-deploy.yaml
kubectl get deploy
kubectl get rs
kubectl get po