Skip to main content

Configure Helmfile

Atmos natively supports opinionated workflows for Helmfile. It's compatible with every version of helmfile and designed to work with multiple different versions of Helmfile concurrently.

Keep in mind that Atmos does not handle the downloading or installation of Helmfile (or its dependency Kustomize); it assumes these commands are already installed on your system. For installation instructions, refer to:

To automate the installation process, consider creating a Custom Command.

Atmos provides many settings that are specific to Helmfile, which are configured in atmos.yaml.

CLI Configuration

All of the following settings are defined by default in the Atmos CLI Configuration found in atmos.yaml.

important

At this time, these settings cannot be overridden in the Stack configuration.

The defaults for everything are defined underneath the components.helmfile section.

components:
helmfile:
# ...

The following settings are available for Helmfile:

base_path
The root directory where the Helmfile components and configurations are located. This path serves as the starting point for resolving any relative paths within the Helmfile setup.
use_eks (default: false)
A flag indicating whether the component is configured to use Amazon EKS (Elastic Kubernetes Service). When set to true, the component will interact with EKS for provisioning and managing Kubernetes clusters. Also, it means cluster_name_pattern must be defined.
kubeconfig_path
The file path to the kubeconfig file, which contains the necessary authentication and configuration details to interact with the Kubernetes cluster. This path is essential for managing cluster resources using Helmfile.
helm_aws_profile_pattern
A pattern that defines which AWS CLI profiles should be used by Helm when interacting with AWS services, such as EKS. This allows for dynamic selection of AWS credentials based on the environment or cluster.
cluster_name_pattern (required when use_eks=true)
A naming pattern used to identify and select the Kubernetes cluster within the Helmfile configuration. This pattern helps automate the management of different clusters by matching their names based on the specified criteria.

Example Configuration

Here is an example configuration for Helmfile that we use at Cloud Posse in our refarch for AWS.

atmos.yaml

components:
helmfile:
base_path: components/helmfile
use_eks: true
kubeconfig_path: /dev/shm
helm_aws_profile_pattern: '{namespace}-{tenant}-gbl-{stage}-helm'
cluster_name_pattern: '{namespace}-{tenant}-{environment}-{stage}-eks-cluster'