重大升级: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 用于 hubproxy.chpproxy.traefiksingleuser 以限制建立出站网络连接的权限,则此升级可能会 *升级这些权限,除非您修改配置*。新的配置 *.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.fsGidhub.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

更新配置后,请遵循 升级指南 中的其余步骤。