如果凭证助手到位,Nomad 无法拉取其他图像

Nomad cannot pull other images if credential helper is in place

我正在尝试使用 Nomad 从我的 ecr 存储库以及 dockerhub 中提取图像。问题是,如果我不自己拉取这些图像,Nomad 将不会拉取它们并会报错:

Failed to find docker auth for repo "envoyproxy/envoy": docker-credential-ecr-login with input "envoyproxy/envoy" failed with stderr: exit status 1

它会很容易地拉取ECR镜像,但是我部署的sidecars或非ecr镜像所需的那些镜像,例如postgres,不会被拉取并出现同样的错误。有没有其他人遇到同样的问题?

我遇到了同样的问题,我不确定如果你只是使用这个节是否有解决办法:

plugin "docker" {
  config {
    auth {
      helper = "ecr-login"
    }
  }
}

或者,我这样设置:

plugin "docker" {
  config {
    auth {
      config = "/opt/docker.json"
    }
  }
}

然后在 /opt/docker.json 的文件中填充以下值:

{
  "credHelpers": {
    "000000000000.dkr.ecr.us-west-2.amazonaws.com": "ecr-login"
  },
  "auths": {
    "https://index.docker.io/v1/": {}
  }
}

将 000000000000 替换为您的 aws 帐户 ID,将 us-west-2 替换为您所在的地区。

对于最近的游牧版本中混合的 ecr 和非 ecr 工作负载,将 auth 配置指向 docker 配置似乎完全没问题 仅包含 credHelpers 节:

/etc/nomad.d/nomad-docker.hcl

plugin "docker" {
  config {
    auth {
      config = "/root/.docker/config.json"
    }
  }
}

/root/.docker/config.json

{
    "credHelpers": {
        "**********.dkr.ecr.eu-central-1.amazonaws.com": "ecr-login"
    }
}

我找到的解决方法是添加:

"auth_soft_fail": true 

将其添加为配置的一部分。