【发布时间】: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=<my password here> ... 插入用户名和密码。然后就可以了。
【问题讨论】:
标签: kubernetes kubernetes-helm jupyterhub