Home › CKAD practice tasks › Install and manage Helm releases
CKAD · Application Deployment

Add a Helm Repo, Install a Release and Remove the Old One

The platform team publishes application charts in an internal Helm repository at `http://charts.prepium.local:30880`. Namespace `storefront` already runs an outdated release, `legacy-web`, that the new release replaces. Helm is installed on this node.

Live lab access

This task description is public. Live practice requires full access unless this is the selected free weekly task. AI Lab Coach is available in single-task labs, including the free weekly task. See this week's free task.

Create an account to continue →

Read this week's free task →

On a phone? Read the task and create your account here, then sign in on a desktop or laptop for the terminal lab. Nothing starts until you choose Start.

The task

The platform team publishes application charts in an internal Helm repository at http://charts.prepium.local:30880. Namespace storefront already runs an outdated release, legacy-web, that the new release replaces. Helm is installed on this node.

Requirements
1. Add the repository under the name internal and refresh your local chart index.
2. Install chart internal/webapp version 1.1.0 as release shop in namespace storefront, setting replicaCount to 2 and service.type to NodePort.
3. Uninstall release legacy-web from storefront.
4. Ensure the shop Deployment has two available replicas.

The repository publishes several chart versions; install exactly the version requested.

Original Prepium guide · Written for Kubernetes v1.35 and checked against the official documentation on 6 October 2026. Use a disposable practice cluster. The commands below exist in both Helm 3 and Helm 4.

Helm releases: repositories, pinned chart versions and value overrides

A chart is a package of templates plus a values.yaml of defaults. Installing it creates a release: a named instance in one namespace, with a revision number that goes up on every upgrade. Almost every Helm exam question comes down to three things: which chart version you installed, which values you overrode, and which namespace the release lives in. Helm can tell you all three, so the skill is as much about checking as installing.

chart values.yaml  <  -f file(s), rightmost wins  <  --set key=value
                 \____________ merged ____________/
                               |
               rendered manifests  ->  release "bakery-dev", revision N, namespace X

1. Repositories are local bookmarks with a cached index

helm repo add acme https://charts.example.com
helm repo update
helm search repo acme/ --versions

The URL here is a placeholder; use any chart repository you can reach. repo add stores a name for the URL, and repo update downloads each repository's index into a local cache that helm search reads. Without --versions, search shows only the newest stable version of each chart; with it, every version gets its own line. Note the two version columns: CHART VERSION is the package version that --version selects, while APP VERSION describes the software inside.

2. Practise overrides on a chart you create

No repository needed: helm create builds a scaffold chart whose templates read keys such as replicaCount and podLabels. Look before you override:

helm create bakery
helm show values ./bakery | head -20
printf 'podLabels:\n  team: pastry\n' > bakery-dev.yaml
helm install bakery-dev ./bakery -n prepium-tutorial --create-namespace \
  -f bakery-dev.yaml --set replicaCount=3 --wait

Dots in --set walk into nested maps, so --set podLabels.team=pastry would equal the file above. When both forms set the same key, --set wins. For a repository chart you would write acme/bakery --version X.Y.Z in place of ./bakery; leaving out --version installs the newest stable version.

3. Ask Helm what it actually stored

helm list -n prepium-tutorial
helm list -A
helm get values bakery-dev -n prepium-tutorial
helm get values bakery-dev -n prepium-tutorial --all
kubectl -n prepium-tutorial get pods -L team

helm get values prints only what you supplied; --all prints the full computed set, defaults included. helm list works on the current namespace unless you pass -n or -A, and its CHART column shows name and chart version together.

4. Upgrade, then remove

helm upgrade bakery-dev ./bakery -n prepium-tutorial --reuse-values --set replicaCount=1
helm history bakery-dev -n prepium-tutorial
helm uninstall bakery-dev -n prepium-tutorial

--reuse-values keeps the previous release's values and merges your new override on top, so the team label survives. History shows revision 2. helm uninstall deletes the release's resources and its history; helm rollback is the tool if you only wanted to undo an upgrade.

Common mistakes

Example checkEvidence
Right chart versionCHART column of helm list -n NAMESPACE
Overrides appliedhelm get values RELEASE -n NAMESPACE
Old release goneAbsent from helm list -A; its objects are deleted
Workload healthyDeployment READY matches the requested replicas

Cleanup: kubectl delete namespace prepium-tutorial and helm repo remove acme. References: Using Helm, helm install, helm search repo, helm get values. Next, try Kustomize overlays.

Difficulty
Medium · 7 minutes target
Domain
Application Deployment
Grading
Live checks · partial credit

Practice scope

This additional curriculum lab is available in single-task practice with the existing 12-minute limit. The three CKAD mocks keep their original 17-task sets. Hints, an explained solution and requirement-by-requirement feedback are available in the lab.

Browse CKAD practice tasks →