Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
docs: explain how to use dots in docker labels (#24074)
Nomad v1.9.0 (finally!) removes support for HCL1 and the `-hcl1` flag. See #23912 for details. One of the uses of HCL1 over HCL2 was that HCL1 allowed quoted keys in blocks such as env, meta, and Docker's labels: ```hcl some_block { "foo.bar" = "baz" } ``` This works in HCL1 but is invalid HCL2. In HCL2 you must use a map instead of a block: ```hcl some_map = { "eggs.spam" = "works!" } ``` This was such a hassle for users we special cased the `env` and `meta` blocks to be accepted as blocks or maps in #9936. However Docker `labels`, being a task config option, is much harder to special case and commonly needs dots-in-keys for things like DataDog autodiscovery via Docker container labels: https://docs.datadoghq.com/containers/docker/integrations/?tab=labels Luckily `labels` can be specified as a list-of-maps instead: ```hcl labels = [ { "com.datadoghq.ad.check_names" = "[\"openmetrics\"]" "com.datadoghq.ad.init_configs" = "[{}]" } ] ``` So instead of adding more awkward hcl1/2 backward compat code to Nomad, I just updated the docs to hopefully help people hit by this. The only other known workaround is dropping HCL in favor of JSON jobspecs altogether, but that forces a huge migration and maintenance burden on users: https://discuss.hashicorp.com/t/docker-based-autodiscovery-with-datadog-how-can-we-make-it-work/18870
- Loading branch information