Skip to content

Conversation

@aimeeu
Copy link
Contributor

@aimeeu aimeeu commented Nov 24, 2025

Description

Enhance the client node intro and identity release note with content from Benjamin Lykins' blog. This builds on the previous PR that added the bit about not replacing mTLS.

Links

Jira: CE-1084 CE-1088

Contributor checklists

Review urgency:

  • ASAP: Bug fixes, broken content, imminent releases
  • 3 days: Small changes, easy reviews
  • 1 week: Default expectation
  • Best effort: No urgency

Pull request:

  • Verify that the PR is set to merge into the correct base branch
  • Verify that all status checks passed
  • Verify that the preview environment deployed successfully
  • Add additional reviewers if they are not part of assigned groups

Content:

  • I added redirects for any moved or removed pages
  • I followed the Education style guide
  • I looked at the local or Vercel build to make sure the content rendered correctly

Reviewer checklist

  • This PR is set to merge into the correct base branch.
  • The content does not contain technical inaccuracies.
  • The content follows the Education content and style guides.
  • I have verified and tested changes to instructions for end users.

@aimeeu aimeeu requested review from a team as code owners November 24, 2025 22:21
@aimeeu aimeeu added the Nomad label Nov 24, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Nov 24, 2025

Vercel Previews Deployed

Name Status Preview Updated (UTC)
Dev Portal ✅ Ready (Inspect) Visit Preview Tue Nov 25 19:58:52 UTC 2025
Unified Docs API ✅ Ready (Inspect) Visit Preview Tue Nov 25 19:52:02 UTC 2025

@github-actions
Copy link
Contributor

github-actions bot commented Nov 24, 2025

Broken Link Checker

No broken links found! 🎉

Copy link
Contributor

@boruszak boruszak left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I left suggestions and my reasoning. Otherwise LGTM!

[JSON Web Token (JWT)][] that has been signed by the leader's keyring and is
generated as part of the node's registration and heartbeat process.

The node identity feature is like multi-factor authentication for your Nomad
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want to call out that this is node introduction rather than identity? I see two different features and node identity does not act like MFA, it's node introduction that does.

If we wanted to expand the context, mTLS guards at the region level and stops misconfigured clients joining the wrong region or agents running in the wrong mode.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jrasell I created a new section in the connect nodes into a cluster page. "Use client node introduction tokens" based 100% on Benjamin Lynkins blog but cut down to bare bones. Anthony is planning a longer tutorial on how to use client introduction.

aimeeu and others added 2 commits November 25, 2025 11:18
Co-authored-by: Jeff Boruszak <104028618+boruszak@users.noreply.github.com>
@aimeeu aimeeu changed the title Nomad Docs: Enhance client intro release note Nomad Docs: Enhance client intro release note & add usage guide Nov 25, 2025
Copy link
Contributor

@boruszak boruszak left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See my comments about the overall workflow. I started just leaving suggestions, but after reading through the steps several times I'm not quite able to parse what is actually happening and why the ACL token is required.


Follow these steps to use client node introduction tokens:

1. [Create an ACL policy in which the node has write permissions](#create-an-acl-policy).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. [Create an ACL policy in which the node has write permissions](#create-an-acl-policy).
1. [Create an ACL policy for a node with write permissions](#create-an-acl-policy).

Simplifying this

}
```

1. Create the policy.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. Create the policy.
1. Add the policy to the Nomad cluster.

To avoid repetition with the step before this one and clarify what is happening.


### Create an ACL role

This example creates an ACL role called `client-introduction`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This example creates an ACL role called `client-introduction`.
Create an ACL role, and attach the policy you created to the role.
This example creates an ACL role with the name `client-introduction` that uses the policy `client-introduction`.
  1. Instructions to begin the section, then the example.
  2. Trying to point out both CLI flags because the example uses the same name but that isn't a requirement.

-policy="client-introduction"
```

Output is similar to the this:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Output is similar to the this:
The output describes the ACL role, including its attached policies and the Raft index at its creation.

[`-client-intro-token` parameter](/nomad/commands/agent#client-intro-token) of
the `nomad agent` command. Alternately, you may place the `intro_token.jwt` file
in the client's state directory, which is by default [the
`<data_dir>/client_state_dir>`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing and/or extra bracket?

You may optionally specify node names, node pools, and TTLs when you generate
client introduction tokens.

Follow these steps to use client node introduction tokens:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Follow these steps to use client node introduction tokens:
The workflow for client introduction tokens uses two tokens: an _ACL token_ and a _client introduction token_. The ACL token allows the node to create a client introduction token, which you apply to the Nomad client when you start it.

I'm trying to summarize the overall workflow, but finding it a bit convoluted.


```shell-session
Accessor ID = 8c22a7c0-44f5-044d-ef84-bfa06118faf4
Secret ID = d99d678d-426c-330e-74f3-de53a868e2f9
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Highlighting the value of the client-intro-token-1 ACL token, which all instructions up to this point have led to creating.

```shell-session
curl \
--request POST \
--header "X-Nomad-Token: d99d678d-426c-330e-74f3-de53a868e2f9" \
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here's the client-intro-token-1 ACL token value. So now I have a few questions.

  1. Should the CLI instructions have included a step to use the ACL token as well?
  2. Are you supposed to create a separate ACL token for each node, and that's why it's token-1?
  3. Or should you be creating a separate intro token for each client, using the one shared ACL token?

But now I'm confused about the workflow. You create an ACL token so that a client node has permission to contact a server and change policies (which covers creating client introduction tokens). Then the node uses the client introduction token it creates to join the cluster it already has a valid ACL token from? Why the dedicated client token, then, when there's already an ACL token being used?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants