Nomad Hashicorp的基本网络任务



我开始用nomad做一些测试,我可以使用一些帮助,了解将网络添加到组任务的最简单方法。基本上我的问题是:

在任务之间添加内部网络最简单的方法是什么?和同一组中的任务不应该有默认的访问权限吗?或者是我做错了什么?

我有这样的配置:

job "job" {
datacenters = [ "dc1" ]
type = "service"
group "group" {
count = 1
task "db" {
kill_timeout = "120s"
driver = "docker"
config {
image = "dbimage"
port_map {
db = 3306
}
}
env {
MYSQL_DATABASE = "db"
MYSQL_ROOT_PASSWORD = "pass"
}

service {
name = "db"
port = "db"
}
resources {
memory = 256
network {
mode = "host"
port "db" {}
}
}
}
task "app1" {
driver = "docker"
kill_timeout = "120s"
config {
image = "app1"
port_map {
app1 = 5000
}
}
service {
name = "app1"
port = "app1"
}
resources {
memory = 128
network {
mode = "host"
port "app1" {}
}
}
}
task "app2" {
driver = "docker"
kill_timeout = "120s"
config {
image = "app2:image"
port_map {
app2 = 4000
}
}
env {
.....
}
service {
name = "app2"
port = "app2"
}
resources {
memory = 256
network {
mode = "host"
port "app2" {}
}
}
}
}
}

我希望我的app1和app2可以在内部相互交谈,也可以与数据库交谈。我读过传递到每个容器的游牧地址变量,我试图连接,但连接被拒绝了。实现这种行为的唯一方法是连接吗?或者还有更简单的方法?感谢您的帮助:(

您可以使用NOMAD_ADDR_task_port变量连接到作业组中的另一个任务。

例如,在app1apps2任务中使用$NOMAD_ADDR_db_db环境变量来获取db的ip:port对。

有关更多信息,请查看https://www.nomadproject.io/docs/runtime/environment

最新更新