Files
nomad/client/widmgr
James Rasell 26c3f19129 identity: Base server objects and mild rework of identity implementation to support node identities. (#26052)
When Nomad generates an identity for a node, the root key used to
sign the JWT will be stored as a field on the node object and
written to state. To provide fast lookup of nodes by their
signing key, the node table schema has been modified to include
the keyID as an index.

In order to ensure a root key is not deleted while identities are
still actively signed by it, the Nomad state has an in-use check.
This check has been extended to cover node identities.

Nomad node identities will have an expiration. The expiration will
be defined by a TTL configured within the node pool specification
as a time duration. When not supplied by the operator, a default
value of 24hr is applied.

On cluster upgrades, a Nomad server will restore from snapshot
and/or replay logs. The FSM has therefore been modified to ensure
restored node pool objects include the default value. The builtin
"all" and "default" pools have also been updated to include this
default value.

Nomad node identities will be a new identity concept in Nomad and
will exist alongside workload identities. This change introduces a
new envelope identity claim which contains generic public claims
as well as either a node or workload identity claims. This allows
us to use a single encryption and decryption path, no matter what
the underlying identity. Where possible node and workload
identities will use common functions for identity claim
generation.

The new node identity has the following claims:

* "nomad_node_id" - the node ID which is typically generated on
  the first boot of the Nomad client as a UUID within the
  "ensureNodeID" function.

* "nomad_node_pool" - the node pool is a client configuration
  parameter which provides logical grouping of Nomad clients.

* "nomad_node_class" - the node class is a client configuration
  parameter which provides scheduling constraints for Nomad clients.

* "nomad_node_datacenter" - the node datacenter is a client
  configuration parameter which provides scheduling constraints
  for Nomad clients and a logical grouping method.
2025-06-18 07:43:27 +01:00
..