在JupyterHub中使用私有回购中的图像 [英] Use image from private repo in Jupyterhub

查看:13
本文介绍了在JupyterHub中使用私有回购中的图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将我自己的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

这行得通。

然后我尝试通过修改配置.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舵图无法正确处理命名的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=<my password here> ...直接插入用户名和密码。那么它就起作用了。

推荐答案

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

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

这篇关于在JupyterHub中使用私有回购中的图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