重大升级:1.* 到 2.*#
Z2JH 2 包含一些重大变更,包括一些影响部署安全性的变更。本指南将帮助您从 1.* 升级到 2.*。
安全:对 *.networkPolicy.egress
的重大变更#
NetworkPolicy 出站规则已扩展了一个新属性。如果您已配置以下任何内容:
hub.networkPolicy.egress
proxy.chp.networkPolicy.egress
proxy.traefik.networkPolicy.egress
singleuser.networkPolicy.egress
您必须检查您的配置,因为已添加了额外的默认出站路由。以前 *.networkPolicy.egress
控制所有出站,但新的属性 *.networkPolicy.egressAllowRules
默认添加了额外的出站规则。
如果您已配置 *.networkPolicy.egress
用于 hub
、proxy.chp
、proxy.traefik
或 singleuser
以限制建立出站网络连接的权限,则此升级可能会 *升级这些权限,除非您修改配置*。新的配置 *.networkPolicy.egressAllowRules
默认授予以前通过 *.networkPolicy.egress
配置默认授予的大多数出站权限,而 *.networkPolicy.egress
现在默认不提供任何权限。
例如,如果您已覆盖以前非常宽松的 singleuser.networkPolicy.egress
默认值以使其权限更严格,您应该考虑禁用所有 singleuser.networkPolicy.egressAllowRules
,例如这样,以避免升级权限。
singleuser:
networkPolicy:
egressAllowRules:
cloudMetadataServer: false
dnsPortsPrivateIPs: false
nonPrivateIPs: false
privateIPs: false
有关更多详细信息,请参阅有关 Kubernetes 网络策略 的文档以及 *.networkPolicy.egress
和 *.networkPolicy.egressAllowRules
下的配置参考条目。
JupyterLab 和 Jupyter Server#
默认的单用户服务器是 JupyterLab,运行在 Jupyter server 上。要切换回 Jupyter Notebook,请配置/重建您的单用户镜像以默认使用 notebook,或者参见 有关用户界面的文档
KubeSpawner 默认情况下会阻止特权升级,例如 sudo#
默认情况下,进程无法提升其特权。例如,用户无法使用 sudo 切换到 root。如果您在单用户镜像中配置了 sudo 或其他一些特权升级方法,则必须设置 singleuser.allowPrivilegeEscalation: true
。
singleuser:
allowPrivilegeEscalation: true
如果您想向命令添加自定义参数,则必须在 singleuser.cmd
中指定完整的命令和任何参数,例如
singleuser:
cmd:
- jupyterhub-singleuser
- "--collaborative"
- "--debug"
jupyterhub_config.d
中的配置优先于 hub.config
#2457#
以前,如果使用 hub.config
配置一些 JupyterHub traitlets,它将覆盖安装到 hub 容器 jupyterhub_config.d
中的任何自定义配置文件。在 2.0.0 中,所有额外的自定义(例如,使用 hub.extraConfig
提供内联配置,或 hub.extraFiles
将文件安装到 jupyterhub_config.d
)将始终优先于任何 Helm 图表值。
用户调度程序插件配置已更改为匹配 kubescheduler.config.k8s.io/v1beta3
#2590#
使用插件对用户调度器进行高级自定义现在需要 Kubernetes 1.21+,并且配置必须遵循 kubescheduler.config.k8s.io/v1beta3
。Kubernetes 1.20 无法进行自定义。
如果您在没有自定义插件配置的情况下使用用户调度器,则不受影响。
需要 Kubernetes 版本 1.20+ #2635#
此 Helm 图表使用 Kubernetes 版本 1.20 之前不可用的 Kubernetes 资源。
hub.fsGid
被 hub.podSecurityContext
替换 #2720#
在 Z2JH 的先前版本中,hub.fsGid
设置了一个补充组 ID,这在某些 K8s 系统上是必需的,以确保 JupyterHub 具有对卷上文件进行读写操作的权限。这已被更通用的 hub.podSecurityContext
替换。要升级,请设置
hub:
podSecurityContext:
fsGroup: GROUP-ID
Hub 镜像基于 Debian 而不是 Ubuntu #2733#
hub 容器基础镜像已从 ubuntu:20.04
切换到 python:3.9-slim-bullseye
,该镜像基于 debian:bullseye-slim
。如果您扩展了 Z2JH hub 镜像,请查看 hub Dockerfile。请注意,单用户镜像不受影响。
禁用 RBAC 需要设置多个属性,rbac.enable
已被移除 #2736 #2739#
如果您之前使用 rbac.enable: False
禁用了 RBAC,则应设置
rbac:
create: False
hub:
serviceAccount:
create: false
proxy:
traefik:
serviceAccount:
create: false
scheduling:
userScheduler:
serviceAccount:
create: false
prePuller:
hook:
serviceAccount:
create: false
更新配置后,请遵循 升级指南 中的其余步骤。