Merged
Conversation
- README.md documenting architecture, Thompson Sampling, constraints, NATS event contract, Valkey key format, and deployment - cmd/demo: self-contained demo binary using embedded DuckDB, miniredis, and NATS — zero infrastructure needed, run with `make demo` - Makefile: add `demo` target Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add TLS/mTLS support to HTTP server, Valkey (×4), NATS, S3/MinIO, and OTLP — with kernel-aligned modes (disabled|server|mutual) and Helm fail-fast validation guards. Go changes: - New internal/tlsutil package: BuildServerTLSConfig, BuildClientTLSConfig, BuildClientTLSFromCA with TLS 1.3 minimum and kernel mode aliases (plaintext|tls|mtls) - Valkey adapters: *tls.Config param on all 4 FromAddress constructors - NATS publisher: nats.Secure(cfg) when TLS configured - S3 artifacts: UseSSL + custom CA via http.Client TLS transport - OTLP exporter: custom CA via WORKSPACE_OTEL_TLS_CA_PATH - main.go: centralised buildServerTLS/buildValkeyTLS/buildNATSTLS, ListenAndServeTLS when server TLS enabled - NATS_TLS_FIRST documented as Go client limitation (no-op with warning) - Valkey env-var model documented as accepted divergence from kernel URI scheme Helm changes: - values.yaml: tls, natsTls, valkeyTls blocks + S3 useSSL/caPath + OTLP caPath - _helpers.tpl: 15 fail-fast validation guards (mirrors kernel pattern), nil-safe accessors for --reuse-values upgrade compatibility - deployment.yaml: conditional TLS volumes/mounts, tcpSocket probes for mTLS (kubelet cannot present client cert), scheme:HTTPS for server mode - service.yaml: http/https port name conditional - cronjob-tool-learning.yaml: Valkey/NATS TLS volumes + SSL_CERT_FILE for DuckDB Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- main_k8s_test.go: pass nil TLS config to buildSessionStore - cmd/demo/main.go: check db.Close() return values (errcheck), fix gofmt Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Summary
internal/tlsutilpackage: central TLS builder withdisabled|server|mutualmodes, TLS 1.3 minimum, kernel aliases (plaintext|tls|mtls), 15 unit tests with in-test cert generationListenAndServeTLS), Valkey ×4 (redis.Options.TLSConfig), NATS (nats.Secure), S3/MinIO (customhttp.Clientwith CA), OTLP (custom CA)tls,natsTls,valkeyTlsvalue blocks withexistingSecret/mountPath/keyspattern (mirrors kernel), 15 fail-fast validation guards in_helpers.tpl, nil-safe accessors for--reuse-valuesupgrade compatibilitytcpSocketprobes whentls.mode=mutual(kubelet cannot present client cert),httpGetwithscheme: HTTPSfor server modeSSL_CERT_FILEfor DuckDB httpfs custom CADocumented divergences from kernel
VALKEY_TLS_ENABLED+ paths), not URI scheme (rediss://) — go-redis usesaddr+TLSConfig, not URI parsingNATS_TLS_FIRSTnats.goclient has no TLS-first handshake supportTest plan
go build ./...— cleango vet ./...— cleango test ./...— 16 packages pass (including 15 new tlsutil tests + 5 new main_test TLS builder tests)helm lint— cleanhelm templatewith defaults (TLS disabled) — no TLS volumes/env varshelm template --set tls.mode=server— HTTPS probes, TLS volume, correct env varshelm template --set tls.mode=mutual— tcpSocket probes, TLS volume, CLIENT_CA_PATHhelm template --set tls.mode=serverwithoutexistingSecret→ fail-fast errorhelm template --set natsTls.mode=mutualwithout secret → fail-fast errorhelm upgrade --reuse-valuesfrom pre-TLS release — nil-safe, no breakage🤖 Generated with Claude Code