Go to file
Kasper Juul Hermansen 25eb280fee
Some checks failed
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is failing
chore(deps): update dependency go to v1.23.1
2024-09-06 00:24:05 +00:00
internal/accept_test feat: working helm template 2023-04-07 00:06:38 +02:00
shuttletask chore(deps): update dependency go to v1.23.1 2024-09-06 00:24:05 +00:00
.drone.yml feat: add cuddle 2024-04-06 23:37:55 +02:00
.gitignore feat: with acceptest 2023-04-06 22:30:09 +02:00
cuddle.yaml feat: add cuddle 2024-04-06 23:37:55 +02:00
dagger.go feat: with readme 2023-04-07 00:18:03 +02:00
go.mod chore(deps): update dependency go to v1.23.1 2024-09-06 00:24:05 +00:00
go.sum fix(deps): update module dagger.io/dagger to v0.12.7 2024-09-03 00:22:12 +00:00
README.md feat: with readme 2023-04-07 00:18:03 +02:00
renovate.json Add renovate.json 2023-04-06 22:33:48 +00:00
shuttle.yaml feat: with acceptest 2023-04-06 22:30:09 +02:00

helm-dagger

helm-dagger is a lightweight library that helps users to compile Helm charts using custom values files. It simplifies the process of customizing Kubernetes deployments for different environments or configurations. This library uses a custom delimiter in the values files to avoid conflicts with Helm's default delimiter.

Features

  • Customizable delimiters for the values files
  • Lightweight and easy to integrate into your projects
  • Allows using Helm charts with custom values files programmatically

Dependencies

This library requires Docker to be installed.

Usage

1. Import Helm-Dagger

Import the helm-dagger library into your project:

go get git.front.kjuulh.io/kjuulh/helm-dagger
import (
  "context"
  helmdagger "git.front.kjuulh.io/kjuulh/helm-dagger"
)

2. Prepare your chart and values files

Store your chart and values files in a known directory. In this example, the chart files are stored in the "test_data/nginx" directory, and the custom values file is stored in the "test_data/nginx.values.yaml" file.

3. Call the Compile function

The Compile function is the main function to generate an output directory with the customized chart. It accepts the following parameters:

  • ctx: a context.Context instance
  • client: a dagger.Client instance
  • chartPath: the path to the chart directory
  • valuesFilePath: the path to the custom values file
helmOutput, err := helmdagger.Compile(ctx, client, "test_data/nginx", "test_data/nginx.values.yaml")
if err != nil {
    log.Fatal(err)
}

4. Export the customized chart

To export the customized chart, call the Export method on the returned helmOutput:

exported, err := helmOutput.Export(ctx, "test_data/dist")
if err != nil {
    log.Fatal(err)
}

if exported {
    log.Println("Helm chart successfully exported to test_data/dist")
} else {
    log.Fatal("Failed to export Helm chart")
}

5. Verify the chart

Check the output directory to see the compiled Helm chart:

dir, err := os.ReadDir("test_data/dist/nginx/templates")
if err != nil {
    log.Fatal(err)
}

log.Printf("Found %d templates in the output directory", len(dir))

Example

An example of using helm-dagger to compile a Helm chart with a custom values file can be found in the test file:

package helmdagger_test

import (
(...) // Import statements

func TestHelmDagger(t *testing.T) {
    (...) // Test setup

    helmoutput, err := daggerhelm.Compile(ctx, client, "test/test_data/nginx", "test/test_data/nginx.values.yaml")
    assert.NoError(t, err)

    exported, err := helmoutput.Export(ctx, "test/test_data/dist")
    assert.NoError(t, err)
    assert.True(t, exported)

    dir, err := os.ReadDir("test/test_data/dist/nginx/templates")
    assert.NoError(t, err)
    assert.Equal(t, 2, len(dir))
}

Now you can use Helm-Dagger to compile Helm charts with custom values files programmatically, making it easier to manage different configurations for your Kubernetes deployments.