SaveMyCert
Log in
5 of 5 free questions left today·for unlimited practice
Cloud Native Application Delivery

Cloud Native Application Delivery: GitOps, Helm, and Deployment Strategies

12 min readKCNA · Cloud Native Application DeliveryUpdated

Cloud native application delivery is the pipeline that turns source code into running Pods: build a container image, push it to a registry, and apply declarative manifests that Kubernetes reconciles into reality. On top of that pipeline sit the ideas KCNA tests in this domain. Deployments update workloads with a rolling update by default, and patterns such as blue-green and canary layer safer release styles on top. GitOps makes a Git repository the single source of truth and lets an in-cluster controller - Argo CD or Flux - continuously pull and reconcile the cluster to match it. Helm packages applications as charts you install and upgrade as releases, while Kustomize customizes plain YAML with overlays and no templates. This lesson walks through each piece - strategies, CI/CD, GitOps, Helm, and Kustomize - at the recognition depth KCNA expects, with just enough commands and YAML to make the concepts concrete.

What you’ll learn
  • Describe the cloud native delivery pipeline from image build to registry to running Pods
  • Distinguish rolling update, recreate, blue-green, and canary deployment strategies
  • Explain GitOps principles and identify Argo CD and Flux as the CNCF GitOps tools
  • Contrast the CI/CD push model with the GitOps pull model
  • Define Helm charts, values, and releases and outline the install and upgrade workflow
  • Compare Helm templating with Kustomize overlays for customizing manifests

From source code to running Pods

Every cloud native delivery workflow, whatever tools implement it, follows the same three-step shape. First, build: source code plus a Dockerfile (or a buildpack) produces a container image that conforms to the OCI image standard. Second, push: the image is uploaded to a container registry such as Docker Hub, or a private registry, under an immutable reference like registry.example.com/shop/web:1.4.2. Third, deploy: Kubernetes manifests that reference the new image tag are applied to the cluster, and controllers reconcile the running state to match them.

The deploy step is where Kubernetes differs from older platforms. You do not script a sequence of imperative server commands; you declare the desired state in YAML and hand it to the API server. The Deployment controller then works out the safe order of operations - creating a new ReplicaSet, scaling Pods up and down - on your behalf. Delivery tooling in the cloud native world is therefore mostly about two questions: who applies the manifests (a pipeline pushing, or a controller pulling) and how the manifests are produced (written by hand, templated by Helm, or patched by Kustomize).

Keep the vocabulary straight, because KCNA questions lean on it. The image lives in a registry. The manifest describes desired state. The cluster holds actual state. Delivery is the discipline of moving changes through those three layers repeatably, and everything else in this lesson - strategies, GitOps, Helm - is a refinement of that flow.

Rolling updates and recreate: the built-in strategies

A Deployment has a strategy field with exactly two built-in options. RollingUpdate is the default: when you change the Pod template (most often the image tag), the Deployment creates a new ReplicaSet and shifts replicas over gradually, keeping the application available throughout. Two knobs bound the pace: maxSurge (how many extra Pods may exist above the desired count, default 25%) and maxUnavailable (how many Pods may be missing below it, default 25%). New Pods must pass their readiness probes before they count, so traffic only shifts to replicas that are actually ready.

Recreate is the blunt alternative: terminate every old Pod first, then start the new ones. That guarantees old and new versions never run at the same time - useful when two versions would corrupt shared state or fight over a lock - but it causes downtime for the whole gap. If a question mentions a brief outage during every deploy, Recreate is the strategy being described.

You observe and control a rollout with the kubectl rollout family:

kubectl rollout status deployment/web
kubectl rollout history deployment/web
kubectl rollout undo deployment/web
kubectl rollout pause deployment/web
kubectl rollout resume deployment/web

status watches the rollout until it completes or stalls, history lists past revisions, and undo rolls back to the previous revision by re-instating the old Pod template. Rollback is fast because the old ReplicaSet still exists, scaled to zero, waiting to be scaled back up. Remember the pairing: rolling update is the default and preserves availability; recreate is opt-in and accepts downtime for simplicity.

Blue-green and canary: release patterns beyond the built-ins

Blue-green and canary are patterns, not values of the Deployment strategy field. You assemble them from Kubernetes primitives or use tooling that automates them.

In a blue-green deployment you run two complete environments: blue (the live version) and green (the new one). Green is deployed alongside blue, tested in place, and then traffic is switched all at once - in plain Kubernetes, typically by repointing a Service label selector from the blue Pods to the green Pods. Rollback is the same switch in reverse. The cost is capacity: you briefly run two full copies of the application.

A canary release sends a small slice of real traffic - say 5% - to the new version while the rest stays on the stable one. If error rates and latency stay healthy, the slice grows until the canary takes all traffic. Fine-grained percentage splits are beyond what a plain Service offers, so canaries usually rely on a service mesh such as Istio or Linkerd to shift traffic by weight, or on Argo Rollouts, a controller that automates progressive delivery with analysis steps that can abort a bad release automatically.

