Commit Graph

25755 Commits

Author SHA1 Message Date
Seth Hoenig
5f64e42d73 client: fixup how alloc mounts directory are setup (#20463) 2024-04-26 07:29:52 -05:00
Seth Hoenig
7874d21881 docs: add exec2 task driver page (#20480) 2024-04-24 07:26:54 -05:00
Seth Hoenig
8ae1a0e356 docs: add docs around dynamic workload users (#20477) 2024-04-23 07:57:40 -05:00
Seth Hoenig
1dfc715721 docs: add docs for fsisolation.Unveil fs isolation mode (#20475) 2024-04-23 07:55:54 -05:00
Daniel Bennett
3ac3bc1cfe acl: token global mode can not be changed (#20464)
true up CLI and docs with API reality
2024-04-22 11:58:47 -05:00
Tim Gross
ea5f2f6748 acl: remove remaining unused nil ACL object handling (#20456)
As of #18754 which shipped in Nomad 1.7, we no longer need to nil-check the
object returned by ResolveACL if there's no error return, because in the case
where ACLs are disabled we return a special "ACLs disabled" ACL object. Checking
nil is not a bug but should be discouraged because it opens us up to future bugs
that would bypass ACLs.

We fixed a bunch of these cases in https://github.com/hashicorp/nomad/pull/20150
but I didn't update the semgrep rule, which meant we missed a few more. Update
the semgrep rule and fix the remaining cases.
2024-04-18 14:34:17 -04:00
Piotr Kazmierczak
048f4511e2 docs: correct nanoseconds to milliseconds for MeasureSince metrics (#20446) 2024-04-18 18:16:58 +02:00
dependabot[bot]
b25de662a1 chore(deps): bump github.com/docker/docker from 25.0.2+incompatible to 26.0.1+incompatible (#20389)
* chore(deps): bump github.com/docker/docker

Bumps [github.com/docker/docker](https://github.com/docker/docker) from 25.0.2+incompatible to 26.0.1+incompatible.
- [Release notes](https://github.com/docker/docker/releases)
- [Commits](https://github.com/docker/docker/compare/v25.0.2...v26.0.1)

---
updated-dependencies:
- dependency-name: github.com/docker/docker
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* include changelog

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tim Gross <tgross@hashicorp.com>
2024-04-18 11:35:09 -04:00
Tim Gross
e4fe564bba deps: update golang.org/x/net (#20434)
Although Nomad does not use HTTP2, vulnerability scans detect our version of
`golang.org/x/net` as having an HPACK DoS vuln (GHSA-4v7x-pqxf-cx7m). Upgrade
the library so as to quiet the alerts.

Fixes: https://github.com/hashicorp/nomad-enterprise/issues/1423
2024-04-18 10:34:35 -04:00
Tim Gross
b662f1e6e5 docs: fix incorrect dispatch payload limit in API docs (#20433)
The dispatch payload limit is limited to 16KiB, not 64KiB. It's correct in the
command docs but incorrect in the API docs.

Ref: https://github.com/hashicorp/nomad/blob/v1.7.7/nomad/job_endpoint.go#L36-L38
Fixes: https://github.com/hashicorp/nomad/issues/20432
2024-04-18 10:20:15 -04:00
Daniel Bennett
363d2370f3 test: change some helpers testing.T to .TB (#20427)
TB interface instead of T struct,
so they can be used in Benchmarks too
2024-04-17 14:03:12 -05:00
Tim Gross
6d58acd897 WI: ensure tasks within same alloc get different Consul tokens (#20411)
The `consul_hook` in the allocrunner gets a separate Consul token for each task,
even if the tasks' identities have the same name, but used the identity name as
the key to the alloc hook resources map. This means the last task in the group
overwrites the Consul tokens of all other tasks.

Fix this by adding the task name to the key in the allocrunner's
`consul_hook`. And update the taskrunner's `consul_hook` to expect the task
name in the key.

Fixes: https://github.com/hashicorp/nomad/issues/20374
Fixes: https://hashicorp.atlassian.net/browse/NOMAD-614
2024-04-17 11:29:58 -04:00
Juana De La Cuesta
64978662b6 Post 1.7.7 release (#20421)
Generate files for 1.7.7 release, prepare for next release and merge release 1.7.7 files
2024-04-17 10:44:32 +02:00
Daniel Bennett
ca1860ae76 state: enable more reverse sorting (#20410)
* mainly jobs endpoint
* update call sites
* add new sort helpers
* put sorting in a separate file
2024-04-16 15:10:11 -05:00
Tu Nguyen
79c07807f4 docs: update docs link in quick start (#20409) 2024-04-16 15:52:35 -04:00
Phil Renaud
5150adffc0 [ui] Fix a bug where promotion would be asked with no new canaries (#20408)
* Fix a UI bug where promotion would be asked with no new canaries

* Because we now make sure of your allocations, our test cases should more accurately reflect a state of a promotable workflow
2024-04-16 15:50:06 -04:00
Tim Gross
22bfcdecf1 docs: add missing copyright headers in Terraform examples (#20412) 2024-04-16 15:21:03 -04:00
Nick Wales
e014e8411c terraform: updates AWS example packer and terraform code (#19512)
The "Provision a Nomad cluster in the cloud" works in AWS with these updates:

- use an available ubuntu version
- uses hashicorp packages where possible
- updates Nvidia installation
- installs CNI plugins
2024-04-16 10:47:31 -04:00
Luiz Aoqui
9d4f7bcb68 mock_driver: fix fingreprint key (#20351)
The `mock_driver` is an internal task driver used mostly for testing and
simulating workloads. During the allocrunner v2 work (#4792) its name
changed from `mock_driver` to just `mock` and then back to
`mock_driver`, but the fingreprint key was kept as `driver.mock`.

This results in tasks configured with `driver = "mock"` to be scheduled
(because Nomad thinks the client has a task driver called `mock`), but
fail to actually run (because the Nomad client can't find a driver
called `mock` in its catalog).

Fingerprinting the right name prevents the job from being scheduled in
the first place.

Also removes mentions of the mock driver from documentation since its an
internal driver and not available in any production release.
2024-04-16 07:16:55 +01:00
Daniel Bennett
ee213c3ddd comment on Job.ModifyIndex vs Job.JobModifyIndex (#20393) 2024-04-15 16:39:16 -05:00
Daniel Bennett
30c0461048 systemd: comment on OOMScoreAdjust in service unit (#20392) 2024-04-15 16:35:41 -05:00
Tim Gross
745d1dbe10 deps: update go-getter (#20391) 2024-04-15 16:59:53 -04:00
Piotr Kazmierczak
0d14dd96ca eval_broker: track enqueue and dequeue times (#20329)
Adds new metrics to the eval broker that track times of evaluations enqueueing
and dequeueing.
2024-04-15 16:16:50 +02:00
Tim Gross
1739f94e84 docs: fix a broken link on the Consul index page (#20387) 2024-04-12 15:31:48 -04:00
Phil Renaud
f9c4d2bdf0 the hasBeenRestarted allocation property checks against its task events, which can sometimes be null (#20383) 2024-04-12 14:49:07 -04:00
Tim Gross
43281f6038 docs: provide guidance on using Consul DNS (#20369)
Add a standalone section to the Consul integration docs showing how to configure
both the Consul agent and the workload to take advantage of Consul DNS. Include
a reference to the new transparent proxy feature as well.

Fixes: https://github.com/hashicorp/nomad/issues/18305
2024-04-12 14:38:04 -04:00
Tim Gross
9cb1ef3e3d CNI: fix bugs in parsing strings to port number integers (#20379)
Ports are a maximum of uint16, but we have a few places in the recent tproxy
code where we were parsing them as 64-bit wide integers and then downcasting
them to `int`, which is technically unsafe and triggers code scanning alerts. In
practice we've validated the range elsewhere and don't build for 32-bit
platforms. This changeset fixes the parsing to make everything a bit more robust
and silence the alert.

Fixes: https://github.com/hashicorp/nomad-enterprise/security/code-scanning/444
2024-04-12 13:31:25 -04:00
Daniel Bennett
bd802e43d0 add LICENSE to release artifacts (#20345)
* add LICENSE(.txt) to zip that goes on releases.hashicorp.com
* add LICENSE(.txt) to linux packages and docker image
* add some more docker labels (including license)
2024-04-12 10:57:15 -05:00
Tim Gross
d40e23f939 E2E: clean up go mod cache after building consul-cni (#20378)
In #20296 we added a Go tool chain to the AMI we use for E2E tests, so that we
can build `consul-cni` for tproxy testing. This is intended to be temporary
until `consul-k8s` 1.4.2 is officially released. But the Go cache from building
`consul-k8s` uses up roughly 1.5GiB of space and the test machines have fairly
small disks. This causes the Nomad clients to aggressively GC client allocations
that stop, which breaks tests that run batch workloads and then read their logs.
2024-04-12 11:52:46 -04:00
Seth Hoenig
ae6c4c8e3f deps: purge use of old x/exp packages (#20373) 2024-04-12 08:29:00 -05:00
Tim Gross
1e50090776 docs: clarify "best effort" for ephemeral disk migration (#20357)
The docs for ephemeral disk migration use the term "best effort" without
outlining the requirements or the cases under which the migration can
fail. Update the docs to make it obvious that ephemeral disk migration is
subject to data loss.

Fixes: https://github.com/hashicorp/nomad/issues/20355
2024-04-11 16:35:22 -04:00
astudentofblake
7b7ed12326 func: Allow custom paths to be added the the getter landlock (#20349)
* func: Allow custom paths to be added the the getter landlock

Fixes: 20315

* fix: slices imports
fix: more meaningful examples
fix: improve documentation
fix: quote error output
2024-04-11 15:17:33 -05:00
dependabot[bot]
5612ab46c3 chore(deps): bump ip from 2.0.0 to 2.0.1 in /ui (#20021)
Bumps [ip](https://github.com/indutny/node-ip) from 2.0.0 to 2.0.1.
- [Commits](https://github.com/indutny/node-ip/compare/v2.0.0...v2.0.1)

---
updated-dependencies:
- dependency-name: ip
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-11 15:53:15 -04:00
dependabot[bot]
229e645681 chore(deps): bump follow-redirects from 1.15.5 to 1.15.6 in /ui (#20145)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.5 to 1.15.6.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.5...v1.15.6)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-11 15:52:32 -04:00
dependabot[bot]
ea6a112f73 build(deps): bump express from 4.18.2 to 4.19.2 in /ui (#20239)
Bumps [express](https://github.com/expressjs/express) from 4.18.2 to 4.19.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.2...4.19.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-11 15:51:13 -04:00
Tim Gross
d56e8ad1aa WI: ensure Consul hook and WID manager interpolate services (#20344)
Services can have some of their string fields interpolated. The new Workload
Identity flow doesn't interpolate the services before requesting signed
identities or using those identities to get Consul tokens.

Add support for interpolation to the WID manager and the Consul tokens hook by
providing both with a taskenv builder. Add an "interpolate workload" field to
the WI handle to allow passing the original workload name to the server so the
server can find the correct service to sign.

This changeset also makes two related test improvements:
* Remove the mock WID manager, which was only used in the Consul hook tests and
  isn't necessary so long as we provide the real WID manager with the mock
  signer and never call `Run` on it. It wasn't feasible to exercise the correct
  behavior without this refactor, as the mocks were bypassing the new code.
* Fixed swapped expect-vs-actual assertions on the `consul_hook` tests.

Fixes: https://github.com/hashicorp/nomad/issues/20025
2024-04-11 15:40:28 -04:00
dependabot[bot]
6c419a37ee build(deps): bump tar from 6.2.0 to 6.2.1 in /ui (#20353)
Bumps [tar](https://github.com/isaacs/node-tar) from 6.2.0 to 6.2.1.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v6.2.0...v6.2.1)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-11 15:22:09 -04:00
Tim Gross
a13e455c51 deployment watcher: fix goroutine leak when job is purged (#20348)
The deployment watcher on the leader makes blocking queries to detect when the
set of active deployments changes. It takes the resulting list of deployments
and adds or removes watchers based on whether the deployment is active. But when
a job is purged, the deployment will be deleted. This unblocks the query but
the query result only shows the remaining deployments.

When the query unblocks, ensure that all active watchers have a corresponding
deployment in state. If not, remove the watcher so that the goroutine stops.

Fixes: https://github.com/hashicorp/nomad/issues/19988
2024-04-11 14:51:05 -04:00
Gabi
ca22f34373 fix exhausted node metrics reporting in preemption (#20346) 2024-04-11 14:49:56 -04:00
Tim Gross
8298d39e78 Connect transparent proxy support
Add support for Consul Connect transparent proxies

Fixes: https://github.com/hashicorp/nomad/issues/10628
2024-04-10 11:00:18 -04:00
Tim Gross
9340c77b12 docs: remove extra indents in tproxy HCL examples 2024-04-10 10:21:32 -04:00
Tim Gross
4fef82e8e2 tproxy: refactor getPortMapping
The `getPortMapping` method forces callers to handle two different data
structures, but only one caller cares about it. We don't want to return a single
map or slice because the `cni.PortMapping` object doesn't include a label field
that we need for tproxy. Return a new datastructure that closes over both a
slice of `cni.PortMapping` and a map of label to index in that slice.
2024-04-10 10:16:13 -04:00
Tim Gross
e2e561da88 tproxy: documentation improvements 2024-04-10 08:55:50 -04:00
James Rasell
a7c56a6563 docs: fix incorrect formatting within ACL policy spec. (#20339) 2024-04-09 14:46:06 +01:00
Tim Gross
2cf341b761 drain: use authenticated ID as source of drained-by metadata (#20317)
When a node is set to drain, the state store reads the auth token off the
request to record `LastDrain` metadata about the token used to drain the
node. This code path in the state store can't correctly handle signed Workload
Identity tokens or bearer tokens that may have expired (for example, while
restarting a server and applying uncompacted Raft logs).

Rather than re-authenticating the request at the time of FSM apply, record the
string derived from the authenticated identity as part of the Raft log
entry.

Fixes: https://github.com/hashicorp/nomad/issues/17471
2024-04-09 09:28:24 -04:00
James Rasell
200b7134f0 docs: ensure namespace ACL policy capabilities are all listed. (#20306) 2024-04-09 13:57:10 +01:00
Tim Gross
8eaf176868 client: fix IPv6 parsing for client.servers block (#20324)
When the `client.servers` block is parsed, we split the port from the
address. This does not correctly handle IPv6 addresses when they are in URL
format (wrapped in brackets), which we require to disambiguate the port and
address.

Fix the parser to correctly split out the port and handle a missing port value
for IPv6. Update the documentation to make the URL format requirement clear.

Fixes: https://github.com/hashicorp/nomad/issues/20310
2024-04-08 15:06:27 -04:00
Tim Gross
a0cbc1a26a cli: remove extraneous trailing newline from nomad fmt (#20318)
When `nomad fmt` writes to stdout instead of overwriting a file, the command was
using the `UI` output, which appends an extra newline. This results in extra
trailing newlines when using `nomad fmt` as part of a pipeline or editor plugin.

Update the command to write directly to stdout when in the stdout mode.

Fixes: https://github.com/hashicorp/nomad/issues/20307
2024-04-08 13:29:22 -04:00
Phil Renaud
9a20e98d27 [ui] Show re-bound keyboard nav hints instead of their default values (#20235)
* Rebinds show up as soon as you start rebinding

* Hint bind and rebind tests

* Orphaned getCommandByPattern method removed
2024-04-08 10:11:23 -04:00
James Rasell
0cbd08ebf2 docs: add Digital Ocean Spaces artifact jobspec example. (#20304) 2024-04-08 08:15:07 +01:00