diff --git a/.changelog/14864.txt b/.changelog/14864.txt new file mode 100644 index 000000000000..fc805d70f9c3 --- /dev/null +++ b/.changelog/14864.txt @@ -0,0 +1,3 @@ +```release-note:bug +services: Fixed a regression where check task validation stopped allowing some configurations +``` diff --git a/nomad/structs/structs.go b/nomad/structs/structs.go index 24fd8d103b8b..db2cdf2f9620 100644 --- a/nomad/structs/structs.go +++ b/nomad/structs/structs.go @@ -6681,10 +6681,6 @@ func (tg *TaskGroup) validateServices() error { for _, check := range service.Checks { if check.TaskName != "" { - if check.Type != ServiceCheckScript && check.Type != ServiceCheckGRPC { - mErr.Errors = append(mErr.Errors, - fmt.Errorf("Check %s invalid: only script and gRPC checks should have tasks", check.Name)) - } if check.AddressMode == AddressModeDriver { mErr.Errors = append(mErr.Errors, fmt.Errorf("Check %q invalid: cannot use address_mode=\"driver\", only checks defined in a \"task\" service block can use this mode", service.Name)) } diff --git a/nomad/structs/structs_test.go b/nomad/structs/structs_test.go index eeabbc04b1f9..fdc174aa9652 100644 --- a/nomad/structs/structs_test.go +++ b/nomad/structs/structs_test.go @@ -1278,9 +1278,6 @@ func TestTaskGroup_Validate(t *testing.T) { expected = `Check check-a invalid: refers to non-existent task task-b` require.Contains(t, err.Error(), expected) - expected = `Check check-a invalid: only script and gRPC checks should have tasks` - require.Contains(t, err.Error(), expected) - tg = &TaskGroup{ Name: "group-a", Services: []*Service{ diff --git a/website/content/docs/job-specification/check.mdx b/website/content/docs/job-specification/check.mdx index 62a32764a7be..70f8bf04ee73 100644 --- a/website/content/docs/job-specification/check.mdx +++ b/website/content/docs/job-specification/check.mdx @@ -134,11 +134,11 @@ job "example" { - `protocol` `(string: "http")` - Specifies the protocol for the http-based health checks. Valid options are `http` and `https`. -- `task` `(string: )` - Specifies the task associated with this +- `task` `(string: "")` - Specifies the task associated with this check. Scripts are executed within the task's environment, and - `check_restart` stanzas will apply to the specified task. For `checks` on group - level `services` only. Inherits the [`service.task`][service_task] value if not - set. May only be set for script or gRPC checks. + `check_restart` stanzas will apply to the specified task. Inherits + the [`service.task`][service_task] value if not set. Must be unset + or equivelent to `service.task` in task-level services. - `timeout` `(string: )` - Specifies how long to wait for a health check query to succeed. This is specified using a label suffix like "30s" or "1h". This