⚠️ Work in Progress
You are viewing development documentation built from the latest commit on main. APIs and features are subject to change.

External Secrets Builders

External Secrets Builders - External Secrets Resource Constructors

Go Reference Go Reference

The externalsecrets package provides strongly-typed constructor functions for creating External Secrets Operator Kubernetes resources. These are the low-level building blocks used by Kure’s higher-level stack and workflow packages.

Overview

Each function takes a configuration struct and returns a fully initialized External Secrets custom resource. The builders handle API version and kind metadata, letting you focus on the resource specification.

Supported Resources

External Secrets

import "github.com/go-kure/kure/pkg/kubernetes/externalsecrets"

es := externalsecrets.ExternalSecret(&externalsecrets.ExternalSecretConfig{
    Name:      "my-secret",
    Namespace: "default",
    SecretStoreRef: esv1.SecretStoreRef{
        Name: "vault",
        Kind: "ClusterSecretStore",
    },
    Data: []esv1.ExternalSecretData{
        {
            SecretKey: "password",
            RemoteRef: esv1.ExternalSecretDataRemoteRef{
                Key: "secret/data/myapp",
            },
        },
    },
})

Secret Stores

ss := externalsecrets.SecretStore(&externalsecrets.SecretStoreConfig{
    Name:      "aws-store",
    Namespace: "default",
    Provider: &esv1.SecretStoreProvider{
        AWS: &esv1.AWSProvider{
            Region: "us-east-1",
        },
    },
})

Cluster Secret Stores

css := externalsecrets.ClusterSecretStore(&externalsecrets.ClusterSecretStoreConfig{
    Name: "global-vault",
    Provider: &esv1.SecretStoreProvider{
        AWS: &esv1.AWSProvider{
            Region: "us-east-1",
        },
    },
})

Modifier Functions

Update existing resources:

// Replace full spec
externalsecrets.SetExternalSecretSpec(es, newSpec)
externalsecrets.SetSecretStoreSpec(ss, newSpec)
externalsecrets.SetClusterSecretStoreSpec(css, newSpec)

// Granular updates
externalsecrets.AddExternalSecretData(es, data)
externalsecrets.SetExternalSecretSecretStoreRef(es, ref)
externalsecrets.AddExternalSecretLabel(es, "app", "myapp")
externalsecrets.AddExternalSecretAnnotation(es, "note", "value")

externalsecrets.SetSecretStoreProvider(ss, provider)
externalsecrets.SetSecretStoreController(ss, "my-controller")
externalsecrets.AddSecretStoreLabel(ss, "env", "prod")
externalsecrets.AddSecretStoreAnnotation(ss, "desc", "value")

externalsecrets.SetClusterSecretStoreProvider(css, provider)
externalsecrets.SetClusterSecretStoreController(css, "global")
externalsecrets.AddClusterSecretStoreLabel(css, "team", "platform")
externalsecrets.AddClusterSecretStoreAnnotation(css, "owner", "ops")