mirror of
https://gitlab.kube.huskypup.net/Scooby/Homelabv4.git
synced 2026-08-23 12:56:46 +00:00
GitLab cross-site replication Phase 2b: enable Gitaly + workhorse TLS
Per the approved plan (Istio federation scoped separately, current NodePort/PeerAuth/cert-manager pattern continues for these 2 remaining links). Real Let's Encrypt certs (not self-signed) via the same DNS-01 ClusterIssuer used everywhere else - both sites already trust Let's Encrypt's public CA, no custom CA distribution needed. - global.gitaly.tls.enabled: adds tls_listen_addr (8076) alongside the existing plaintext listener (8075, stays for in-cluster traffic that doesn't need it). Requires global.praefect.virtualStorages[0].tlsSecretName (chart's own NOTES.txt validation rejects the render without it, confirmed live). - global.workhorse.tls.enabled + global.workhorse.host: Gitaly's [gitlab] url (internal-API callback for gitlab-shell hooks) switches from an unpublishable *.svc.cluster.local name to a real floating hostname (gitlab-internal-api.ha.huskypup.net) that Let's Encrypt CAN certify - confirmed live this replaces the plaintext [[listeners]] block with [listeners.tls] on the SAME port (8181), not a second port like Gitaly. - praefect-ha-configmap.yaml (the manually-patched live config) updated to tls:// + floating hostnames for all 3 home nodes, so home's own Praefect uses the identical addresses it'll hand the VPS as peer addresses once Phase 2b's 4th node lands. - New CoreDNS rewrite for gitlab-internal-api.ha.huskypup.net (same local-rewrite pattern as pg-*/gitaly-* already have). Sequencing note: applying live - Certificates must issue before the TLS-enabling values land, or Gitaly/webservice pods fail to start (missing secret for their init container's cert copy). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
166ff0ffb7
commit
bce3861083
+37
-1
@@ -54,7 +54,37 @@ global:
|
||||
internal:
|
||||
names: [] # No internal Gitaly, using Praefect
|
||||
external: [] # Praefect configured below
|
||||
|
||||
# GitLab cross-site replication (see
|
||||
# /home/scooby/.claude/plans/jiggly-snacking-iverson.md) - Gitaly's
|
||||
# gRPC has no TLS by default. The VPS's 4th node has to be reached
|
||||
# over the same public UniFi WAN forward already used for Postgres
|
||||
# (confirmed live the direct-Netbird-IP path doesn't accept inbound
|
||||
# connections to home, same as the existing etcd quorum) - without
|
||||
# this, that WAN hop would carry the gitaly_token,
|
||||
# gitlab_shell_secret, and raw repository contents in plaintext.
|
||||
# Chart-native support (tls_listen_addr alongside the existing
|
||||
# plaintext listener, both stay active) - cert is a real Let's
|
||||
# Encrypt cert via the same DNS-01 ClusterIssuer already used
|
||||
# everywhere else (gitaly-tls-certificate.yaml), not a self-signed
|
||||
# one, so no custom CA needs distributing to either site.
|
||||
tls:
|
||||
enabled: true
|
||||
|
||||
# Gitaly's [gitlab] url (the internal-API callback every Gitaly node
|
||||
# uses for gitlab-shell hooks) - a real, TLS-supported override,
|
||||
# confirmed live via gitlab/charts/gitlab/templates/_workhorse.tpl.
|
||||
# Uses the SAME floating-hostname + CoreDNS-local-rewrite pattern
|
||||
# already proven for Postgres and Gitaly's own node addresses: home's
|
||||
# 3 Gitaly nodes resolve this locally (no WAN round-trip), the VPS's
|
||||
# 4th node resolves it via the UniFi WAN forward - one consistent
|
||||
# https:// URL for every node regardless of site, rather than trying
|
||||
# to TLS-certify an unpublishable *.svc.cluster.local name (which
|
||||
# Let's Encrypt fundamentally can't issue for).
|
||||
workhorse:
|
||||
host: gitlab-internal-api.ha.huskypup.net
|
||||
tls:
|
||||
enabled: true
|
||||
|
||||
# Praefect configuration
|
||||
praefect:
|
||||
enabled: true
|
||||
@@ -68,6 +98,12 @@ global:
|
||||
- name: default
|
||||
gitalyReplicas: 3 # Production HA
|
||||
maxUnavailable: 1
|
||||
# Required once global.gitaly.tls.enabled: true - the chart's own
|
||||
# NOTES.txt validation rejects the render without it ("not
|
||||
# specified ('default')... not supported", confirmed live).
|
||||
# Matches gitlab.gitaly.tls.secret's default name/keys
|
||||
# (gitaly-tls-certificate.yaml issues into this exact secret).
|
||||
tlsSecretName: gitlab-gitaly-tls
|
||||
|
||||
# Praefect PostgreSQL configuration
|
||||
psql:
|
||||
|
||||
Reference in New Issue
Block a user