StrategyHow it worksDowntimeRollbackExtra cost
Rolling updateGradually replaces old Pods with new (default)Nonekubectl rollout undoSmall surge capacity
RecreateStops all old Pods, then starts new onesYesRedeploy old versionNone
Blue-greenFull new environment, switch all traffic at onceNoneInstant switch backDouble capacity during release
CanarySmall traffic share to new version, grow graduallyNoneRoute traffic back to stableTraffic-splitting tooling

For the exam, match the description to the name: two environments and an instant switch is blue-green; a small percentage of users on the new version is a canary.

CI/CD fundamentals: the push model

Continuous integration (CI) is the automated path from a code change to a tested artifact: every push to the repository triggers a pipeline that runs tests, builds the container image, scans it, and pushes it to the registry. Continuous delivery (CD) extends the pipeline to deploying that artifact - into a staging cluster automatically, and into production either automatically (continuous deployment) or after a manual approval.

In the classic push model, the pipeline itself performs the deployment: a job at the end of the pipeline holds credentials for the cluster and runs kubectl apply or helm upgrade against it. Familiar CI systems - Jenkins, GitHub Actions, GitLab CI - work this way, and the cloud native ecosystem includes Tekton (a Continuous Delivery Foundation project), a Kubernetes-native framework where pipeline steps themselves run as Pods.

The push model is simple and universal, but it has structural weaknesses worth recognizing. Cluster credentials must live in the CI system, widening the attack surface. The pipeline only knows the cluster state at the moment it pushes; if someone later edits a Deployment by hand with kubectl edit, nothing notices or corrects the drift. And reconstructing what is deployed means archaeology through pipeline logs rather than reading a single declarative source.

Those weaknesses are exactly what the GitOps pull model, covered next, is designed to remove. On the exam, the trigger word for the push model is a pipeline that has cluster credentials and applies changes from outside; the trigger for GitOps is an agent inside the cluster that pulls from Git.

GitOps: Git as the single source of truth

GitOps manages infrastructure and applications by keeping the entire desired state in a Git repository and letting software agents continuously reconcile the live system to match it. Four principles define it: the desired state is declarative; it is versioned and immutable in Git; agents pull it automatically rather than having it pushed in; and agents continuously reconcile, correcting any divergence between the repository and the cluster.

Operationally that means a controller runs inside the cluster, watches a repository of manifests (plain YAML, Helm charts, or Kustomize overlays), and applies whatever changes land there. To ship a new version you do not run kubectl at all - you open a pull request that bumps the image tag, and once it merges, the controller notices and rolls it out. Rollback is git revert. The Git history becomes a complete, reviewable audit log of every change to the environment, and because the agent keeps reconciling, drift - someone hand-editing a live object - is detected and can be automatically reverted to match Git.

The two tools to know are Argo CD and Flux, both graduated CNCF projects. Argo CD adds a web UI that visualizes sync status per application; Flux is a set of controllers configured entirely through Kubernetes custom resources. For KCNA you only need to recognize both as GitOps tools.

AspectPush (pipeline CD)Pull (GitOps)
Who applies changesExternal pipeline jobController inside the cluster
Cluster credentialsStored in the CI systemStay inside the cluster
Drift handlingUndetected until next pipeline runDetected and reconciled continuously
RollbackRe-run an old pipelinegit revert, controller reconciles
Audit trailPipeline logsGit commit history

Helm: the Kubernetes package manager

Helm, a graduated CNCF project, is the de facto package manager for Kubernetes. It answers a practical problem: a real application is a bundle of many manifests - Deployment, Service, ConfigMap, Ingress - that you want to install, upgrade, and remove as one unit, with environment-specific settings injected. Helm's three core nouns map directly to that problem. A chart is the package: a directory containing Chart.yaml (name and version metadata), values.yaml (default configuration), and a templates/ directory of manifest templates. Values are the user-supplied configuration that fills in those templates. A release is one installed instance of a chart in a cluster - the same chart can be installed many times as separate releases under different names.

Templates use Go templating: placeholders such as {{ .Values.replicaCount }} or {{ .Release.Name }} are substituted at install time, so one chart serves dev, staging, and production with different values files. The everyday workflow:

helm repo add bitnami https://charts.bitnami.com/bitnami
helm install my-db bitnami/postgresql --values prod-values.yaml
helm list
helm upgrade my-db bitnami/postgresql --set auth.database=orders
helm rollback my-db 1
helm uninstall my-db

install creates a release, upgrade moves it to a new chart version or new values, and each of those actions records a numbered revision, which is what helm rollback returns to. Because Helm tracks every resource a release owns, helm uninstall removes the whole application cleanly. Public charts are shared through chart repositories and hubs such as Artifact Hub, which is how you install third-party software - databases, ingress controllers, monitoring stacks - without writing their manifests yourself.

Kustomize and the wider application definition landscape

Kustomize is the template-free alternative for customizing manifests, and it is built into kubectl - kubectl apply -k processes a Kustomize directory directly. Instead of templates with placeholders, you keep a base of complete, valid YAML manifests and write overlays that patch the base for each environment. An overlay is itself just YAML: a kustomization.yaml file that references the base and declares the differences.

A concrete scenario shows the shape. Your team runs the same web app in staging and production. The base holds the Deployment and Service. The production overlay bumps replicas and pins a new image:

resources:
- ../../base
replicas:
- name: web
  count: 5
images:
- name: shop/web
  newTag: 1.4.2

Running kubectl apply -k overlays/production renders base plus patches and applies the result. Nothing in the base ever contains a placeholder, so every layer remains readable, valid YAML - the property Kustomize trades templating power for.

Choosing between the two is a standard exam contrast:

  • Choose Helm when you need packaging and distribution: versioned charts, install and rollback of releases, shipping software to other teams, or consuming third-party charts.
  • Choose Kustomize when you own plain manifests and only need per-environment variation without a templating language.
  • They also combine: GitOps controllers such as Argo CD and Flux can render either, and Kustomize can post-process Helm output.

Rounding out the landscape, the delivery ecosystem also standardizes image building itself: Cloud Native Buildpacks, a CNCF project, turns source code into OCI images without a Dockerfile. For KCNA, recognition is enough - know what each tool is for, not how to operate it.

Tip. KCNA tests this topic with recognition questions: which strategy is the Deployment default, which pattern runs two full environments and switches traffic at once, and which tools implement GitOps. Trigger words include single source of truth, pull-based reconciliation, and drift (GitOps); chart, values, and release (Helm); and template-free overlays (Kustomize). Expect at least one question distinguishing the CI/CD push model from the GitOps pull model, and one matching blue-green or canary to its description.

Key takeaways
  • RollingUpdate is the default Deployment strategy; Recreate stops all old Pods first and causes downtime
  • Blue-green and canary are patterns, not strategy field values; canary traffic splitting typically needs a service mesh or Argo Rollouts
  • kubectl rollout status watches a Deployment rollout and kubectl rollout undo rolls back to the previous revision
  • GitOps keeps desired state in Git and an in-cluster controller pulls and reconciles it; Argo CD and Flux are the graduated CNCF GitOps tools
  • In GitOps, deploys are merges and rollback is git revert; manual cluster edits show up as drift and are reconciled away
  • A Helm chart plus values produces a release; helm upgrade and helm rollback move a release between numbered revisions
  • Kustomize customizes plain YAML with bases and overlays, no templates, and runs via kubectl apply -k
  • CI push model: the pipeline holds cluster credentials and applies changes; GitOps pull model: the agent inside the cluster fetches from Git

Frequently asked questions

What is the default deployment strategy in Kubernetes?

RollingUpdate is the default strategy for a Deployment. It replaces old Pods with new ones gradually, bounded by maxSurge and maxUnavailable (both default 25%), and waits for new Pods to pass readiness probes before shifting traffic, so the application stays available during the update. The only other built-in strategy is Recreate, which terminates all old Pods before starting new ones and therefore causes downtime.

What is GitOps and how is it different from traditional CI/CD?

GitOps is an operating model where the entire desired state of a system lives in a Git repository and an agent inside the cluster continuously pulls and reconciles the live state to match it. Traditional CI/CD uses a push model: an external pipeline holds cluster credentials and applies changes at the end of a run. GitOps inverts that - credentials stay in the cluster, drift from the declared state is detected and corrected continuously, and rollback is a git revert rather than re-running an old pipeline.

What are Argo CD and Flux?

Argo CD and Flux are the two main GitOps tools in the cloud native ecosystem, and both are graduated CNCF projects. Each runs as a controller inside a Kubernetes cluster, watches a Git repository of manifests, Helm charts, or Kustomize overlays, and keeps the cluster synchronized with what the repository declares. Argo CD is known for its web UI showing per-application sync status; Flux is configured entirely through Kubernetes custom resources.

What is the difference between Helm and Kustomize?

Helm is a package manager: it bundles an application's manifests into a versioned chart, fills Go templates with values at install time, and tracks each installation as a release you can upgrade and roll back. Kustomize is a template-free customization tool: you keep a base of plain, valid YAML and apply per-environment overlays that patch it, with no templating language. Use Helm to package and distribute software; use Kustomize to vary your own manifests across environments. Kustomize is built into kubectl via kubectl apply -k.

What is a Helm release?

A release is a single installed instance of a Helm chart in a cluster. When you run helm install, Helm renders the chart's templates with the supplied values and creates the resulting resources under a release name; the same chart can be installed multiple times as independent releases. Every install or upgrade records a numbered revision for the release, which is what helm rollback returns to, and helm uninstall removes all resources the release owns.

What is a canary deployment?

A canary deployment releases a new version to a small share of real traffic - for example 5% - while most users stay on the stable version. If error rates and latency remain healthy, the share is increased until the new version serves everyone; if not, traffic is routed back to the stable version. Because a plain Kubernetes Service cannot split traffic by fine-grained percentages, canaries typically use a service mesh such as Istio or Linkerd, or a progressive delivery controller such as Argo Rollouts.

Test yourself on this topic
Practice questions with full explanations.
Practice now

Sign up free to mark lessons complete, bookmark topics and track your exam readiness.