feat(#1930): forward otel headers credential into agent containers via nspawn --load-credential
This commit is contained in:
parent
838cc9af9a
commit
21ec7dc23d
6 changed files with 140 additions and 20 deletions
|
|
@ -177,6 +177,23 @@ pub struct BindMount {
|
|||
pub read_only: bool,
|
||||
}
|
||||
|
||||
/// One credential-forwarding entry for `WriteNspawnFlags`. hive-priv
|
||||
/// constructs `--load-credential=<name>:<host_path>` so systemd-nspawn
|
||||
/// loads the host secret file into the container's credential store; an
|
||||
/// inner unit then reads it via `LoadCredential=<name>` (inherit form).
|
||||
/// The secret never lands in a bind mount, the nix store, or the
|
||||
/// generated config — only its host path (validated like a bind path)
|
||||
/// crosses the wire. Used for the hive-wide OTEL auth-header credential.
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct CredentialMount {
|
||||
/// systemd credential id (e.g. `otel-headers`); inner units inherit
|
||||
/// it by this name. Restricted to `[A-Za-z0-9_.-]` by hive-priv.
|
||||
pub name: String,
|
||||
/// Host path to the secret file, forwarded via nspawn
|
||||
/// `--load-credential=<name>:<host_path>`.
|
||||
pub host_path: String,
|
||||
}
|
||||
|
||||
/// Network isolation parameters for `WriteNspawnFlags`. When `Some`,
|
||||
/// hive-priv writes `PRIVATE_NETWORK=1` + veth bridge wiring instead
|
||||
/// of the default `PRIVATE_NETWORK=0`.
|
||||
|
|
@ -273,6 +290,12 @@ pub enum PrivRequest {
|
|||
/// veth on the specified bridge (`PRIVATE_NETWORK=1`).
|
||||
#[serde(default)]
|
||||
isolation: Option<NetworkIsolation>,
|
||||
/// Host secrets forwarded into the container's credential store via
|
||||
/// nspawn `--load-credential=<name>:<host_path>`. Empty for agents
|
||||
/// with no credentials configured (the common case). `#[serde(default)]`
|
||||
/// so a hive-priv built before this field deserialises new requests.
|
||||
#[serde(default)]
|
||||
load_credentials: Vec<CredentialMount>,
|
||||
},
|
||||
|
||||
/// Write `/run/systemd/system/container@<container>.service.d/hyperhive-limits.conf`
|
||||
|
|
|
|||
Loading…
Reference in a new issue