Skip to content

cloudoutloud/platform-helm-charts

Repository files navigation

Platform helm charts

An opinionated example on how to deploy open-source Helm charts to each set of environment Kubernetes clusters.

This method makes use of the following open-source tools.

What problem does this solve?

As a platform or DevOps engineer, you will be consuming many open-source tools to extend the functionality of Kubernetes. These typically come packaged in the form of a Helm chart. You will need to deploy these charts to different environments.

Typically, you normally just consume these charts and override the values when needed based on the environments it's deployed in or functionally needed.

This repo gives a structured approach to deploy open-source charts to a given cluster.

Clusters and any additional infrastructure would be provisioned outside this repo, using popular infrastructure as code.

General layout

  • bootstrap-argocd-chart - Core Argocd chart applied manually
  • env-root-apps - Applied manually Argocd apps to track sub environment folders
  • environments > development > dev-cluster-01 - Example environment folder
  • global > cert-manager - Example
├── bootstrap-argocd-chart
│   ├── README.md
│   └── argo-cd
│       ├── Chart.lock
│       ├── Chart.yaml
│       └── values.yaml
├── env-root-apps
│   ├── README.md
│   ├── development-root-app.yaml
├── environments
│   ├── development
│   │   ├── dev-cluster-01
│   │   │   ├── cert-manager
│   │   │   │   └── kustomization.yaml
│   │   │   ├── kustomization.yaml
│   │   │   └── project.yaml
│   │   ├── dev-cluster-02
│   │   └── kustomization.yaml
│   └── production
└── global
    ├── README.md
    ├── argocd
    │   ├── app.yaml
    │   └── kustomization.yaml
    ├── cert-manager
    │   ├── app.yaml
    │   └── kustomization.yaml

Bootstrap and upgrading Argocd

See dedicated readme in path bootstrap-argocd-chart

Adding a open-source chart

Add a new folder under the global directory, populate it with an app.yaml to define the open source helm chart using a helm Argocd application manifest.

Additional chart extra config

There are additional config apps deployed separate to main helm charts. This would normally be resources that consume the chart custom resource definitions (CRD) but sit outside the upstream chart in different namespaces. This config could also be unrelated to helm charts, if you would like a Argocd application to deploy resources in a certain namespace.

Values files vs Values objects

Within each global Argocd application manifest you can either specify valuesObject in line values or reference a separate file valueFiles but you can use both.

For valueFiles you can specify a common values files in the global dir and then a override file in a overlay environment folder.

An example of this is in the global folder kube-prometheus-stack

Kustomize

Kustomize tool is used for templating. Global config application config should be generic enough for any environment. Values can then be override or patches in relevant environment sub folders.

There is a GitHub workflow that runs on every pull request to main, this is to check that Kustomize can build the directory.

Claude skills

The .claude/skills folder contains Claude Code skills scoped to this repo. See .claude/skills/README.md for the full list, installation steps, and how to add a new skill.

Updatecli

Updatecli tool is used to raised pull request when a new version of a chart is released.

This helps keep charts you are deploying update to date with the latest features and security patches.

Its currently set to manually be triggered via github action and will raise pull request on major versions.

Its using the Argocd autodiscovery plugin

updatecli/default.yaml is used to config.

For more information see offical documentation

About

Example on how to deploy open source helm charts to each environment Kubernetes clusters using Kustomize and Argocd.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors