【问题标题】:Use image from private repo in Jupyterhub在 Jupyterhub 中使用来自私人仓库的图像
【发布时间】:2021-02-05 16:12:14
【问题描述】:

我正在尝试将自己的 jupyter 图像插入 jupyterhub。使用 helm,我已将 jupyterhub 设置为使用 minikube 在本地运行,并使用默认图像:

RELEASE=jhub
NAMESPACE=jhub

helm upgrade --cleanup-on-fail \
  --install $RELEASE jupyterhub/jupyterhub \
  --namespace $NAMESPACE \
  --create-namespace \
  --version=0.9.0 \
  --values config.yaml

这行得通。

然后我尝试通过修改config.yaml来改变图像:

singleuser:
    image:
        name: myrepo.azurecr.io/myrepo/myimage
        tag: 1.0
    imagePullSecret:
        enabled: true
        name: mysecret

这应该指出我在我的私人存储库中的图像。 mysecret 是使用 kubectl create secret docker-registry mysecret ... 创建的秘密但是,当在 helm upgrade 命令上方运行时,我收到一个错误,这似乎是由于 jupyterhub helm 图表无法正确处理命名的 imagePullSecret 引起的:

Error: UPGRADE FAILED: failed to create resource: Secret "singleuser-image-credentials" is invalid: data[.dockerconfigjson]: Invalid value: "<secret contents redacted>": invalid character ',' looking for beginning of value

如果我将--dry-run --debug 添加到我的helm upgrade 命令中,我会得到问题的提示:

kind: Secret
apiVersion: v1
metadata:
  name: singleuser-image-credentials
  labels:
    component: singleuser-image-credentials
    app: jupyterhub
    release: jhub
    chart: jupyterhub-0.9.0
    heritage: Helm
type: kubernetes.io/dockerconfigjson
data:
  .dockerconfigjson: ewogICJhdXRocyI6IHsKICAgICJodHRwczovL2luZGV4LmRvY2tlci5pby92MS8iOiB7CiAgICAgICJ1c2VybmFtZSI6ICwKICAgICAgInBhc3N3b3JkIjogLAogICAgICAiYXV0aCI6ICJQRzVwYkQ0NlBHNXBiRDQ9IgogICAgfQogIH0KfQ==

上面的 dockerconfigjson 秘密实际上并不包含秘密:

$ echo ewogICJhdXRocyI6IHsKICAgICJodHRwczovL2luZGV4LmRvY2tlci5pby92MS8iOiB7CiAgICAgICJ1c2VybmFtZSI6ICwKICAgICAgInBhc3N3b3JkIjogLAogICAgICAiYXV0aCI6ICJQRzVwYkQ0NlBHNXBiRDQ9IgogICAgfQogIH0KfQ== | base64 --decode
{
  "auths": {
    "https://index.docker.io/v1/": {
      "username": ,
      "password": ,
      "auth": "PG5pbD46PG5pbD4="
    }
  }
}
$ echo PG5pbD46PG5pbD4= | base64 --decode
<nil>:<nil>

问题

这种看起来像一个错误。但是应该有某种方法可以使用秘密将凭据插入到 jupyterhub 0.9.0 中?

解决方法:

我可以直接用helm upgrade --set singleuser.imagePullSecret.password=&lt;my password here&gt; ... 插入用户名和密码。然后就可以了。

【问题讨论】:

    标签: kubernetes kubernetes-helm jupyterhub


    【解决方案1】:

    您应该修改 values.yaml 文件,而不是将您的私有 helm 存储库添加到 config.yaml,如 this github issue 中所述:

      image:
        name: <image>
        tag: '<tag>'
        pullPolicy: Always
        pullSecrets:
          - secretName: "<secret-name>"
    

    【讨论】:

      猜你喜欢
      • 2021-01-03
      • 2013-09-27
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      • 2013-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多