feat(epp): add --tls-min-version and --tls-cipher-suites flags - #2230
Conversation
|
🚨 Unsigned commits detected! Please sign your commits. For instructions on how to set up GPG/SSH signing and verify your commits, please see GitHub Documentation. |
b6aa11f to
0b85825
Compare
eda01cf to
77946a7
Compare
|
i think in general this will work, basically the idea is to put the responsiblity on the one who creates router deployment to choose values that are both valid and compatible. just food for thought:
|
elevran
left a comment
There was a problem hiding this comment.
Clean, well-tested addition - thanks!
Minor doc update before this merges.
| fs.StringVar(&opts.TLSMinVersion, "tls-min-version", opts.TLSMinVersion, | ||
| "Minimum TLS version for secure serving (e.g., VersionTLS12, VersionTLS13).") | ||
| fs.StringSliceVar(&opts.TLSCipherSuites, "tls-cipher-suites", opts.TLSCipherSuites, | ||
| "Comma-separated list of TLS cipher suites for secure serving (Go crypto/tls names, e.g., TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256).") |
There was a problem hiding this comment.
Go's crypto/tls only honors CipherSuites for TLS 1.2 and below; TLS 1.3 suites are fixed and not configurable here. If an admin sets --tls-min-version=VersionTLS12 alongside a restrictive --tls-cipher-suites list, a client can still negotiate TLS 1.3 with suites outside that list, so the cipher restriction is silently not enforced on 1.3 connections.
- Worth a one-line callout in the help text given the stated goal of enforcing a platform TLS profile.
- Update to release-note in PR description to make this more explicit on release
There was a problem hiding this comment.
Done — updated both:
- Flag help text:
--tls-cipher-suitesnow reads: "Only effective for TLS 1.2 and below; TLS 1.3 cipher suites are not configurable." - Release note: Added the same caveat: "Note: --tls-cipher-suites only applies to TLS 1.2 and below; TLS 1.3 cipher suites are fixed by Go's crypto/tls and not configurable."
Add CLI flags to configure TLS minimum version and cipher suites on the ext_proc gRPC server. Values are parsed from Go crypto/tls constant names (e.g., VersionTLS12, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) and applied to both cert-reload and static-cert TLS config paths. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Andres Llausas <allausas@redhat.com>
7a37991 to
b0c6f63
Compare
What type of PR is this?
/kind feature
What this PR does / why we need it:
Adds two new CLI flags to the EPP (Endpoint Picker) for configuring TLS
minimum version and cipher suites on the ext_proc gRPC server:
--tls-min-version— accepts Gocrypto/tlsversion constant names(e.g.,
VersionTLS12,VersionTLS13)--tls-cipher-suites— accepts a comma-separated list of Gocrypto/tlscipher suite names (e.g.,
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256).Only effective for TLS 1.2 and below; TLS 1.3 cipher suites are fixed
by the Go standard library and not configurable via this flag.
These flags allow cluster administrators to enforce a TLS security profile
on the llm-d-router's gRPC server, aligning with platform-level TLS policies
(e.g., OpenShift's cluster-wide TLS profile).
The parsed values are applied to both TLS config paths (static cert and
cert-reload) via an extracted
applyTLSOverridesmethod, with dedicatedunit tests in
tls_test.go.Companion PR: kserve/kserve#5924 (adds template
variables to pass these flags from the KServe config system).
Which issue(s) this PR fixes:
Fixes #2239
Release note: