Skip to content

feat: support Temporal Server 1.30.x#17

Merged
TechyMT merged 1 commit into
main-0.22-atlan-0.1from
feat/support-temporal-1.30
Jul 24, 2026
Merged

feat: support Temporal Server 1.30.x#17
TechyMT merged 1 commit into
main-0.22-atlan-0.1from
feat/support-temporal-1.30

Conversation

@TechyMT

@TechyMT TechyMT commented Jul 24, 2026

Copy link
Copy Markdown
Member

feat: support Temporal Server 1.30.x

Problem

Temporal Server 1.30 slimmed the temporalio/server image: dockerize was removed and config templating moved into the server binary (embedded sprig, opt-in via a leading # enable-template comment, and the config file located via TEMPORAL_SERVER_CONFIG_FILE_PATH). The operator mounts an unrendered config_template.yaml and sets no start command, so on a stock 1.30 image the dockerize-style {{ .Env.X }} placeholders never resolve and every server pod crash-loops. The version webhook also caps supported versions below 1.30.

Changes

  • version (pkg/version/version.go, upgrade.go): widen SupportedVersionsRange to < 1.31.0; add 30 -> 1.30.6 to RecommendedVersions; add the V1_30_0 boundary constant; mark 1.30.0 broken (it has no published GitHub release — use 1.30.1+).
  • config (internal/resource/config/configmap_builder.go): for clusters >= 1.30, emit sprig placeholders ({{ env "X" }}, {{ default "0.0.0.0" (env "POD_IP") }}) and prepend the # enable-template marker. Pre-1.30 dockerize .Env behavior is unchanged (version-gated).
  • deployment (internal/resource/base/deployment_builder.go): for >= 1.30, set TEMPORAL_SERVICES (service selection) and TEMPORAL_SERVER_CONFIG_FILE_PATH on the server container.

Scoped to what 1.30.x needs. This mirrors the config-rendering approach in upstream PR alexandrevilain#987, but deliberately omits its 1.31-only pieces (the PasswordCommand datastore field and the Elasticsearch-tool schema changes), since this fork targets 1.30.6 with Postgres visibility.

Testing

  • go build / go vet clean on pkg/version, internal/resource/config, internal/resource/base.
  • New unit tests: version range/upgrade-hop cases for 1.30; version-gated template-helper tests (configmap_builder_internal_test.go) asserting dockerize syntax pre-1.30 and sprig syntax >= 1.30.
  • Rendering validated out-of-band: the emitted sprig template renders with nil template data (the way the server invokes it) — env vars resolve and POD_IP falls back to 0.0.0.0, no placeholders left.

Note on base branch

Targets main-0.22-atlan-0.1 (the fork's active line — the branch build.yaml publishes the operator image from), consistent with the other operator PRs on this line.

🤖 Generated with Claude Code

Temporal Server 1.30 slimmed the temporalio/server image: dockerize was removed
and config templating moved into the server binary (embedded sprig, opt-in via a
leading '# enable-template' comment and located via TEMPORAL_SERVER_CONFIG_FILE_PATH).
The operator mounts an unrendered config_template.yaml and sets no start command,
so on a stock 1.30 image the dockerize-style {{ .Env.X }} placeholders never
resolve and server pods crash-loop.

Changes:
- version: widen SupportedVersionsRange to < 1.31.0; add 30 -> 1.30.6 to
  RecommendedVersions; add V1_30_0; mark 1.30.0 broken (no published release).
- config: for clusters >= 1.30, emit sprig placeholders ({{ env "X" }},
  {{ default "0.0.0.0" (env "POD_IP") }}) and prepend '# enable-template';
  pre-1.30 dockerize behavior unchanged.
- deployment: for >= 1.30, set TEMPORAL_SERVICES and TEMPORAL_SERVER_CONFIG_FILE_PATH
  on the server container.

Mirrors upstream alexandrevilain#987, scoped to 1.30.x
(no 1.31 PasswordCommand / Elasticsearch-tool changes).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@TechyMT
TechyMT merged commit c6d16a3 into main-0.22-atlan-0.1 Jul 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants