我如何拒绝用户从 nomad ui 中清除作业的能力?

问题描述 投票:0回答:1

我已经设置了游牧集群,我的 20 人团队使用相同的 UI 来检查生产作业的状态。有人可以从我们的 UI 中删除关键作业,但我们无法控制它。

我们如何拒绝用户从 Nomad UI 中清除作业的能力?

我已经签出:https://developer.hashicorp.com/nomad/docs/other-specations/acl-policy

我尝试过一些像这样的政策,但没有奏效:

namespace "*" {
  policy = "write"
  capabilities = [
    "list-jobs",
    "parse-job",
    "read-job",
    "submit-job",
    "dispatch-job",
    "read-logs",
    "read-fs",
    "alloc-exec",
    "alloc-lifecycle",
    "csi-write-volume",
    "csi-mount-volume",
    "list-scaling-policies",
    "read-scaling-policy",
    "read-job-scaling",
    "scale-job"
  ]
}

host_volume "*" {
  policy = "write"
}

agent {
  policy = "write"
}

node {
  policy = "write"
}

quota {
  policy = "write"
}

operator {
  policy = "write"
}

我找不到任何可以否认的相关能力,以防止我们的游牧工作被清除。

对于我们的用例,我们的用户应该能够从我们的 UI 执行所有任务,除了在停止作业后从 UI 中清除作业的能力。我怎样才能实现这个目标?

hashicorp nomad
1个回答
0
投票

没有这样的选项。停止作业时可以选择清除。如果用户可以停止,它就可以清除。用户可以停止作业,只要他可以

submit-job

Nomad 不保留工作历史记录。它被垃圾收集。取决于未清除的已停止作业,很容易出错 - 该作业随时可能消失。

我怎样才能实现这个目标?

我不是 100% 确定可以通过哨兵策略来完成https://developer.hashicorp.com/nomad/docs/enterprise/sentinel。您必须联系 Nomad 并询问他们。您可以在 github 上的 Nomad 上提出功能请求。

最简单的方法是运行您自己的 HTTP 代理服务器,并检查对 Nomad 的请求是否具有

stop?purge=true
url,并在出现此类情况时拒绝。不久前,我开始使用 nginx lua 插件进行实验 https://gitlab.com/Kamcuk/nomad-proxy/-/blob/master/lua/access.lua?ref_type=heads 。这是一个实验。

如果您想要作业的历史记录,那么

nomad operator /v1/event/stream > logfile.txt
然后用您最喜欢的语言(如Python)解析logfile.txt。

© www.soinside.com 2019 - 2024. All rights reserved.