run swarm-attic in its own network namespace
the gateway reaches atticd over a unix socket a relay in the container forwards, and the host unit that creates the cache dials its public name.
This commit is contained in:
parent
4440d8fb29
commit
1d3ab2fae5
2 changed files with 198 additions and 41 deletions
|
|
@ -394,9 +394,16 @@ path nobody added or fetched for 14 days goes at the next garbage collection,
|
|||
which runs every 12 hours (`deploy.attic.retentionPeriod`). The controller
|
||||
[rebuilds a closure the cache lost](#rebuild-on-a-cache-miss).
|
||||
|
||||
The gateway terminates TLS with a swarm services certificate and forwards to
|
||||
`127.0.0.1:8910` (`deploy.attic.port`) with no login in front: attic checks its
|
||||
own tokens, and a nix client can't follow a login redirect. The container logs
|
||||
The container sits on the hive bridge in a network namespace of its own. atticd
|
||||
listens on that namespace's loopback (`deploy.attic.port`), and a socket-activated
|
||||
relay forwards `/run/swarm-attic/atticd.sock` to it, a directory only the
|
||||
gateway's nginx and the container can open. The gateway terminates TLS with a
|
||||
swarm services certificate and forwards to that socket with no login in front:
|
||||
attic checks its own tokens, and a nix client can't follow a login redirect.
|
||||
The two host units reach the cache through the gateway, at
|
||||
`https://<swarm.attic.domain>`, like every other client; the host resolves the
|
||||
name through the hive resolver, and where the gateway serves a self-signed
|
||||
certificate `swarm-bao-attic-tokens` trusts the swarm's CA. The container logs
|
||||
to its journal only; its journal doesn't reach the swarm log store.
|
||||
|
||||
### External cache
|
||||
|
|
|
|||
|
|
@ -459,8 +459,9 @@ it. For an external cache, override `swarm.attic.{domain,cache}` and don't set
|
|||
`deploy.attic.enable` anywhere, or set it to `lib.mkForce false` under
|
||||
`allSwarmServices`.
|
||||
|
||||
The container shares the host's network namespace and atticd listens on loopback
|
||||
only. The gateway serves it at `swarm.attic.domain` (default
|
||||
The container sits on the hive bridge in a network namespace of its own, and atticd
|
||||
listens on that namespace's loopback only; the gateway reaches it over a unix socket.
|
||||
The gateway serves it at `swarm.attic.domain` (default
|
||||
`attic.<swarm domain>`, on every host) over TLS, with no login in front, because attic checks
|
||||
its own tokens. Storage is local disk in the container's state.
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue