Skip to main content

Helm charts

Everything that runs on CPP’s CCM AKS clusters is deployed with Helm — application services, the istio service mesh, monitoring, and the supporting products around them. The charts all live in one repository, cpp-helm-chart, with one directory per chart.

This section is the catalogue of those charts: what exists, what each one is for, and how to use and change them.

How CPP charts differ from CNP charts

CPP has its own chart set alongside the Cloud Native Platform’s, and the two follow different models:

  • CNP: every service repository contains its own small application chart, which depends on a centrally-maintained base chart such as chart-java — see the CNP Helm charts section.
  • CPP: services do not have a chart of their own. A small set of shared application charts (springboot-app, wildfly-app, and friends) is maintained centrally in cpp-helm-chart, and each CCM service supplies its values through cpp-aks-deploy and is deployed by Helmsman.

The intent is the same in both models — services describe configuration, not Kubernetes YAML — but on CPP the chart templates themselves are shared, so a template improvement lands in cpp-helm-chart once and every consuming service picks it up on its next chart version bump.

Where charts are published

Each chart carries its own semantic version in Chart.yaml, and the repository’s Azure DevOps pipeline publishes charts to Azure Container Registry as OCI artifacts:

  • On a pull request — every changed chart is packaged as <version>-PR<number> and pushed to oci://crmdvrepo01.azurecr.io/charts/pr-images, so you can test a chart change against a real deployment before it merges. Changed charts are also linted, unit tested and dry-run installed against the dev cluster.
  • On merge to main — any chart whose Chart.yaml version is not yet in the registry is packaged and pushed to oci://crmdvrepo01.azurecr.io/charts/<chart>. Released versions are imported into the live ACR from there.

Consumers always pin an exact chart version, so publishing a new version changes nothing until a consuming repository chooses to move to it.

How charts are deployed

CCM applications consume the published charts through two controllers:

  • Helmsman — the established route for CCM services. cpp-aks-deploy declares each release in its helmsman.toml files and renders per-environment values with Ansible.

  • Flux — cpp-flux-config defines HelmReleases for selected CCM services, including idam-integration-service. Environment and stack overlays determine where each service is deployed. Check deployment ownership and the Helmsman guard before selecting a route.

Using and customising charts covers both routes in detail, and Tools and configuration documents the CCM deployment pipeline.

This page was last reviewed on 9 October 2026. It needs to be reviewed again on 9 April 2027 by the page owner platops-build-notices .