redpanda-data / redpanda-data/redpanda-operator

Certificate generation skipped when internal listener TLS is disabled

Open Beginner friendly
#1,222 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
84
Forks
32
Avg merge
1d 19h
Merged PRs (30d)
104

Description

https://github.com/redpanda-data/redpanda-operator/blob/operator/v25.2.1/charts/redpanda/chart/templates/_values.go.tpl#L512

Description:
The Helm chart template contains a logic flaw where the check for InternalTLS.IsEnabled short-circuits the entire listener processing loop. When internal TLS is disabled for a listener (listeners.<listener>.tls.enabled: false), the template skips creating Certificate resources for that listener's external endpoints, even when external TLS is explicitly enabled.

Impact:
Cannot use TLS only on external listeners without also enabling internal TLS
Certificate CRDs are not created for external listeners when internal TLS is disabled
cert-manager has no Certificate resources to process
No TLS secrets are generated
Pods crash with error: Could not read certificate file /etc/tls/certs/external/tls.crt

Actual Behavior: The above configuration results in NO Certificate resources being created because the internal TLS check (enabled: false) causes the entire listener to be skipped in the certificate generation logic.

Workaround: Enable internal TLS for all listeners that need external certificates:

listeners:
  kafka:
    tls:
      enabled: true   # Must enable internal TLS
      cert: external  # Use same cert for internal/external
    external:
      default:
        tls:
          enabled: true
          cert: external

Trade-off: This workaround forces TLS on internal cluster communication, which may have performance implications and requires valid certificates for pod-to-pod traffic.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at charts/redpanda/chart/templates/_values.go.tpl around line 512 and inspect how the internal TLS check controls listener processing. Render the chart with internal TLS disabled and external TLS enabled, then verify that Certificate resources are generated for the external endpoints; done when those resources appear without requiring internal TLS.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, kubernetes
Domain
devops
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
72/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.