Task:
Some of the Nautilus team developers are developing a static website and they want to deploy it on Kubernetes cluster. They want it to be highly available and scalable. Therefore, based on the requirements, the DevOps team has decided to create deployment for it with multiple replicas. Below you can find more details about it:
Create a deployment using nginx image with latest tag only and remember to mention tag i.e nginx:latest and name it as nginx-deployment. App labels should be app: nginx-app and type: front-end. The container should be named as nginx-container; also make sure replica counts are 3.
Also create a service named nginx-service and type NodePort. The targetPort should be 80 and nodePort should be 30011.
Note: The kubectl utility on jump_host has been configured to work with the kubernetes cluster.
Some of the Nautilus team developers are developing a static website and they want to deploy it on Kubernetes cluster. They want it to be highly available and scalable. Therefore, based on the requirements, the DevOps team has decided to create deployment for it with multiple replicas. Below you can find more details about it:
Create a deployment using nginx image with latest tag only and remember to mention tag i.e nginx:latest and name it as nginx-deployment. App labels should be app: nginx-app and type: front-end. The container should be named as nginx-container; also make sure replica counts are 3.
Also create a service named nginx-service and type NodePort. The targetPort should be 80 and nodePort should be 30011.
Note: The kubectl utility on jump_host has been configured to work with the kubernetes cluster.
Step 1) Create deploy.yaml file using --dry-run command and modify later as per your requirements.
thor@jump_host ~$ kubectl create deploy nginx-deployment --image=nginx:latest --dry-run=client -o yaml > deploy.yaml
thor@jump_host ~$ cat deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: nginx-deployment
name: nginx-deployment
spec:
replicas: 1
selector:
matchLabels:
app: nginx-deployment
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: nginx-deployment
spec:
containers:
- image: nginx:latest
name: nginx
resources: {}
status: {}
thor@jump_host ~$ vi deploy.yaml
thor@jump_host ~$ cat deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx-app
type: front-end
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx-deployment
template:
metadata:
labels:
app: nginx-deployment
spec:
containers:
- image: nginx:latest
name: nginx-container
Step 2) Apply the deployment changes
thor@jump_host ~$ kubectl apply -f deploy.yaml
deployment.apps/nginx-deployment created
Step 3) Create service.yaml file using --dry-run command and modify later as per your requirements.
thor@jump_host ~$ kubectl expose deploy nginx-deployment --name=nginx-service --type=NodePort --port=30011 --target-port=80 --dry-run=client -o yaml > service.yaml
thor@jump_host ~$ cat service.yaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: nginx-app
type: front-end
name: nginx-service
spec:
ports:
- port: 30011
protocol: TCP
targetPort: 80
selector:
app: nginx-deployment
type: NodePort
status:
loadBalancer: {}
thor@jump_host ~$ vi service.yaml
thor@jump_host ~$ cat service.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: nginx-app
type: front-end
name: nginx-service
spec:
ports:
- nodePort: 30011
protocol: TCP
port: 80
targetPort: 80
selector:
app: nginx-deployment
type: NodePort
Step 4) Apply the Service changes
thor@jump_host ~$ kubectl apply -f service.yaml
service/nginx-service created
Step 5) Validate the deployment and Service
thor@jump_host ~$ kubectl get deployment -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
nginx-deployment 3/3 3 3 97s nginx nginx:latest app=nginx-deployment
thor@jump_host ~$ kubectl get service -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3h52m <none>
nginx-service NodePort 10.103.135.28 <none> 80:30011/TCP 33s app=nginx-deployment
Thank You for this wonderful and much required information Best Application Services
ReplyDelete