Skip to content

feat(helm): add extraObjects support#781

Merged
robholland merged 4 commits intotemporalio:mainfrom
ralf157:main
Mar 30, 2026
Merged

feat(helm): add extraObjects support#781
robholland merged 4 commits intotemporalio:mainfrom
ralf157:main

Conversation

@ralf157
Copy link
Copy Markdown
Contributor

@ralf157 ralf157 commented Nov 17, 2025

Add extraObjects support for external secret management

Problem

Temporal Helm charts currently create Kubernetes Secrets inline with base64-encoded sensitive data directly in chart templates. While this works for basic deployments, it creates significant challenges in GitOps workflows where sensitive data like database passwords are stored as base64-encoded strings in Git repositories, providing minimal security since base64 is easily reversible.

Solution

Add support for extraObjects configuration to allow injecting additional Kubernetes manifests, enabling external secret management solutions like ExternalSecretOperator or SealedSecrets.

Changes

Configuration (values.yaml)

  • Added extraObjects field as an array of Kubernetes resource definitions
  • Defaults to empty array for backward compatibility

Template (templates/extra-objects.yaml)

  • New template that renders all objects from extraObjects array
  • Supports both list and map formats
  • Uses --- document separators for multi-document YAML

Documentation (README.md)

  • Added new section "Install with extraObjects for external secret management"
  • Includes examples for ExternalSecretOperator and SealedSecrets
  • Provides clear installation instructions

Tests (tests/extra_objects_test.yaml)

  • Added automated tests using helm-unittest framework
  • Tests empty extraObjects (no output)
  • Tests rendering of ConfigMap and ExternalSecret resources

Usage Examples

ExternalSecretOperator

extraObjects:
  - apiVersion: external-secrets.io/v1beta1
    kind: ExternalSecret
    metadata:
      name: temporal-db-secret
    spec:
      secretStoreRef:
        name: aws-secretsmanager
        kind: SecretStore
      target:
        name: temporal-default-store
        creationPolicy: Owner
      data:
      - secretKey: password
        remoteRef:
          key: prod/temporal/db
          property: password

SealedSecrets

extraObjects:
  - apiVersion: bitnami.com/v1alpha1
    kind: SealedSecret
    metadata:
      name: temporal-db-secret
    spec:
      encryptedData:
        password: <encrypted-password>
      template:
        metadata:
          name: temporal-default-store

Benefits

  • Enhanced Security: Secrets can be properly encrypted or managed externally
  • GitOps Compatibility: Supports encrypted secrets in Git repositories
  • Flexibility: Works with various secret management solutions
  • Centralized Management: Keeps secret generation logic within Helm chart context
  • Backward Compatibility: Existing deployments continue to work unchanged

Testing

  • Added automated tests covering various scenarios
  • Manual validation of template rendering
  • Verified compatibility with existing chart functionality

Related Issues

Closes #780 (GitOps secret management support)

Checklist

  • Changes follow Helm chart best practices
  • Documentation updated with examples
  • Automated tests added
  • Backward compatibility maintained
  • Security considerations addressed

@ralf157 ralf157 requested a review from a team as a code owner November 17, 2025 12:13
@CLAassistant
Copy link
Copy Markdown

CLAassistant commented Nov 17, 2025

CLA assistant check
All committers have signed the CLA.

- Add extraObjects configuration field to values.yaml
- Create templates/extra-objects.yaml to render additional manifests
- Update README.md with usage examples for ExternalSecretOperator and SealedSecrets
- Add automated tests in tests/extra_objects_test.yaml
- Enable GitOps-friendly secret management by allowing injection of custom resources

Signed-off-by: Ralf Dahmen <ralf.dahmen14@googlemail.com>
Signed-off-by: Ralf Dahmen <ralf.dahmen14@googlemail.com>
@siennathesane
Copy link
Copy Markdown

I desperately need this lol

@robholland robholland changed the title feat(helm): add extraObjects support for external secret management feat(helm): add extraObjects support Jan 16, 2026
Copy link
Copy Markdown
Contributor

@robholland robholland left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't really like the name, but it seems that's the consensus. I agree with others that this should be a helm feature, but until then...

Comment thread charts/temporal/templates/extra-objects.yaml Outdated
@robholland robholland added the needs revision Team has requested some changes label Jan 16, 2026
@Ray-Barker
Copy link
Copy Markdown

Can we add concise version mentioned by @robholland?

{{ range .Values.extraObjects }}
---
{{ tpl . $ }}
{{ end }}

What's the state of this PR? I really don't want to make a wrapper chart only to create additional secrets. Should I make another PR maybe?

@robholland
Copy link
Copy Markdown
Contributor

@Ray-Barker Perhaps create a new PR as we've not heard back.

@ralf157
Copy link
Copy Markdown
Contributor Author

ralf157 commented Mar 29, 2026

Sorry for the long wait, @Ray-Barker and @robholland!
I just tried to implement the templating according to your feedback.

Please have a look again.

@ralf157 ralf157 requested a review from robholland March 29, 2026 11:31
Copy link
Copy Markdown
Contributor

@robholland robholland left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great, thanks.

@robholland robholland merged commit d0db258 into temporalio:main Mar 30, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs revision Team has requested some changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature Request] enable external secret management in GitOps scenarios

5 participants