Skip to content

Conversation

@dims
Copy link
Member

@dims dims commented Jan 23, 2026

This change allows cluster operators to toggle between HTTP and HTTPS for etcd client connections on a per-cluster basis, matching the pattern used by Kubernetes GCE scale tests where events etcd uses HTTP while main etcd uses HTTPS.

I'd like to match what is in: https://github.com/kubernetes/kubernetes/blob/master/cluster/gce/gci/configure-kubeapiserver.sh#L35

Changes:

  • Add ClientTLSEnabled field to EtcdClusterSpec (defaults to true)
  • Add helper methods IsClientTLSEnabled() and GetClientScheme()
  • Update etcd-manager model to use configurable scheme
  • Update API server to use configurable scheme for etcd URLs
  • Add validation to prevent disabling TLS on main etcd cluster
  • Generate deepcopy and conversion functions

Benefits:

  • Eliminates TLS handshake overhead for events etcd
  • Fixes gRPC connection proliferation issues with TLS
  • Allows HTTP for events (ephemeral data) while keeping main secure
  • Enforces TLS for main etcd (contains cluster state)

@k8s-ci-robot k8s-ci-robot added size/M Denotes a PR that changes 30-99 lines, ignoring generated files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. labels Jan 23, 2026
@dims
Copy link
Member Author

dims commented Jan 23, 2026

/assign @rifelpet @hakman

@dims dims force-pushed the feature/etcd-http-tls-toggle branch from 42c4f0a to 340bb72 Compare January 23, 2026 19:57
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please ask for approval from hakman. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

This change allows cluster operators to toggle between HTTP and HTTPS
for etcd client connections on a per-cluster basis, matching the pattern
used by Kubernetes GCE scale tests where events etcd uses HTTP while main
etcd uses HTTPS.

Changes:
- Add ClientTLSEnabled field to EtcdClusterSpec (defaults to true)
- Add helper methods IsClientTLSEnabled() and GetClientScheme()
- Update etcd-manager model to use configurable scheme
- Update API server to use configurable scheme for etcd URLs
- Add validation to prevent disabling TLS on main etcd cluster
- Generate deepcopy and conversion functions

Benefits:
- Eliminates TLS handshake overhead for events etcd
- Fixes gRPC connection proliferation issues with TLS
- Allows HTTP for events (ephemeral data) while keeping main secure
- Enforces TLS for main etcd (contains cluster state)

Usage:
  spec:
    etcdClusters:
    - name: main
      # Uses HTTPS by default (secure)
    - name: events
      clientTLSEnabled: false  # Use HTTP (fast)

Signed-off-by: Davanum Srinivas <davanum@gmail.com>
@dims dims force-pushed the feature/etcd-http-tls-toggle branch from 340bb72 to 839d153 Compare January 23, 2026 20:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/api cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/M Denotes a PR that changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants