glue: nats firewall on the wireguard interface moves out of the nats module
The wg-hive allowedTCPPorts rule gated on deploy.wireguard.enable was a cross-service toggle read in swarm-nats.nix; it now lives in glue-nats-wireguard.nix under the same condition and value.
This commit is contained in:
parent
7d95973d83
commit
4a36e53982
3 changed files with 22 additions and 8 deletions
|
|
@ -42,6 +42,7 @@
|
||||||
./glue-nats-auth-bao-identity.nix
|
./glue-nats-auth-bao-identity.nix
|
||||||
./glue-nats-bao-identity.nix
|
./glue-nats-bao-identity.nix
|
||||||
./glue-nats-oidc-client.nix
|
./glue-nats-oidc-client.nix
|
||||||
|
./glue-nats-wireguard.nix
|
||||||
./glue-otel-scrape-targets.nix
|
./glue-otel-scrape-targets.nix
|
||||||
./glue-queue-agent-credential.nix
|
./glue-queue-agent-credential.nix
|
||||||
./glue-builder-oidc-client.nix
|
./glue-builder-oidc-client.nix
|
||||||
|
|
|
||||||
21
nix/host-modules/glue-nats-wireguard.nix
Normal file
21
nix/host-modules/glue-nats-wireguard.nix
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
# Glue: where the queue and the wireguard mesh share a host, the queue's port
|
||||||
|
# is open on the mesh interface.
|
||||||
|
#
|
||||||
|
# Interface-scoped, never host-wide: the firewall is default-deny before a
|
||||||
|
# packet reaches the listener, so without this no other hive can reach the
|
||||||
|
# queue. Gated on BOTH being here — the queue's own module gate
|
||||||
|
# (`deploy.nats.enable`) is restated below; a change there must change here.
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
hyperhiveCfg = config.services.hyperhive;
|
||||||
|
deployCfg = hyperhiveCfg.deploy;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = lib.mkIf (deployCfg.nats.enable && deployCfg.wireguard.enable) {
|
||||||
|
networking.firewall.interfaces.wg-hive.allowedTCPPorts = [ hyperhiveCfg.swarm.nats.port ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -475,14 +475,6 @@ in
|
||||||
# An agent reaches it by name, which dnsmasq answers with the bridge IP.
|
# An agent reaches it by name, which dnsmasq answers with the bridge IP.
|
||||||
services.hyperhive.network.exposeHostPorts = [ cfg.port ];
|
services.hyperhive.network.exposeHostPorts = [ cfg.port ];
|
||||||
|
|
||||||
# The other hives' way in, interface-scoped like
|
|
||||||
# ./swarm-snapshot-store.nix's receiver. The firewall is default-deny
|
|
||||||
# before a packet reaches the listener, so without this nothing in-tree
|
|
||||||
# lets another hive reach the queue at all.
|
|
||||||
networking.firewall.interfaces.wg-hive.allowedTCPPorts = lib.mkIf deployCfg.wireguard.enable [
|
|
||||||
cfg.port
|
|
||||||
];
|
|
||||||
|
|
||||||
# The bind source has to exist before the container starts, leaf or not:
|
# The bind source has to exist before the container starts, leaf or not:
|
||||||
# nixos-container refuses to start over a missing one, which would take
|
# nixos-container refuses to start over a missing one, which would take
|
||||||
# the whole queue down rather than only its TLS.
|
# the whole queue down rather than only its TLS.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue