当前位置:网站首页>Hashicopy之nomad应用编排方案06(配置task)

Hashicopy之nomad应用编排方案06(配置task)

2022-06-11 13:12:00 华为云

一 背景

大多数应用程序需要某种本地配置。虽然命令行参数是最简单的方法,但许多应用程序需要通过环境变量或配置文件提供更复杂的配置。本节探讨如何配置Nomad作业以支持许多常见的配置用例。

二 定义应用参数

许多任务通过命令行参数接受配置。例如,考虑http-echo服务器,它是一个小型go二进制文件,将提供的文本呈现为网页。二进制文件接受两个参数:

  • listen标志包含要侦听的地址:端口
  • -text-呈现为HTML页面的文本

在Nomad之外,服务器是这样启动的:

http-echo -listen=":5678" -text="hello world"

Nomad等效的作业文件可能如下所示:

job "docs" {  datacenters = ["dc1"]  group "example" {    network {      port "http" {        static = "5678"      }    }    task "server" {      driver = "exec"      config {        command = "/bin/http-echo"        args = [          "-listen",          ":5678",          "-text",          "hello world",        ]      }    }  }}

注意:对于此作业规范,您必须在每个客户端的/bin文件夹中安装http-echo。Nomad还可以选择使用工件资源获取二进制文件。

Nomad有许多驱动程序,大多数都支持通过args参数将参数传递给它们的任务。此参数还支持Nomad变量插值。例如,如果您希望Nomad动态地分配一个高端口来绑定服务,而不是依赖一个静态端口来执行前面的作业:

job "docs" {  datacenters = ["dc1"]  group "example" {    network {      port "http" {        static = "5678"      }    }    task "server" {      driver = "exec"      config {        command = "/bin/http-echo"        args = [          "-listen",          ":${NOMAD_PORT_http}",          "-text",          "hello world",        ]      }    }  }}

三 设置环境变量

某些应用程序可以通过环境变量进行配置。十二要素应用程序文档建议通过环境变量配置应用程序。Nomad通过两种方式支持自定义环境变量:

  • 环境节中的插值
  • 在模板节中模板化

3.1 env stanza

每个任务可能有一个指定环境变量的env节:

task "server" {  env {    my_key = "my-value"  }}

env节还支持插值:

task "server" {  env {    LISTEN_PORT = "${NOMAD_PORT_http}"  }}

有关详细信息,请参阅env节文档。

四 加载外部配置文件

许多应用程序使用文件进行配置。Nomad支持使用工件节下载文件,并在启动任务之前对它们进行模板化。这允许传送任务正常运行所需的配置文件和其他资产。
下面是一个示例作业,它将配置文件作为工件下拉并对其进行模板:

job "docs" {  datacenters = ["dc1"]  group "example" {    task "server" {      driver = "exec"      artifact {        source      = "http://example.com/config.hcl.tmpl"        destination = "local/config.hcl.tmpl"      }      template {        source      = "local/config.hcl.tmpl"        destination = "local/config.hcl"      }      config {        command = "my-app"        args = [          "-config", "local/config.hcl",        ]      }    }  }}

有关工件资源的更多信息,请参阅工件节文档。

参考链接

原网站

版权声明
本文为[华为云]所创,转载请带上原文链接,感谢
https://bbs.huaweicloud.com/blogs/358901

随机推荐