Home › CKA › Topics › Practice tasks › Helm
CKA · Cluster Architecture, Installation & Configuration

Render Argo CD Manifests with helm template, Without CRDs

Install Argo CD using Helm without installing CRDs (they are pre-installed). Requirements: Add the official Argo CD Helm repo with the name argo (https://argoproj.github.io/argo-helm) Generate a Helm…

Check live lab access → All CKA tasks

Live lab access

This task description is public. Its live lab requires full access; six other CKA labs are available in Free Practice with AI Lab Coach.

Create an account to continue →

Explore the six free labs with AI Lab Coach →

Read the brief on any device. Use a desktop or laptop for the terminal lab. Nothing starts until you choose Start.

The task

Install Argo CD using Helm without installing CRDs (they are pre-installed).

Requirements:

  1. Add the official Argo CD Helm repo with the name argo (https://argoproj.github.io/argo-helm)
  2. Generate a Helm template (not install) for chart version 7.7.3, namespace argocd, with CRDs disabled
  3. Save the generated manifest to /home/cloud_user/argo-helm.yaml

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 use options present in both Helm 3 and Helm 4, and the example chart is cert-manager from its public repository; nothing below installs it.

Render a pinned Helm chart to a file, and control which CRDs end up in it

A Helm chart is a package of templates plus default values. helm install renders it and creates a tracked release in the cluster; helm template renders the same manifests locally and prints them, creating nothing. Rendering to a file is how you review, diff or hand a chart to another tool. The two details that trip people up are pinning the chart version and understanding that a chart can ship CRDs in two very different ways.

helm repo add NAME URL ──→ local index ──→ helm search repo --versions   (what exists)
                                    ──→ helm show values / show crds     (what is configurable)
                                    ──→ helm template ... --version X > file.yaml   (render only)

1. Add the repository and see what versions exist

helm repo add jetstack https://charts.jetstack.io --force-update
helm repo update
helm search repo jetstack/cert-manager --versions | head

helm repo add stores a name for a URL; the name becomes the prefix in chart references such as jetstack/cert-manager. --versions lists every chart version instead of only the newest. Without --version, later commands use the latest chart, so a render you repeat next month may differ. Note that cert-manager's docs now recommend its OCI registry; the classic repository is used here because it shows the repo add workflow.

2. Learn how this chart ships its CRDs

Helm 3 introduced a special crds/ directory. Files there are not templated: helm install applies them first (and skips them if already present), and --skip-crds turns that step off. helm template leaves them out unless you add --include-crds. Many charts instead put CRDs under templates/ behind a value. Those are ordinary templates, outside the crds/ step that --skip-crds governs, so the chart's value is what removes them. Check which kind you have, using a version from step 1:

helm show crds jetstack/cert-manager --version <chart-version> | head
helm show values jetstack/cert-manager --version <chart-version> | grep -n -A4 '^crds:'

helm show crds prints the chart's CRD files, and helm show values prints its values.yaml. cert-manager's own install docs toggle its CRDs with --set crds.enabled=true, which tells you its CRDs are value-controlled templates. Every chart names this value differently, so always read the values file of the version you pinned.

3. Render to a file with the CRDs left out

kubectl create namespace prepium-tutorial
helm template cm-preview jetstack/cert-manager \
  --version <chart-version> \
  --namespace prepium-tutorial \
  --set crds.enabled=false \
  > /tmp/cm-preview.yaml

The first argument is the release name, which charts typically weave into object names and labels. --namespace sets the release namespace that templates read. cert-manager's docs point out that helm template does not output a Namespace object, so the namespace must exist before you apply the file.

4. Verify the file before trusting it

grep -c '^kind: CustomResourceDefinition' /tmp/cm-preview.yaml     # expect 0
grep -m3 'helm.sh/chart' /tmp/cm-preview.yaml                       # NAME-VERSION, if the chart uses Helm's suggested label
kubectl apply --dry-run=server -f /tmp/cm-preview.yaml | head

The server-side dry run asks the API server to validate every object without saving it, which catches missing namespaces or missing CRDs before a real apply.

Common mistakes

Example checkEvidence
Repo registered under the expected namehelm repo list
Pinned chart renderedChart label in the file shows the requested version
CRDs excludedNo kind: CustomResourceDefinition in the file
Nothing installedhelm list -A shows no new release

Cleanup: rm /tmp/cm-preview.yaml, kubectl delete namespace prepium-tutorial, helm repo remove jetstack. References: helm template, Helm: Custom Resource Definitions, Helm: Charts, cert-manager Helm install. Next, try Helm for CKAD or Kustomize overlays.

Exam
CKA
Domain
Cluster Architecture, Installation & Configuration
Grading
Programmatic · partial credit

What this tests

Build clusters with kubeadm, manage RBAC, etcd, and the control plane, and install a CNI. On the CKA exam, Cluster Architecture, Installation & Configuration tasks are graded purely on what you build in the cluster - not multiple choice - so the only way to get faster is to do them on a real cluster against a clock.

Practice it for real

The public description lets you study the task before signing up. Full access includes every live lab. Six selected CKA scenarios are included in Free Practice, with five shared sessions each week. You solve the task in a real terminal, hit validate, and a programmatic checker scores exactly what you got right and wrong (with partial credit). You can open the solution while practising, then retry and use the failed checks to improve your score.

Related CKA tasks