NOMAD_SECRETS_DIR
我遇到了 Nomad 的Docker 容器文件夹分配问题。
template
我的职位描述中有以下一段:
template {
destination = "/local/pki/certs/my_certificate.crt"
perms = "440"
data = <<EOF
[ CERTIFICATE CONTENT ]
EOF
}
template {
destination = "/secrets/pki/private/my_key.key"
perms = "400"
data = <<EOF
[ KEY CONTENT ]
EOF
}
这样,从 UI 中,当我查看分配给任务的文件时,我可以看到密钥文件已创建。
然而,secrets
在正在运行的Docker容器中该文件夹完全是空的:
# nomad alloc exec -i -t -task lb0 52a13d48 /bin/sh
/ # ls -al /secrets
total 0
drwxr-xr-x. 2 root root 6 Feb 11 11:31 .
drwxr-xr-x. 1 root root 70 Feb 11 11:31 ..
如果我查看系统本身的分配文件夹,该文件夹也是空的:
# ls -al /srv/nomad/alloc/52a13d48-b073-39b4-4b79-10225aece50e/lb0/secrets/
total 0
drwxr-xr-x. 2 root root 6 Feb 11 12:31 .
drwxrwxrwx. 5 nobody nobody 45 Feb 11 12:31 ..
Nomad 在哪里找到文件夹中的文件secrets
?为什么容器中是空的?
答案1
奇怪的是,当我以只读方式挂载文件系统时,Nomad 并不喜欢。
我已将以下内容放入 systemd 单元文件中:
ProtectSystem=full
ProtectHome=read-only
在启动进程之前,会将一些系统文件夹重新挂载为只读。这在某种程度上干扰了 Nomad。