Hashicopy之nomad应用编排方案06(配置task)
【摘要】 一 背景大多数应用程序需要某种本地配置。虽然命令行参数是最简单的方法,但许多应用程序需要通过环境变量或配置文件提供更复杂的配置。本节探讨如何配置Nomad作业以支持许多常见的配置用例。 二 定义应用参数许多任务通过命令行参数接受配置。例如,考虑http-echo服务器,它是一个小型go二进制文件,将提供的文本呈现为网页。二进制文件接受两个参数:listen标志包含要侦听的地址:端口-tex...
一 背景
大多数应用程序需要某种本地配置。虽然命令行参数是最简单的方法,但许多应用程序需要通过环境变量或配置文件提供更复杂的配置。本节探讨如何配置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",
]
}
}
}
}
有关工件资源的更多信息,请参阅工件节文档。
参考链接
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)