Introduction
You have reached the final challenge in this beginner course. Earlier labs guided you through Pods, Deployments, Services, scaling, troubleshooting, and rollback. Now you will combine those ideas in one small release task without a command-by-command walkthrough.
The environment contains a healthy starter release named web-app. Your job is to publish its next pinned NGINX image while preserving three available replicas and the stable Service. The final cluster state and the saved manifest must agree, so the release remains reproducible after the challenge.
Release the Next NGINX Version
Environment startup: This lab starts a complete Kubernetes cluster for you. Configuring its control plane, node, and networking components usually takes 2–3 minutes. Please wait patiently for the environment to finish loading before beginning the challenge.
Current Situation
The platform team has prepared a starter release in /home/labex/project/final-release/web-app.yaml. It currently runs nginx:1.26-alpine as three replicas behind Service web-app.
Scope
- Work with the existing
web-appDeployment, Service, manifest, andrelease-checkclient. - Do not rename resources, change selectors, or replace the approved rolling update budget.
- Use the pinned target image; floating tags such as
latestare outside the accepted release.
Your Goal
Publish nginx:1.27-alpine through the existing Deployment and leave the live cluster, Service access path, and saved manifest in one healthy and reproducible state.
Acceptance Criteria
- Deployment
web-appuses exactly three desired replicas. - Its
nginxcontainer uses the pinned imagenginx:1.27-alpine. - Its rolling update budget remains
maxUnavailable: 0andmaxSurge: 1. - The change-cause annotation describes the NGINX 1.27 release.
- Service
web-appstill selects the Deployment's Pods and has three ready backends. - All three updated replicas are ready and available, and an in-cluster HTTP request to
http://web-appsucceeds. /home/labex/project/final-release/web-app.yamlcontains the final image and rollout settings, so applying it again would preserve the accepted state.
Use Kubernetes inspection and rollout commands to decide when the release is complete. If an update is still progressing, wait for it rather than judging only the first kubectl get output.
Hints
Useful observations include the Deployment's READY, UP-TO-DATE, and AVAILABLE columns; Pod images; rollout history; and the Service's EndpointSlice addresses.
Summary
You completed the course by independently releasing a pinned NGINX image through a Kubernetes Deployment. You preserved an explicit availability budget, waited for all updated replicas, kept the Service connected to three ready backends, verified an in-cluster request, and persisted the accepted state in YAML.
Those checks form a reusable beginner workflow: declare the desired state, apply it, observe controller progress, verify the workload and its access path, and keep the manifest synchronized with the cluster.


