hive-tls: no hive leaf or hive identity on a gateway host without a hive
A self-signed gateway on a host with deploy.hive-controller.enable off (a dedicated swarm-services host) needed the hive leaf for its catch-all, and that leaf now comes only from hive-tls-resign with a per-hive store identity. hive-tls-resign and its timer are now defined only where a hive runs; elsewhere hive-gateway-self-signed-cert installs the swarm-services leaf as the default cert, and the gateway waits for swarm-services-cert. Also corrects the hive-gateway comments and option text that still said the leaf is hive-CA-signed. Refs #4588
This commit is contained in:
parent
fc33a62bf8
commit
75a7dccee6
6 changed files with 90 additions and 24 deletions
|
|
@ -46,8 +46,16 @@ let
|
|||
# Nor on a host fronting no swarm name: it asks the store for the root
|
||||
# alone, which nginx never reads, and a sealed store would otherwise hold
|
||||
# its gateway down.
|
||||
#
|
||||
# On a host with no hive there is no hive leaf to start on: the services
|
||||
# leaf is the only certificate its gateway has, so it always waits.
|
||||
gatewayWaitsForServicesLeaf =
|
||||
localServiceDomains != [ ] && localServiceDomains != [ baoCfg.ui.domain ];
|
||||
localServiceDomains != [ ] && (!runsHive || localServiceDomains != [ baoCfg.ui.domain ]);
|
||||
|
||||
# The hive leaf, `hive-tls-resign` and the hive identity it needs exist only
|
||||
# where a hive runs. A gateway host without one serves the swarm-services
|
||||
# leaf in their place (../hive-gateway/default.nix).
|
||||
runsHive = hyperhiveCfg.deploy.hive-controller.enable;
|
||||
|
||||
# The gateway's own leaf is only issued when the gateway actually serves a
|
||||
# self-signed cert: the gateway must run here and be in self-signed mode.
|
||||
|
|
@ -458,7 +466,7 @@ in
|
|||
# propagation failure means the leaf rotates on disk while nginx keeps
|
||||
# serving the old copy until it expires, with this unit reporting
|
||||
# success the whole time.
|
||||
systemd.services.hive-tls-resign = {
|
||||
systemd.services.hive-tls-resign = lib.mkIf runsHive {
|
||||
description = "Issue or renew the gateway TLS leaf from the secret store's PKI";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
# The store's container and its granting unit where they run here;
|
||||
|
|
@ -941,7 +949,7 @@ in
|
|||
|
||||
# Daily, for the reason `swarm-services-cert-renew` below is: the leaf
|
||||
# needs the store, which can be sealed or unreachable.
|
||||
systemd.timers.hive-tls-resign = {
|
||||
systemd.timers.hive-tls-resign = lib.mkIf runsHive {
|
||||
description = "Daily renewal check for the gateway TLS leaf";
|
||||
wantedBy = [ "timers.target" ];
|
||||
timerConfig = {
|
||||
|
|
|
|||
Loading…
Reference in a new issue