更新日志#

在这里您可以找到版本之间的升级变更和升级说明。

未发布的重大变更#

此 Helm chart 提供开发版本,当我们合并拉取请求中的重大变更时,此列表应会更新。

4.2#

4.2.0 - 2025-04-16#

通过这个较小的版本,部署的 JupyterHub 版本从 v5.2.1 升级到 v5.3.0。详情请参阅 JupyterHub 更新日志

功能增强#

维护和保养改进#

文档改进#

持续集成改进#

其他合并的 PR#

此更新日志条目省略了自动化的 PR,例如更新镜像、GitHub actions、pre-commit hooks 中的依赖项的 PR。有关更改的完整列表,请参阅完整比较

此版本的贡献者#

以下人员贡献了讨论、新想法、代码和文档贡献以及审查。请参阅我们对贡献者的定义

(此版本的 GitHub 贡献者页面)

@benz0li (活动) | @consideRatio (活动) | @emmanuel-ferdman (活动) | @gardleopard (活动) | @GeorgianaElena (活动) | @jupyterhub-bot (活动) | @Khoi16 (活动) | @manics (活动) | @minrk (活动) | @rgaiacs (活动) | @samyuh (活动) | @sgibson91 (活动) | @yuvipanda (活动)

4.1#

4.1.0 - 2025-01-15#

新增功能#

修复的 Bug#

文档改进#

其他合并的 PR#

此更新日志条目省略了自动化的 PR,例如更新镜像、GitHub actions、pre-commit hooks 中的依赖项的 PR。有关更改的完整列表,请参阅完整比较

此版本的贡献者#

以下人员贡献了讨论、新想法、代码和文档贡献以及审查。请参阅我们对贡献者的定义

(此版本的 GitHub 贡献者页面)

@aychang95 (活动) | @consideRatio (活动) | @jshmchenxi (活动) | @jupyterhub-bot (活动) | @manics (活动) | @minrk (活动) | @samyuh (活动)

4.0#

4.0.0 - 2024-11-07#

此版本将 JupyterHub 本身从版本 4 升级到 5,并将依赖项 jupyterhub-kubespawneroauthenticatorldapauthenticator 升级到新的主版本。

另请参阅

  • 常规升级文档,了解每次进行 major chart 更新时应采取的升级步骤

  • 升级指南,了解将 chart 版本从 3 升级到 4 的具体说明

  • 如果您使用任何已升级的软件包,请检查重大变更摘要和下面链接的更新日志。

重大变更#

  • 此 chart 现在需要 Kubernetes 1.28+,之前为 1.23+

  • chart 镜像中的 Python 从 3.11 升级到 3.12

  • KubeSpawner 从 6.2.0 升级到 7.0.0

  • JupyterHub 4.1.6 已升级到 5.2.1

  • OAuthenticator 16.3.1 已升级到 17.1.0

    • 如果您正在使用基于 OAuthenticator 的身份验证器类(GitHubOAuthenticator、GoogleOAuthenticator 等),请参阅 OAuthenticator 更新日志 了解详情,并注意 JupyterHub 17.0.0 版本的条目。

  • LDAPAuthenticator 1.3.2 已升级到 2.0.2

    • 如果您正在使用此身份验证器类,请参阅 LDAPAuthenticator 更新日志 了解详情,并注意 LDAPAuthenticator 2.0.0 版本的条目。

值得注意的依赖项更新#

依赖项

3.3.8 中的版本

4.0.0 中的版本

更新日志链接

注意

jupyterhub

4.1.6

5.2.1

更新日志

hub pod 中运行

kubespawner

6.2.0

7.0.0

更新日志

hub pod 中运行

oauthenticator

16.3.1

17.1.0

更新日志

hub pod 中运行

ldapauthenticator

1.3.2

2.0.2

更新日志

hub pod 中运行

nativeauthenticator

1.2.0

1.3.0

更新日志

hub pod 中运行

jupyterhub-idle-culler

1.3.1

1.4.0

更新日志

hub pod 中运行

configurable-http-proxy

4.6.1

4.6.2

更新日志

proxy pod 中运行

traefik

v2.11.0

v3.2.0

更新日志

autohttps pod 中运行

kube-scheduler

v1.26.15

v1.30.6

更新日志

user-scheduler pod 中运行

有关 hub Pod 的 Docker 镜像中 Python 依赖项的详细列表,请检查 images/hub/requirements.txt 文件,并使用其 git 历史记录查看标记版本之间的变化。

新增功能#

功能增强#

修复的 Bug#

维护和保养改进#

文档改进#

持续集成改进#

其他合并的 PR#

此更新日志条目省略了自动化的 PR,例如更新镜像、GitHub actions、pre-commit hooks 中的依赖项的 PR。有关更改的完整列表,请参阅完整比较

此版本的贡献者#

以下人员贡献了讨论、新想法、代码和文档贡献以及审查。请参阅我们对贡献者的定义

(此版本的 GitHub 贡献者页面)

@alxyok (活动) | @colinlodter (活动) | @consideRatio (活动) | @jrdnbradford (活动) | @jupyterhub-bot (活动) | @lahwaacz (活动) | @manics (活动) | @minrk (活动) | @samyuh (活动) | @snickell (活动) | @StefanTheWiz (活动)

3.3#

3.3.8 - 2024-07-31#

此版本将 JupyterHub 从 4.1.5 更新到 4.1.6,这是一个安全版本,记录在 JupyterHub 更新日志中,内容如下:

4.1.6 是一个安全版本,修复了 CVE-2024-41942。建议所有 JupyterHub 部署进行升级,但只有那些拥有 admin:users 范围的用户才会受到影响。完整的安全公告将在发布后 7 天公布。

维护和保养改进#

3.3.7 - 2024-04-09#

维护和保养改进#

3.3.6 - 2024-03-30#

维护和保养改进#

3.3.5 - 2024-03-26#

维护和保养改进#

3.3.4 - 2024-03-25#

维护和保养改进#

3.3.3 - 2024-03-23#

维护和保养改进#

3.3.2 - 2024-03-20#

修复的 Bug#

3.3.1 - 2024-03-20#

修复的 Bug#

3.3.0 - 2024-03-20#

如果您从 3.0.x 升级

z2jh 3.0.0-3.0.3 中存在的 KubeSpawner 5.0-6.0 的一个 bug,导致用户服务器 pod 有可能被 JupyterHub 遗弃,使其无限期运行并造成不必要的云成本。

请在此论坛帖子中阅读更多关于如何清理这些被遗弃的用户服务器 pod 的信息。

此版本将 JupyterHub 从 4.0.2 更新到 4.1.0,将 OAuthenticator 从 16.2.1 更新到 16.3.0。两次更新都提供了安全补丁。更多信息,请参阅 JupyterHub 的更新日志OAuthenticator 的更新日志

(完整更新日志)

修复的 Bug#

维护和保养改进#

文档改进#

持续集成改进#

此版本的贡献者#

以下人员贡献了讨论、新想法、代码和文档贡献以及审查。请参阅我们对贡献者的定义

(此版本的 GitHub 贡献者页面)

@consideRatio (活动) | @jupyterhub-bot (活动) | @Kyrremann (活动) | @manics (活动) | @minrk (活动) | @SchutteJan (活动) | @StefanVanDyck (活动) | @WilliamHoltam (活动) | @ya0guang (活动) | @yuvipanda (活动)

3.2#

3.2.1 - 2023-11-27#

维护和保养改进#

3.2.0 - 2023-11-27#

如果您从 3.0.x 升级

z2jh 3.0.0-3.0.3 中存在的 KubeSpawner 5.0-6.0 的一个 bug,导致用户服务器 pod 有可能被 JupyterHub 遗弃,使其无限期运行并造成不必要的云成本。

请在此论坛帖子中阅读更多关于如何清理这些被遗弃的用户服务器 pod 的信息。

默认镜像仓库已更改为 Quay.io#

我们现在将 chart 的 docker 镜像发布到 Quay.ioDocker Hub,并且 chart 从现在起默认配置为使用 Quay.io 上的镜像。以前的镜像版本(不包括预发布版本)也已复制到 Quay.io。

此更改是为了确保即使 Docker Hub 上的 JupyterHub 组织 将来不再受 Docker Hub 赞助(我们每年都需要申请),也可以在没有 Docker Hub 速率限制 的情况下拉取镜像。

功能增强#

维护和保养改进#

文档改进#

持续集成改进#

  • ci:使用 helm show 获取稳定/开发版本以避免缓存问题 #3256 (@consideRatio)

此版本的贡献者#

以下人员贡献了讨论、新想法、代码和文档贡献以及审查。请参阅我们对贡献者的定义

(此版本的 GitHub 贡献者页面)

@consideRatio (活动) | @elferherrera (活动) | @jupyterhub-bot (活动) | @manfuin (活动) | @manics (活动) | @mathbunnyru (活动) | @minrk (活动) | @rgaiacs (活动) | @vizeit (活动) | @yuvipanda (活动)

3.1#

3.1.0 - 2023-09-29#

建议的升级后操作

z2jh 3.0.0-3.0.3 中存在的 KubeSpawner 5.0-6.0 的一个 bug,导致用户服务器 pod 有可能被 JupyterHub 遗弃,使其无限期运行并造成不必要的云成本。

请在此论坛帖子中阅读更多关于如何清理这些被遗弃的用户服务器 pod 的信息。

值得注意的依赖项更新#

依赖项

3.0.3 中的版本

3.1.0 中的版本

更新日志链接

注意

kubespawner

6.0.0

6.1.0

更新日志

hub pod 中运行

oauthenticator

16.0.7

16.1.0

更新日志

hub pod 中运行

configurable-http-proxy

4.5.6

4.6.0

更新日志

proxy pod 中运行

依赖项更新#

文档改进#

此版本的贡献者#

以下人员贡献了讨论、新想法、代码和文档贡献以及审查。请参阅我们对贡献者的定义

(此版本的 GitHub 贡献者页面)

@consideRatio (活动) | @manics (活动) | @shaneknapp (活动) | @yuvipanda (活动)

3.0#

3.0.3 - 2023-08-29#

包含来自 OAuthenticator 项目的 bug 修复,针对使用 GoogleOAuthenticator 并配置了 hosted_domainadmin_users 的用户。详情请参阅 oauthenticator 更新日志

修复的 Bug#

3.0.2 - 2023-08-17#

包含来自 OAuthenticator 项目的 bug 修复,针对启用了 enable_auth_state 并使用 Google、Globus 或 BitBucket OAuthenticator 类的用户。详情请参阅 oauthenticator 更新日志

修复的 Bug#

3.0.1 - 2023-08-15#

修复的 Bug#

文档改进#

此版本的贡献者#

以下人员贡献了讨论、新想法、代码和文档贡献以及审查。请参阅我们对贡献者的定义

(此版本的 GitHub 贡献者页面)

@consideRatio (活动) | @Ph0tonic (活动)

3.0.0 - 2023-08-11#

此版本将 JupyterHub 本身和几个依赖项更新到新的主版本,请在升级前阅读下面的重大变更。

自 beta 版本以来的重大变更

自 3.0.0-beta.1 以来 OAuthenticator 已升级,自 3.0.0-beta.3 以来与建立 DNS 端口连接相关的默认网络规则略有变化。

重大变更#

  • 现在需要 K8s 1.23。

  • Helm chart 提供的镜像现在使用 Python 3.11 而不是 Python 3.9。

  • JupyterHub 3.0.0 已升级到 4.0.2。

    • 详情请参阅 JupyterHub 更新日志,但请注意,此升级不需要重启用户服务器,也不要求用户环境具有版本 4 的 jupyterhub (PyPI) 或 jupyterhub-base (conda-forge)。

  • KubeSpawner 4.2.0 已升级到 6.0.0

  • OAuthenticator 15.1.0 已升级到 16.0.4。

    • 如果您正在使用此项目中的 JupyterHub Authenticator 类,请在升级此 Helm chart 之前阅读 OAuthenticator 更新日志的重大变更。

  • TmpAuthenticator 0.6 已升级到 1.0.0

    • 如果您正在使用此 JupyterHub Authenticator 类,请在升级此 Helm chart 之前阅读 TmpAuthenticator 更新日志的重大变更。

  • 为 chart 的 NetworkPolicy 资源引入并默认启用了预定义的 NetworkPolicy 出口允许规则 dnsPortsCloudMetadataServerdnsPortsKubeSystemNamespace

值得注意的依赖项更新#

依赖项

2.0.0 中的版本

3.0.0 中的版本

更新日志链接

注意

jupyterhub

3.0.0

4.0.2

更新日志

hub pod 中运行

kubespawner

4.2.0

6.0.0

更新日志

hub pod 中运行

oauthenticator

15.1.0

16.0.4

更新日志

hub pod 中运行

ldapauthenticator

1.3.2

1.3.2

更新日志

hub pod 中运行

ltiauthenticator

1.2.0

1.6.1

更新日志

hub pod 中运行

nativeauthenticator

1.1.0

1.2.0

更新日志

hub pod 中运行

tmpauthenticator

0.6

1.0.0

更新日志

hub pod 中运行

jupyterhub-idle-culler

1.2.1

1.2.1

更新日志

hub pod 中运行

configurable-http-proxy

4.5.3

4.5.6

更新日志

proxy pod 中运行

traefik

v2.8.4

v2.10.4

更新日志

autohttps pod 中运行

kube-scheduler

v1.23.10

v1.26.7

更新日志

user-scheduler pod 中运行

有关 hub Pod 的 Docker 镜像中 Python 依赖项的详细列表,请检查 images/hub/requirements.txt 文件,并使用其 git 历史记录查看标记版本之间的变化。

新增功能#

功能增强#

修复的 Bug#

  • 修复在同一命名空间中多次安装 chart 相关的 bug #3032 (@HoseonRyu)

维护和保养改进#

文档改进#

持续集成改进#

此版本的贡献者#

以下人员贡献了讨论、新想法、代码和文档贡献以及审查。请参阅我们对贡献者的定义

(此版本的 GitHub 贡献者页面)

@aaronjnewman (活动) | @alekseyolg (活动) | @arunppsg (活动) | @betatim (活动) | @bjornjorgensen (活动) | @cbowman0 (活动) | @choldgraf (活动) | @ChristofKaufmann (活动) | @consideRatio (活动) | @dasantonym (活动) | @DeepSkyWonder (活动) | @ebebpl (活动) | @HoseonRyu (活动) | @iandesj (活动) | @IceS2 (活动) | @JunaidChaudry (活动) | @jupyterhub-bot (活动) | @kanor1306 (活动) | @LucasVanHaaren (活动) | @manics (活动) | @mathbunnyru (活动) | @mdlincoln (活动) | @minrk (活动) | @monoakg (活动) | @Ph0tonic (活动) | @pnasrat (活动) | @Uular (活动) | @vizeit (活动) | @xcompass (活动) | @yuvipanda (活动)

2.0#

2.0.0 - 2022-09-09#

亮点#

Z2JH 2.0.0 是自 2021 年 6 月发布 1.0.0 以来的第一个主要版本,包含了对所有 JupyterHub 组件的重大升级,包括从 JupyterHub 1 直接跳到 JupyterHub 3。

JupyterHub 2 和 3 包含了新的 RBAC 支持,允许对 hub 服务和服务器进行细粒度的访问控制。

JupyterLab,下一代 Notebook 界面,现在是用户看到的默认界面。这带来了一个完整的开发环境,并有大量由 Jupyter 社区开发的扩展。

此版本还包括一些较小的更改,有助于 Z2JH 更好地与 Jupyter 社区的其他部分接口,例如不覆盖 Docker 镜像的命令,以及使用标准的 Helm chart 参数名称以与其他 Helm charts 匹配。虽然这些是重大变更,但它们将大大提高 JupyterHub chart 未来的可维护性,也应使新用户更容易上手。

安全:对 *.networkPolicy.egress 的重大变更#

如果您配置了以下任何一项:

  • hub.networkPolicy.egress

  • proxy.chp.networkPolicy.egress

  • proxy.traefik.networkPolicy.egress

  • singleuser.networkPolicy.egress

您必须审查您的配置,因为已经添加了额外的默认出口路由。详情请参阅 安全:对 *.networkPolicy.egress 的重大变更

升级说明#

请通读所有重大变更,然后按照升级指南进行操作。

重大变更#

这些重大变更是相对于 Z2JH 1.* 系列版本进行的

  • 安全:对 *.networkPolicy.egress 的重大变更

  • JupyterHub 从 1.x 升级到 3.x,以及相关的 hub 组件

  • JupyterLab 和 Jupyter Server 现在是默认的 singleuser 应用程序

  • jupyterhub_config.d 中的配置优先级高于 hub.config #2457

  • 用户调度器插件配置已更改以匹配 kubescheduler.config.k8s.io/v1beta3 #2590

  • 需要 Kubernetes 1.20+ 版本 #2635

  • hub.fsGidhub.podSecurityContext 替换 #2720

  • Hub 镜像基于 Debian 而不是 Ubuntu #2733

  • 禁用 RBAC 需要设置多个属性,rbac.enable 已被移除 #2736 #2739

有关如何更新配置的信息,请参阅重大升级:1.* 到 2.* 指南。

值得注意的依赖项更新#

依赖项

1.2.0 中的版本

2.0.0 中的版本

更新日志链接

注意

jupyterhub

1.4.2

3.0.0

更新日志

hub pod 中运行

kubespawner

1.1.0

4.2.0

更新日志

hub pod 中运行

oauthenticator

14.2.0

15.1.0

更新日志

hub pod 中运行

ldapauthenticator

1.3.2

1.3.2

更新日志

hub pod 中运行

ltiauthenticator

1.0.0

1.2.0

更新日志

hub pod 中运行

nativeauthenticator

0.0.7

1.1.0

更新日志

hub pod 中运行

jupyterhub-idle-culler

1.1

1.2.1

更新日志

hub pod 中运行

configurable-http-proxy

4.5.0

4.5.3

更新日志

proxy pod 中运行

traefik

v2.4.11

v2.8.4

更新日志

autohttps pod 中运行

kube-scheduler

v1.19.13

v1.23.10

-

user-scheduler pod 中运行

有关 hub Pod 的 Docker 镜像中 Python 依赖项的详细列表,请检查 images/hub/requirements.txt 文件,并使用其 git 历史记录查看标记版本之间的变化。

新增功能#

功能增强#

修复的 Bug#

维护和日常改进#

文档改进#

持续集成改进#

此版本的贡献者#

此版本的 GitHub 贡献者页面

@a3626a | @abdelq | @Adam-Antios | @alex-g-tejada | @AlexChung1995 | @BertR | @betatim | @bjornarfjelldal | @chancez | @choldgraf | @consideRatio | @cslovell | @delamart | @dependabot | @dhirschfeld | @dingobar | @dmigo | @Economax | @ellisonbg | @GeorgianaElena | @gregingenii | @gsemet | @jdmcbr | @jhowton-restor3d | @joncotton | @joraff | @jupyterhub-bot | @kindomLee | @lucianolacurcia | @lud0v1c | @manics | @matthew-brett | @mcberma | @mgobec | @mike-matera | @minrk | @MLobo1997 | @mriedem | @nreith | @ostapkonst | @pre-commit-ci | @pvanliefland | @raybellwaves | @remche | @rickwierenga | @ruben-rodriguez | @sgibson91 | @Sieboldianus | @snickell | @srggrs | @sunu | @theomper | @timotk | @willingc | @wyphan | @yuvipanda

1.2#

1.2.0 - 2021-11-04#

安全版本!将 JupyterHub 更新到 1.5 以解决一个影响 JupyterLab 用户的中等安全漏洞,该漏洞可能导致在同时打开多个会话时,注销操作无法完全清除浏览器中的凭据。

一些小功能也从即将发布的 2.0 版本中被反向移植过来。更多信息请参见发布说明

由于该漏洞存在于单用户环境中,您可以在现有部署中通过将*用户*环境中的 JupyterHub 升级到 1.5 来获得修复,而无需更新 chart 的其余部分。

同样,如果不将用户环境中的 JupyterHub 也升级到 1.5,仅仅升级 chart **并不能**修复该漏洞。

用户环境中的 JupyterHub 1.5 完全兼容运行 1.4 版本的 Hub,*反之亦然*。

1.1#

1.1.4 - 2021-10-28#

安全版本!1.1.4 版本修复了 jupyterhub-firstuse authenticator 中的一个严重安全漏洞。如果您没有使用 firstuseauthenticator,则不受影响。

1.1.3 - 2021-08-25#

维护和日常改进#

  • 重构:移除 toYaml 后多余的换行符 trimSuffix #2358 (@consideRatio)

  • 构建(依赖): 在 /images/hub 中将 pycurl 从 7.44.0 升级到 7.44.1 #2352 (@dependabot)

  • 构建(依赖): 在 /images/hub 中将 oauthenticator 从 14.1.0 升级到 14.2.0 #2350 (@dependabot)

  • 构建(依赖): 在 /images/hub 中将 pycurl 从 7.43.0.6 升级到 7.44.0 #2347 (@dependabot)

文档改进#

此版本的贡献者#

此版本的 GitHub 贡献者页面

@consideRatio | @j0nnyr0berts | @manics

1.1.2 - 2021-08-05#

错误修复#

  • 修复 schema:hub.templateVars 不接受配置 #2343 (@MridulS)

文档改进#

此版本的贡献者#

此版本的 GitHub 贡献者页面

@consideRatio | @hiroki-sawano | @manics | @MridulS

1.1.1 - 2021-07-22#

错误修复#

持续集成改进#

1.1.0 - 2021-07-21#

亮点#

  • 现在会生成 hub.services 的 API 令牌

    Helm chart 现在会自动为在 hub.services 下注册的服务提供一个 API 令牌。这对于依赖此 Helm chart 的 Helm chart(例如 binderhubdaskhub)特别有帮助,更多详情请参见配置参考中的 hub.services 条目。

  • 完全兼容 arm64

    此 Helm chart 完全兼容 arm64,甚至包括之前不兼容的 singleuser.image

重大变更#

此重大变更仅涉及配置了 hub.services.<some-key>.name=<some-name><some-key><some-name> 不同的用户。在这种情况下,暴露已注册服务 API 令牌的 k8s Secret 中的键现在命名为 hub.services.<some-key>.apiToken 而不是 hub.services.<some-name>.apiToken

重要的依赖更新#

依赖项

1.0.0 版本

1.1.0 版本

更新日志链接

注意

jupyterhub

1.4.1

1.4.2

更新日志

hub pod 中运行

kubespawner

1.0.0

1.1.0

更新日志

hub pod 中运行

oauthenticator

14.0.0

14.1.0

更新日志

hub pod 中运行

ldapauthenticator

1.3.2

1.3.2

更新日志

hub pod 中运行

ltiauthenticator

1.0.0

1.0.0

更新日志

hub pod 中运行

nativeauthenticator

0.0.7

0.0.7

更新日志

hub pod 中运行

jupyterhub-idle-culler

1.1

1.1

-

hub pod 中运行

configurable-http-proxy

4.4.0

4.5.0

更新日志

proxy pod 中运行

traefik

v2.4.8

v2.4.11

更新日志

autohttps pod 中运行

kube-scheduler

v1.19.11

v1.19.13

-

user-scheduler pod 中运行

要查看 hub Pod 的 Docker 镜像中 Python 依赖项变化的详细列表,请检查 images/hub/requirements.txt 文件。

新增功能#

功能增强#

错误修复#

  • 允许 CHP 在仅 IPv4 和/或仅 IPv6 的环境中运行 #2318 (@consideRatio)

  • 修复 schema:接受 proxy.traefik.extra[Static|Dynamic]Config #2317 (@consideRatio)

  • 修复:如果 z2jh 作为带有别名的依赖项使用时出现的错误 #2310 (@consideRatio)

  • 修复了为 user-placeholder Pod 设置 imagePullSecrets 的失败问题(添加了 scheduling.userPlaceholder.image 配置)#2293 (@michaellzc)

维护和日常改进#

文档改进#

持续集成改进#

此版本的贡献者#

此版本的 GitHub 贡献者页面

@cdibble | @consideRatio | @jtrouth | @mallman | @manics | @michaellzc | @minrk | @yuvipanda

1.0#

1.0.1 - 2021-06-25#

错误修复#

维护和日常改进#

  • 将 traefik 从 2.4.8 升级到 2.4.9 #2288 (@consideRatio)

  • singleuser-sample 镜像:升级基础镜像以减少已知漏洞 #2286 (@consideRatio)

  • schema:强制 labels 和 annotations 为字符串 #2283 (@consideRatio)

  • 构建(依赖): 在 /images/singleuser-sample 中将 nbgitpuller 从 0.10.0 升级到 0.10.1 #2279 (@dependabot)

  • hub 镜像:添加 sqlalchemy-cocroachdb 依赖 #2262 (@weisdd)

  • 构建(依赖): 在 /images/hub 中将 psycopg2-binary 从 2.8.6 升级到 2.9.1 #2259 (@dependabot)

  • 构建(依赖): 在 /images/singleuser-sample 中将 nbgitpuller 从 0.9.0 升级到 0.10.0 #2247 (@dependabot)

文档改进#

持续集成改进#

此版本的贡献者#

此版本的 GitHub 贡献者页面

@cdibble | @consideRatio | @dependabot | @enolfc | @manics | @minrk | @sgibson91 | @v1r7u | @weisdd

1.0.0 - 2021-06-09#

此版本包括一个安全公告、重大变更、几个新功能等。请通读本文,以便能够帮助您自己和他人成功升级。

从此 Helm chart 的 1.0.0 版本开始,我们旨在遵循语义化版本 2 (SemVer 2),其中重大变更、新功能和小的错误修复将分别递增三个版本号。

亮点#

  • 兼容 arm64 的镜像

    除用户镜像(singleuser.image)外,所有镜像现在都支持 arm64 架构。这使得此 Helm chart 可以在基于 RaspberryPi 的 k8s 集群上安装。

  • hub.extraFilessingleuser.extraFiles

    您是否希望将各种文件(如配置文件或类似文件)挂载到 hub Pod 或用户 Pod?虽然以前可以通过创建一个专用的 ConfigMap 并进行挂载等方式实现,但现在您无需再费此周折。

    更多信息请阅读配置参考

  • 自动生成 Secret

    您是否明确传递了 proxy.secretToken, hub.config.CryptKeeper.keys, hub.config.JupyterHub.cookie_secret?升级到 1.0.0 时请再做一次!之后,它们将被存储在 k8s Secret 中并重用。

    如果您从头开始安装 1.0.0,如果您不指定它们,这些值将为您自动生成。

  • 更平滑的 helm 升级

    • prePuller.hook.pullOnlyOnChanges 现在可用并默认启用,它仅在镜像自上次升级后发生变化时才通过拉取镜像来拦截 helm upgrade

    • proxy Pod 有时会在非必要时重启,这可能会给用户带来不必要的干扰。此问题现已修复。

  • fullnameOverridenameOverride

    这些选项可让您控制 Helm chart 创建的 k8s 资源的命名,但除非您从头开始安装,否则*不应使用*。

    更多信息请阅读配置参考

  • 从父 Helm chart 的模板中引用资源

    您是否是依赖此 Helm chart 的 Helm chart 的开发者,并且希望从您的某个 Helm 模板中按名称引用 k8s 资源?

    通过阅读此文档,了解推荐的实现方法。

安全公告#

关于如何设置 Amazon EKS 集群的文档中包含一个不安全的步骤,该步骤会给予任何人访问 Kubernetes 集群的权限。如果您在 0.7.0-beta.10.11.1 之间遵循了这些说明,请参阅Jupyter 论坛中的这篇帖子

重大变更#

  • 现在需要 Kubernetes 1.17+ 和 Helm 3.5+

    现在需要 Helm 3 (3.5+)。Helm 2 已于去年终止生命周期,我们已开始依赖 Helm 3.5 的特定功能。

    现在需要 Kubernetes 1.17+。这帮助我们避免为 user-scheduler 维护两套独立的实现。

  • Chart 配置的 Schema 验证 (#2033, #2200)

    Helm chart 现在捆绑了一个 values.schema.json 文件,该文件将在模板渲染期间验证 Helm chart 的所有使用。如果传递给 Helm chart 的值不符合 schema,那么在 k8s api-server 介入并且 k8s 集群中发生任何更改之前,helm 将会报错。

    最常见的验证错误是

    • 无法识别的配置值

      例如,如果您有拼写错误。

      请注意,如果您希望传递自定义值以供 hub Pod 中的自定义逻辑检查,则应通过 custom 配置部分传递这些值,该部分将接受任何内容。

    • 可识别的配置值但类型错误

      例如,如果您将数值传递给期望字符串的配置。

  • 对配置的重大变更 (#2211)

    随着 Helm chart 的不断发展,配置选项以各种方式被重命名和更改。随着 1.0.0 的发布,我们强制从各种旧的配置选项过渡到新的选项,这些旧选项以前被忽略或接受。

    如果您正在使用过时的配置选项,在对您的 Helm chart 部署进行任何更改之前,您将收到通知。

  • 不再设置默认资源请求 (#2034, #2226)

    该 helm chart 现在遵循通用的 Helm chart 实践,不设置默认的资源请求或限制。

    为了帮助过渡,我们提供了关于设置显式资源请求的指导文档,可在此处查看

    如果您想恢复以前的行为,可以像下面这样显式设置资源请求。

    hub:
      resources:
        requests:
          cpu: 200m
          memory: 512Mi
    
    proxy:
      chp:
        resources:
          requests:
            cpu: 200m
            memory: 512Mi
    
    scheduling:
      userScheduler:
        resources:
          requests:
            cpu: 50m
            memory: 256Mi
    
    prePuller:
      resources:
        requests:
          cpu: 0
          memory: 0
      hook:
        resources:
          requests:
            cpu: 0
            memory: 0
    
  • KubeSpawner 和 PVC 的删除 (jupyterhub#3337, kubespawner#475)

    现在,在 JupyterHub 的管理界面(/hub/admin)中删除用户或移除命名服务器,将导致删除该用户或命名服务器的动态创建的 PVC 资源(如果存在)。

    要选择退出此行为并保留当前动态创建的 PVC 资源保持不变的行为,请将 KubeSpawner.delete_pvc 设置为 false

    hub:
      config:
        KubeSpawner:
          delete_pvc: false
    

    请注意,此功能依赖于 KubeSpawner 1.0.0+ 和 JupyterHub 1.4.1+,这两者都包含在此版本中。

  • hub.existingSecret 已重构 (#2042)

    更多详情请参阅文档拉取请求 #2042

  • configurable-http-proxy 的 statsd 指标已移除 (#2231)

    configurable-http-proxy 中的 statsd 指标已被移除。这只会影响那些覆盖了 CHP 命令行参数的管理员,因为 statsd 在 Helm chart 中不受支持。对 Prometheus 指标的支持将在未来版本中添加。

重要的依赖更新#

依赖项

0.11.0 版本

1.0.0 版本

更新日志链接

注意

jupyterhub

1.3.0

1.4.1

更新日志

hub pod 中运行

kubespawner

0.15.0

1.0.0

更新日志

hub pod 中运行

oauthenticator

0.12.3

14.0.0

更新日志

hub pod 中运行

ldapauthenticator

1.3.2

1.3.2

更新日志

hub pod 中运行

ltiauthenticator

1.0.0

1.0.0

更新日志

hub pod 中运行

nativeauthenticator

0.0.6

0.0.7

更新日志

hub pod 中运行

jupyterhub-idle-culler

1.0

1.1

-

hub pod 中运行

configurable-http-proxy

4.2.2

4.4.0

更新日志

proxy pod 中运行

traefik

v2.3.7

v2.4.8

更新日志

autohttps pod 中运行

kube-scheduler

v1.19.7

v1.19.11

-

user-scheduler pod 中运行

要查看 hub Pod 的 Docker 镜像中 Python 依赖项变化的详细列表,请检查 images/hub/requirements.txt 文件。

新增功能#

  • hub.service.extraPorts 配置选项 #2148 (@kafonek)

  • 发布 Arm64 兼容镜像 #2125 (@manics)

  • 允许选择退出 hub.jupyter.org/dedicated tolerations #2101 (@kafonek)

  • 添加 prePuller.hook.pullOnlyOnChanges 标志 #2066 (@consideRatio)

  • values.schema.json 与 chart 一同发布,配置参考现在涵盖所有选项 #2033 (@consideRatio)

  • 允许将 extraFiles 注入到 hub / singleuser Pods,并自动加载 /usr/local/etc/jupyterhub_config.d 中的配置 #2006 (@consideRatio)

  • 提供 secrets 种子(proxy.secretToken 等),使其不必手动生成 #1993 (@consideRatio)

  • 支持 fullnameOverride / nameOverride 并通过命名模板引用资源 #1923 (@consideRatio)

功能增强#

错误修复#

维护和日常改进#

文档改进#

持续集成改进#

此版本的贡献者#

(此版本的 GitHub 贡献者页面)

@agnewp | @bbockelm | @betatim | @choldgraf | @consideRatio | @damianavila | @danielballan | @dependabot | @dhirschfeld | @github-actions | @jabbera | @jgwerner | @kafonek | @manics | @meeseeksmachine | @mhwasil | @michzimny | @MickeyShnaiderman-RecoLabs | @minrk | @mriedem | @NerdSec | @pcfens | @pvanliefland | @remche | @roelbaz | @rommeld | @RyanQuey | @spenczar | @support | @thomasv314 | @tkislan | @willingc | @yobome | @yuvipanda

0.11#

0.11.1 - 2021-01-15#

此版本修复了 Ingress 资源中的一个回归问题,并将 jupyterhub-nativeauthenticator 从 0.0.6 升级到 0.0.7。

错误修复#

  • 修复:修复 ingress 回归问题并改进测试 (@consideRatio)

维护和保养改进#

  • 构建(依赖):在 /images/hub 中将 jupyterhub-nativeauthenticator 从 0.0.6 升级到 0.0.7 #1988 (@dependabot)

0.11.0 - 2021-01-14#

请阅读下面的*安全公告*和*重大变更*,并注意这是支持 Helm 2 和低于 1.16 的 k8s 版本的最后一个版本。

安全公告#

此版本包含 jupyterhub/oauthenticator 的修补版本,该版本包含一个安全问题,影响了此 Helm chart 的 0.10.0 - 0.10.5 版本(但不包括 0.10.6)。

请不要使用 0.10.0 - 0.10.5 版本,并升级到 0.10.6 或更高版本。如果您正在使用 OAuthenticator,请检查您的用户列表,并删除任何可能在使用 0.10.0 - 10.10.5 版本期间登录的未经授权的用户

有关更多信息,请参阅已发布的安全公告,并参考此论坛帖子分享可能对他人有用的见解。

重大变更#

  • auth 配置移动到 hub.config - #1943

    auth 下的 Helm chart 配置现在不再受支持。如果您使用 auth 配置进行 helm upgrade,升级将在对 k8s 集群进行任何更改之前中止,并且您将被提供在 hub.config 下使用新系统的等效配置。

    默认情况下,打印的等效配置是经过审查的,因为它可能包含不应公开的机密。通过传递 --global.safeToShowValues=true,您可以获得未审查的版本。

  • Pod Disruption Budget 现在默认禁用 - #1938

    之前默认会为 hub 和 proxy Pod 创建 Pod Disruption Budget (PDB),但从现在开始默认不会创建。这样做的结果是,这些 Pod 现在可以被*驱逐*。

    驱逐将作为对节点执行 kubectl drain 的一部分,或者由集群自动缩放器移除未充分利用的节点时发生。

值得注意的依赖更新#

依赖项

0.10.6 版本

0.11.0 版本

更新日志链接

注意

jupyterhub

1.2.2

1.3.0

更新日志

hub pod 中运行

kubespawner

0.14.1

0.15.0

更新日志

hub pod 中运行

oauthenticator

0.12.1

0.12.3

更新日志

hub pod 中运行

ldapauthenticator

1.3.2

1.3.2

更新日志

hub pod 中运行

ltiauthenticator

0.4.0

1.0.0

更新日志

hub pod 中运行

nativeauthenticator

0.0.6

0.0.6

更新日志

hub pod 中运行

jupyterhub-idle-culler

1.0

1.0

-

hub pod 中运行

configurable-http-proxy

4.2.2

4.2.2

更新日志

proxy pod 中运行

traefik

v2.3.2

v2.3.7

更新日志

autohttps pod 中运行

kube-scheduler

v1.19.2

v1.19.7

-

user-scheduler pod 中运行

要查看 hub Pod 的 Docker 镜像中 Python 依赖项变化的详细列表,请检查 images/hub/requirements.txt 文件。

增强功能#

错误修复#

  • 修复未能阻止不安全的元数据服务器 IP 的问题 #1950 (@consideRatio)

  • 默认启用 hub livenessProbe 并放宽 hub/proxy 探测 #1941 (@consideRatio)

  • 禁用 hub/proxy 的 PDB,为 autohttps 添加 PDB,并将配置 proxy.pdb 重新定位到 proxy.chp.pdb #1938 (@consideRatio)

维护和保养改进#

  • 依赖:将 traefik (autohttps pod) 从 v2.3.2 升级到 v2.3.7 #1986 (@consideRatio)

  • k8s:更新 Ingress / PriorityClass apiVersions #1983 (@consideRatio)

  • 依赖:将 kube-scheduler 从 1.19.2 升级到 1.19.7 #1981 (@consideRatio)

  • singleuser-sample 镜像:将 jupyterhub 升级到 1.3.0 #1961 (@consideRatio)

  • 构建(依赖):在 /images/hub 中将 jupyterhub 从 1.2.2 升级到 1.3.0 #1959 (@dependabot)

  • hub 镜像:在 /images/hub 中将 jupyterhub-kubespawner 从 0.14.1 升级到 0.15.0 #1946 (@dependabot)

  • Helm 模板格式检查 - 移除多余空格 #1945 (@DArtagan)

  • hub 镜像:在 /images/hub 中将 jupyterhub-hmacauthenticator 从 0.1 升级到 1.0 #1944 (@dependabot)

  • 添加 hub.config 直通并将其用于所有 auth 配置 #1943 (@consideRatio)

  • hub 镜像:将 ltiauthenticator 升级到 1.0.0 并将 oauthenticator 升级到 0.12.3 #1932 (@consideRatio)

  • 将 oauthenticator 升级到 0.12.2 #1925 (@minrk)

文档改进#

持续集成改进#

此版本的贡献者#

(此版本的 GitHub 贡献者页面)

@arokem | @betatim | @chicocvenancio | @choldgraf | @consideRatio | @DArtagan | @dependabot | @github-actions | @manics | @minrk | @naterush | @rokroskar | @yuvipanda

0.10#

0.10.6 - 2020-11-27#

此版本是针对 jupyterhub/oauthenticator 的安全变通方案,详情见 https://github.com/jupyterhub/oauthenticator/security/advisories/GHSA-384w-5v3f-q499。

请不要使用 0.10.0 - 0.10.5 版本,并升级到 0.10.6 或更高版本。如果在 0.10.0 - 0.10.5 版本使用期间有任何不应被授权的用户被授权,必须通过 API 或管理界面删除他们,根据文档

0.10.5 - 2020-11-27#

此版本将 JupyterHub 版本从 1.2.1 升级到 1.2.2。有关更多信息,请参阅 JupyterHub 的变更日志

错误修复#

维护和保养改进#

  • pre-commit 自动格式化:black 和 beautysh #1920 (@manics)

此版本的贡献者#

(此版本的 GitHub 贡献者页面)

@consideRatio | @manics

0.10.4 - 2020-11-21#

一个补丁版本,用于修复依赖 oauthenticator 中的一个错误,该错误导致用户在有机会选择服务器配置之前就启动了他们的服务器(如果配置了 c.KubeSpawner.profile_list)。

错误修复#

此版本的贡献者#

(此版本的 GitHub 贡献者页面)

@consideRatio | @manics

0.10.3 - 2020-11-16#

此版本包含一些小的增强功能和一个依赖项中的错误修复,该错误可能导致不必要的 hub Pod 重启。明确要求 Helm 2.16+,这在 0.10.0 版本中就应该已经明确了。

请注意,Helm 2 已达到其生命周期终点,将不再获得任何安全补丁。我们计划尽快放弃对 Helm 2 的支持,以便能够依赖 Helm 3 的功能。

增强功能#

错误修复#

维护和保养改进#

文档改进#

此版本的贡献者#

(此版本的 GitHub 贡献者页面)

@betatim | @choldgraf | @consideRatio | @JarnoRFB | @jerkern | @manics | @minrk | @plant99 | @tirumerla | @yuvipanda

0.10.2 - 2020-10-30#

一个错误修复版本,在 image-puller Pod 中的*所有*容器上添加了 securityContext 配置,当 k8s PodSecurityPolicy 强制 Pod 以非 root 用户启动时可能需要此配置。

请注意,任何需要遵守严格 PodSecurityPolicy 的人也需要 --set singleuser.cloudMetadata.blockWithIptables=false,但在这样做之前应阅读此文档

错误修复#

文档改进#

此版本的贡献者#

(此版本的 GitHub 贡献者页面)

@consideRatio | @jatinder91

0.10.1 - 2020-10-30#

一个错误修复版本,仅将 JupyterHub 更新到 1.2.1。JupyterHub 1.2.1 修复了与使用 oauth_no_confirm 配置的已注册 JupyterHub 服务相关的回归问题。

错误修复#

  • 使用 JupyterHub 1.2.1 - 修复外部 JH 服务的 oauth_no_confirm 配置的回归问题 #1889 (@minrk)

维护和保养改进#

文档改进#

此版本的贡献者#

(此版本的 GitHub 贡献者页面)

@consideRatio | @minrk

0.10.0 - 2020-10-29#

此版本使部署更加稳健,并增强了用户配置 Helm chart 的通用能力。一些默认值已更改,使 Helm chart 更容易默认遵守 PodSecurityPolicies。

重大变更:#

  • KubeSpawner 已更新,包含一个影响命名服务器用户的重大变更。

    安全修复:CVE-2020-15110 / GHSA-v7m9-9497-p9gr。当启用命名服务器时,某些用户名模式(取决于身份验证器)可能允许冲突。默认的命名服务器模板已更改以防止冲突,这意味着如果使用默认模板,升级将失去命名服务器与其 PVC 的关联。数据应该不会丢失(旧的 PVC 将被忽略,而不是删除),但在删除旧的 PVC 之前需要手动迁移到新的 PVC。

  • 任何依赖于 proxy.https 部分配置的人现在都明确要求将 proxy.https.enabled 设置为 true

  • 任何使用 hub.imagePullSecretsingleuser.imagePullSecret 的人现在都应该改用图表范围内的 imagePullSecret,语法相同,这将有助于所有 JupyterHub Pod 从私有镜像仓库获取镜像。有关更多信息,请参阅配置参考

  • 现在默认创建预定义的 Kubernetes 网络策略,明确描述 hub、proxy 和用户 Pod 允许的传入(*ingress*)和传出(*egress*)网络通信。这些 NetworkPolicy 资源对传出流量(egress)非常宽松,但限制了传入流量,仅限于已知需要的流量。

    请注意,这些网络策略仅在 Kubernetes 集群中有网络策略控制器(如 Calico)强制执行时才会影响网络通信。

    另请注意,如果强制执行了网络策略,您可以通过设置 singleuser.cloudMetadata.blockWithIptables=false 来安全地停止主动阻止用户 Pod 访问所谓的云元数据服务器。

    有关详细信息,请参阅安全文档配置参考

  • Helm chart 配置 proxy.networkPolicy 已被移除,必须改用 proxy.chp.networkPolicy(proxy pod)和 proxy.traefik.networkPolicy(autohttps pod)。

  • Helm chart 配置 proxy.containerSecurityContext 已重命名为 proxy.chp.containerSecurityContext

  • k8s ConfigMap hub-config 和 k8s Secret hub-secret 现已合并到 hub-secret 中,这将影响任何使用 hub.existingSecret 选项的用户。

版本亮点#

  • 使用 K8S 配置在 Pod 中设置环境变量。添加了使用 k8s 原生语法在 Pod 中配置环境变量的功能。这允许您引用 k8s Secret 中的字段并将其挂载为环境变量。有关更多信息,请阅读配置参考中关于 extraEnv 的部分。

  • 通过 helm chart 为所有 pod 配置 secret。现在可以在图表范围内配置 Helm chart 中所有 pod 的 imagePullSecrets。有关详细信息,请参阅关于 imagePullSecretimagePullSecrets 的配置参考。

  • Pod 安全性更易于使用和配置。现在在启用了 PodSecurityPolicy 的集群中部署 Helm chart 更加容易,因为 Pod 的容器现在设置了 securityContext,以相对较低的权限运行,如果需要,这些权限也是可配置的。

  • 更可靠的 TLS 证书。如果 proxy.https.type=letsencrypt,运行以获取 TLS 证书的 autohttps pod 现在能更可靠地获取证书。如果您当前遇到此类问题,请执行 kubectl delete deploy/autohttpskubectl delete secret proxy-public-tls-acme,然后再次使用 helm upgrade 部署 Helm chart。

值得注意的依赖更新#

依赖项

先前版本中的版本

此版本中的版本

更新日志链接

注意

jupyterhub

1.1.0

1.2.0

更新日志

hub pod 中运行

kubespawner

0.11.1

0.14.1

更新日志

hub pod 中运行

oauthenticator

0.11.0

0.12.0

更新日志

hub pod 中运行

ldapauthenticator

1.3.0

1.3.2

更新日志

hub pod 中运行

ltiauthenticator

0.4.0

0.4.0

更新日志

hub pod 中运行

nativeauthenticator

0.0.5

0.0.5

更新日志

hub pod 中运行

jupyterhub-idle-culler

-

v1.0

-

hub pod 中运行

configurable-http-proxy

4.2.1

4.2.2

更新日志

proxy pod 中运行

traefik

v2.1

v2.3.2

更新日志

autohttps pod 中运行

kube-scheduler

v1.13.12

v1.19.2

-

user-scheduler pod 中运行

要查看 hub Pod 的 Docker 镜像中 Python 依赖项变化的详细列表,请检查 images/hub/requirements.txt 文件。

增强功能#

错误修复#

维护和保养改进#

文档改进#

此版本的贡献者#

衷心感谢为此版本付出的所有协作努力!下面我们庆祝这个特定 GitHub 仓库的贡献者,但我们也有理由感谢我们所依赖的项目中许多其他的贡献者!谢谢大家!

此版本的 GitHub 贡献者页面

@01100010011001010110010101110000 | @ablekh | @aculich | @adi413 | @agrahamlincoln | @aguinaldoabbj | @Aisuko | @akaszynski | @albertmichaelj | @alexmorley | @amanda-tan | @arpitsri3 | @asubb | @aydintd | @bebosudo | @BertR | @betatim | @betolink | @bibz | @bleggett | @cam72cam | @carat64 | @cbanek | @cboettig | @chancez | @chicocvenancio | @choldgraf | @chrisroat | @clkao | @conet | @consideRatio | @craig-willis | @cslovell | @dalonlobo | @dalssaso | @danroliver | @DarkBlaez | @davidsmf | @deinal | @dimm0 | @dkipping | @dmpe | @donotpush | @duongnt | @easel | @echarles | @Edward-liang | @eric-leblouch | @erinfry6 | @etheleon | @farzadz | @filippo82 | @frankgu968 | @frouzbeh | @GeorgianaElena | @GergelyKalmar | @gsemet | @Guanzhou-Ke | @Gungo | @h4gen | @harsimranmaan | @hdimitriou | @hickst | @hnykda | @hqwl159 | @IamViditAgarwal | @ilhaan | @ivanpokupec | @jacobtomlinson | @jahstreet | @JarnoRFB | @jeremievallee | @jgerardsimcock | @jgwerner | @josibake | @JPMoresmau | @jreadey | @jtlz2 | @jtpio | @julienchastang | @jzf2101 | @kinow | @kristofmartens | @kyprifog | @leolb-aphp | @loki1978 | @ltupin | @lxylxy123456 | @manics | @mathematicalmichael | @meeseeksmachine | @meneal | @metonymic-smokey | @mhwasil | @minrk | @mjuric | @moorepants | @mpolatcan | @mriedem | @mrocklin | @NerdSec | @nscozzaro | @openthings | @pcfens | @perllaghu | @petebachant | @peterrmah | @philvarner | @prateekkhera | @rabernat | @RAbraham | @remche | @rkdarst | @rkevin-arch | @rmoe | @rnestler | @rschroll | @rubdos | @ryanlovett | @salvis2 | @sampathkethineedi | @scivm | @Sefriol | @sgibson91 | @sgloutnikov | @shenghu | @snickell | @sstarcher | @stefansedich | @stevenstetzler | @stv0g | @subwaymatch | @summerswallow-whi | @superyaniv | @support | @suryag10 | @TiemenSch | @tirumerla | @tjcrone | @tmshn | @TomasBeuzen | @tracek | @verdurin | @vindvaki | @vishwesh5 | @welcome | @willingc | @yuvipanda | @zxcGrace

0.9#

0.9.0 - 2020-04-15#

发布摘要#

此 Helm chart 版本主要是一个维护版本,包含了最新的 JupyterHub (1.1.0) 和认证器,以及一些错误修复和额外的有用配置选项。

值得注意

  • 自 0.9.0-beta.3 以来,自动获取 HTTPS 证书的问题已得到解决。

  • 修复了与 Kubernetes 1.16+ 的兼容性问题

  • 此仓库中的 images/hub/requirements.txt 文件现在可用于随时跟踪已使用的特定版本。

  • jupyterhub-nativeauthenticator 已添加到 JupyterHub Docker 镜像中。

依赖项升级

  • jupyterhub 版本 1.1.0

  • jupyterhub-ldapauthenticator 版本 1.3.0

  • jupyterhub-kubespawner 版本 0.11.1

  • oauthenticator 版本 0.11.0

  • kubernetes 版本 10.0.1

升级说明(重要)#

  1. 如果您正在使用 Helm 2,请升级到最新的 Helm 2 版本。如果您正在使用 Helm 3,请升级到最新的 Helm 3 版本。

    从 Helm 2 升级到 Helm 3 需要额外的步骤,此处不作介绍,因此目前请继续使用您当前的 helm 主要版本(2 或 3)。

    # Figure out what version you currently have locally, you should use
    # release of the same major version you have used before.
    helm version
    

    根据您当前使用的主要版本,安装最新的 Helm 2Helm 3

    # verify you successfully upgraded helm
    helm version
    
    # if you just upgraded helm 2, also upgrade tiller
    helm init --upgrade --service-account=tiller
    
  2. 使用 helm upgrade 时,请使用 --cleanup-on-fail

    Helm 可能会因 helm 安装或升级过程进入问题状态,该过程开始创建 Kubernetes 资源,但随后并未完成或未成功完成。这可能导致创建的资源与 helm 之后的操作发生冲突。

    为缓解此问题,我们建议在此 Helm chart 中始终使用 --cleanup-on-fail,这是一种可靠的行为,可以减少很多麻烦。

  3. 如果您使用 --wait--atomic(它隐含了 --wait):请不要手动取消升级!

    如果您在使用 --wait 时中止升级,并且 Kubernetes 资源已经创建,那么这些已创建的资源可能会与未来的升级发生冲突,需要您手动清理。

  4. 升级前删除可能导致问题的资源。

    # replace <NAMESPACE> below with where jupyterhub is installed
    kubectl delete -n <NAMESPACE> clusterrole,clusterrolebinding,role,rolebinding,serviceaccount,deployment,configmap,service -l component=autohttps
    

升级故障排除#

如果您遇到类似下面的错误,这是由于尝试 helm upgrade 失败,导致 helm 失去了对一些新创建资源的跟踪。一个好的解决方案是删除所有这些资源,然后重试。

# replace <NAMESPACE> below with where jupyterhub is installed
kubectl delete -n <NAMESPACE> clusterrole,clusterrolebinding,role,rolebinding,serviceaccount,deployment,configmap,service -l component=autohttps

为了将来避免这种情况,请在 helm upgrade 命令中使用 --cleanup-on-fail。这不是一个万无一失的方法,但可以减少问题。请注意,即使使用了该标志,例如在 --wait--atomic(它隐含了 --wait)期间发生中断,也很有可能在下一次升级尝试中导致此问题。

error: kind ConfigMap with the name "traefik-proxy-config" already exists in
the cluster and wasn't defined in the previous release. Before upgrading,
please either delete the resource from the cluster or remove it from the chart

依赖项更新#

维护#

0.9.0-beta.4 - 2020-02-26#

新增#

依赖项更新#

修复#

维护#

0.9.0-beta.3 - 2020-01-17#

依赖项更新#

修复#

维护#

0.9.0-beta.2 - 2019-12-26#

修复#

  • 修复在 beta.1 之前引入的,当所有 HTTPS 选项被禁用时的重大变更 #1534 (@dirkcgrunwald)

0.9.0-beta.1 - 2019-12-26#

此版本的一些相关亮点是

  • 与只有固定数量节点的固定集群相比,默认配置现在适用于节点可以添加和删除的自动伸缩集群。如果您在固定大小的集群上,请将 scheduling.userScheduler.enabled 设置为 false。

  • 实现了 Kubernetes 1.16 兼容性

  • 更新了依赖项

    • jupyterhub==1.1.0b1

    • kubernetes==0.10.1

    • kubespawner==0.11.1

    • oauthenticator==0.10.0

新增#

  • 增加了在 hub/proxy 上配置 liveness/readiness 探针的功能 #1480 (@mrow4a)

  • 增加了为 hub 和 image pullers 使用现有/共享的 image pull secret 的功能 #1426 (@LaurentGoderre)

  • 增加了配置代理负载均衡器服务的访问限制的功能 (loadBalancerSourceRanges) #1418 (@GergelyKalmar)

  • 增加了 user-scheduler pod->node 调度策略配置 #1409 (@yuvipanda)

  • 增加了向 k8s NetworkPolicy 资源添加额外入口规则的功能 #1380 (@yuvipanda)

  • 默认启用了持续的 image puller #1276 (@consideRatio)

  • 增加了配置 hub pod 的 initContainers 的功能 #1274 (@scottyhq)

  • 默认启用了 user-scheduler #1272 (@minrk)

  • 增加了为 hub 使用现有的 jupyterhub 配置 k8s secret 的功能(不推荐) #1142 (@koen92)

  • 默认使用 liveness/readinessProbe #1004 (@tmshn)

依赖项更新#

  • 将 JupyterHub 升级到 1.1.0b1 #1533 (@consideRatio)

  • 更新 JupyterHub 版本 #1524 (@bitnik)

  • 重新将 ltiauthenticator 0.4.0 添加到 hub 镜像 #1519 (@consideRatio)

  • 修复 hub 镜像依赖版本,禁用 ltiauthenticator,使用 chartpress==0.5.0 #1518 (@consideRatio)

  • 更新 hub 镜像依赖项和关于依赖项的 RELEASE.md #1484 (@consideRatio)

  • 将 kubespawner 升级到 0.11.1 以修复 spawner 进度条错误 #1502 (@consideRatio)

  • 更新了 hub 镜像依赖项 #1484 (@consideRatio)

  • 更新了 user-scheduler 使用的 kube-scheduler 二进制文件、kubespawner、kubernetes python 客户端和 oauthenticator #1483 (@consideRatio)

  • 将 CHP 升级到 4.2.0 - 我们现在可以更快地进行 chart 升级 #1481 (@consideRatio)

  • 升级 singleuser-sample #1473 (@consideRatio)

  • 将 python-kubernetes 升级到 9.0._(之后也升级到 10.0._) #1454 (@clkao)

  • 将 tmpauthenticator 升级到 0.6(jupyterhub 1.0 需要) #1299 (@manics)

  • 包含 jupyter-firstuseauthenticator。 #1288 (@danielballan)

  • 将 jupyterhub 升级到 1.0.0(之后也升级到 1.0.0 后的某个提交) #1263 (@minrk)

  • 将 CHP 镜像从 3.0.0 升级到 4.1.0(之后升级到 4.2.0) #1246 (@consideRatio)

  • 升级 oauthenticator 0.8.2(之后升级到 0.10.0) #1239 (@minrk)

  • 将 jupyterhub 升级到 1.0b2(之后升级到 1.0.0 后的某个提交) #1224 (@minrk)

修复#

  • 解决上游 kubernetes 关于 https 健康检查的问题 #1531 (@sstarcher)

  • User-scheduler 对 local-path-provisioner 的 RBAC 权限 + 增加 hub.baseUrl 与 hub 部署健康端点交互的鲁棒性 #1530 (@cutiechi)

  • 修复 #1300 User-scheduler 不适用于 rancher/local-path-provisioner #1516 (@cgiraldo)

  • 将 z2jh.py 移动到与 python 和 linux 发行版无关的路径 #1478 (@mrow4a)

  • PR #1401 中代理升级策略的错误修复 #1404 (@consideRatio)

  • 使用 recreate CHP 代理 pod 的部署策略 #1401 (@consideRatio)

  • 代理部署:将探针更改为 https 端口 #1378 (@chicocvenancio)

  • 重新添加了 Readiness 和 Liveness 探针 #1361 (@consideRatio)

  • 使用 443 作为 https 端口或重定向。修复 #806 #1341 (@chicocvenancio)

  • 回退“配置 liveness/readinessProbe” #1356 (@consideRatio)

  • 确保 helm chart 配置在需要时传递给 JupyterHub #1338 (@bitnik)

  • 使代理重定向到服务端口 443 而不是容器端口 8443 #1337 (@LucidNeko)

  • 禁止在 hub 和代理容器内成为 root 用户 #1280 (@yuvipanda)

  • 使用 singleuser.image.pullPolicy 正确配置 KubeSpawner #1248 (@vmarkovtsev)

  • 在容器级别而不是 pod 级别为 hub 提供 hub.runAsUser #1240 (@tmc)

  • 放宽对子域的 HSTS 要求 #1219 (@yuvipanda)

维护#

0.8#

0.8.2 - 2019-04-01#

将底层的 JupyterHub 升级到 0.9.6。

0.8.1 - 2019-03-28#

将底层的 JupyterHub 升级到 0.9.5。

0.8.0 - Richie Benaud - 2019-01-24#

此版本包含 JupyterHub 0.9.4 版。它需要 Kubernetes >= 1.11 和 Helm >= 2.11.0。有关所有 Helm Chart 版本的相关依赖项列表,请参阅Helm Chart 仓库

它包含新功能、额外的配置选项和错误修复。

从 0.7 升级#

要升级您的集群

  1. 为安全起见,备份您的 hub-db-dir 持久卷和之前的配置文件

  2. 阅读此处的更改,并对您的配置进行任何必要的更新

  3. 升级 chart

    helm repo update helm upgrade $RELEASE –force –version 0.8.0 –values config.yaml

--force 标志允许删除和重新创建具有某些更改(例如不同的标签)的对象,否则这些更改是不允许的。

重大变更#

  • Github 组织 OAuth:auth.github.org_whitelist 已重命名为 auth.github.orgWhitelist,以与 helm 的驼峰式命名风格保持一致

故障排除#

如果您在升级过程中遇到问题,请检查本文档中更改的配置,并确保您的配置是最新的。

如果您无法成功升级,可以回滚到之前的版本

helm rollback $RELEASE

如果您有任何问题或疑问,请随时在 Gitter 上联系我们

新功能#

更轻松的用户可选登录配置文件#

配置文件信息现在会传递给 KubeSpawner。这意味着您可以指定多个用户配置文件,供用户在登录时选择。 (#402)

可配置的镜像拉取凭证#

对 Helm Chart 的改进,允许用户指定私有信息,使 Hub 能够从私有 Docker 镜像仓库拉取镜像。新信息包括 Kubernetes Secrets、一个电子邮件字段,以及密码字段中的大型 JSON blob(从外部集群拉取私有 gcr.io 镜像仓库时需要)。

它还确保镜像拉取器 DaemonSet 具有相同的凭证来拉取镜像。

(感谢 @AlexMorreale) #851

改进的用户调度和资源管理#

#891

想要让您的自动调度器高效工作吗?那么您应该将 pod 调度得更紧凑而不是分散。用户调度器实现了这一点。

  • Pod 优先级和用户占位符 - #929

希望在用户到达之前进行扩容,以免他们等待节点拉取几GB大小的镜像?通过添加可配置的固定数量的用户占位符 pod,其 pod 优先级低于真实用户 pod,我们可以实现这一点。但这需要 k8s v1.11。

  • preferScheduleNextToRealUsers - 改善自动伸缩 - #930 此设置通过增加用户占位符被单独留在节点上而不是真实用户的可能性,略微提高了集群自动伸缩器缩减的能力。真实用户无法移动,而用户占位符 pod 可以。

次要升级和开发改进#

  • 将 jupyterhub 更新到 0.9.4

  • 将 kubespawner 更新到 0.10.1

  • 允许设置存储标签 - #924

  • 节点污点的容忍度 - #925

  • 使核心和用户 pod 的亲和性具有可配置的预设 - #927

  • 改进的 linting 和验证 + CI 集成 - #844

  • 改进的 CI 测试 - #846

  • 清理孤立文件 - #842 仓库中留下了两个未使用的文件。

  • cull.maxAge 错误修复 - #853 cull.maxAge 之前没有影响 culler 服务,因为该值从未被使用。这通过一个 PR 中的单行提交修复了。

  • 不再有重复的 puller pod - #854 没有人希望运行空闲的 pod。通过将 deletion-policy Helm hook 的值设置为新的 before-hook-creation,并为我们的 Helm hook 资源使用单一名称,我们可以确保永远不会有孤立的 image puller。

  • 移除 pod-culler 镜像 - #890 #919 在 JupyterHub 0.9 之前,pod-culler 是一个独立的 pod,带有自定义镜像。但现在它是 JupyterHub pod 的一个内部服务,所以在这个 PR 中我们精简了剩余的代码。

  • 升级到 k8s 1.9 API - #920 从 beta 迁移到更稳定的 K8s 资源 API。

  • 更新 singleuser-sample 镜像 - #888 gitnbgitpuller 现在默认可用

  • 切换到使用 StatefulSet 管理 Hub * Hub 应该是一个 StatefulSet 而不是 Deployment,因为它通常与一个只能由单个 Hub 挂载的 PV 绑定。请参阅此问题:https://github.com/helm/charts/issues/1863

  • 当用户使用某些已弃用的配置(例如,将 hub.extraConfig 作为单个字符串)或不兼容的组合时,向他们显示弃用和错误消息。

  • 指南更新 - #850

  • 内联文档更新 - #939

Richie Benaud(https://www.cricket.com.au/players/richie-benaud/gvp5xSjUp0q6Qd7IM5TbCg)#

(摘自 https://www.cricket.com.au/players/richie-benaud/gvp5xSjUp0q6Qd7IM5TbCg)

Richie Benaud 可能是澳大利亚板球界最具标志性的人物,他在这项运动中的职业生涯跨越了近 70 年。在赛场上,他在与英格兰的 27 场比赛中得到 767 分,平均分为 19.66,同时还拿下了 83 个三柱门。在赛场外,他也同样重要。自 1960 年首次在电台亮相以来,他的解说无人能及。

当他为澳大利亚队效力时,球迷们蜂拥而至观看 Benaud 带领的球队主宰任何对手。1950 年代末到 1960 年代初是澳大利亚板球的黄金时期,像 Simpson、Lawry 和 Harvey 这样的球员得分如麻,而 Benaud 和 Davidson 则用球造成了巨大破坏。

Richie Benaud 被认为是复兴了这个国家板球运动的人。当时世界在变,板球也在变。它第一次在电视上播出,而广播报道也变得更加先进。Benaud 觉得他有责任让比赛对澳大利亚公众更有娱乐性。当然,你可以说 1961 年的系列赛很沉闷,但至少澳大利亚保住了“骨灰杯”。没有人会忘记对阵西印度群岛的平局测试赛,或者 Benaud 在曼彻斯特大胆地绕过三柱门投球的举动。

Benaud 被认为推广了我们今天看到的战术。三柱门后的围拢战术诞生于 Benaud 时代。在比赛即将结束时宣布结束击球,以期在最后时刻拿下三柱门,这是他热衷的事情。向粗糙地面投球现在被视为常规做法。

Benaud 也准备在投球上尝试新事物。他非常努力地完善他的反向旋转球、指尖旋转球和上旋球。他的正向旋转球甚至也多种多样,使他成为当时最全面的旋转投球手之一。

他的领导才能立即为他赢得了尊重。球员们喜欢被这位来自彭里斯的可爱家伙指导。他不仅把团队照顾得很好,也照顾到每个人的个人情况。他的队友们相信他创新的想法,而他也相信他们能够尽全力执行这些想法。

对大多数澳大利亚人来说,夏天意味着板球。而板球意味着听到他们最喜欢的评论员 Richie Benaud 那悦耳的声音。从奶油色的西装,到与同事们的诙谐对话,Benaud 是一个完美的存在。

贡献者#

没有 zero-to-jupyterhubKubeSpawner 仓库的优秀贡献者们,这个版本是不可能完成的。我们想感谢自上一个 Zero to JupyterHub 版本发布以来,以任何形式做出贡献的每一个人——包括提交问题、评论问题、提交 PR 和进行审查。

(Frank) Yu Cheng Gu 1160300422-RenQJ 1kastner 2efper A. Tan Aadi Deshpande abremirata28 AcademicAdmin Adam Huffman Adrian Wilke Akanksha Bhardwaj Akhil Lawrence Al Johri AlbanWende Alejandro del Castillo Aleksandr Blekh Alex Morreale Alex Newman Alexander Comerford Alexander Sadleir amangarg96 Amirahmad Khordadi Andreas Hilboll andregouveiasantana Andrew Andrew Catellier angelikamukhina Anton Khodak arcady-genkin Ariel Rokem Arne Küderle atne2008 awalther Ben Zipperer Beneath Benjamin Egelund-Müller BertR bharathwgl bing-he bjyxmas bpoettinger Brad Skaggs Braden Brian E. Granger Bruno P. Kinoshita brynjsmith Calvin Canh Tran camer314 Carol Willing Caspian cfoisy-osisoft ChanakyaBandara chang-zhijie Chao Wang Chen Zhiwei Chester Li Chia-liang Kao Chris Holdgraf Chris Seal Christian Alis Christian Mesh chrlunden Clancy Childs Clemens Tolboom cmw2196 Cody Scott Craig Willis cristofercri Curtis Maves cybertony Daisuke Taniwaki Dalon Lobo danamer Daniel Bachler Daniel Chalef Daniel Hnyk danielpcs Danny H DataVictorEngineer Dave Hirschfeld Dave Porter David Andersen David John Gagne Davide Deleted user Denis Shestakov Dennis Kipping Derek Ludwig DerekHeldtWerle DewinGoh Diogo djknight1 DmitrII Gerasimenko Doug Blank Dr. Di Prodi Dr. Zoltán Katona Dylan Nelson ebebpl Eliran Bivas eode Eran Pinhas eric-leblouch ericblau Erik LaBianca Erik Sundell Ermakov Petr erolosty Evan Savage Evert Rol Ezequiel Gioia fahadabbas91 farzadz foxlisimulation frouzbeh Félix-Antoine Fortin Gabriel Abdalla Cavalcante Gabriel Fair Gaetan Semet Gang Chen Gary Lucas Georgiana Elena gerroon Giuseppe Attardi Glen A Knight Gonzalo Fernandez ordas Guilherme Oenning Guo Zhang gweis Gábor Lipták Hagen Hoferichter hani1814 Hans Permana hhuuggoo hichemken HT-Moh HuangHenghua HuiWang Ian Carroll Ian Stuart Ivan Brezina J Forde J Gerard j08rebelo Jacob Matuskey Jacob Tomlinson Jaime Ferrando Huertas James Swineson jameshgrn Jan Niederau Jason Belsky Jason Hu Jason Rigby jason4zhu Jeff Whitworth Jeffrey Bush jeffwji Jessica B. Hamrick jfleury-eidos Ji Ma Jiren Jin jiyer2016 jlc175 jmabry jmchandonia jmf Joe Hamman Joerg Klein John Chase John Readey John Shojaei Jonathan Terhorst Jordan Miller Josh Bode Joshua Milas JP Moresmau jpays Juan Cruz-Benito Julian Rüth Julien Chastang Justin Ray Vrooman Jürgen Hermann Kah Mun kangzebin Kelly L. Rowland Kenan Erdogan Kerwin Sun kevbutler Kevin Bates khawarhere kide007 Kim-Seonghyeon kishitaku0630 Koshmaar Koustuv Sinha krinsman Kristian Gregorius Hustad Kristiyan KSHITIJA SAHARAN Kuriakin Zeng Kyla Harper Lachlan Musicman Laurent Abbal Leo Gallucci Leopold Talirz Li-Xian Chen Lisa Stillwell ljb445300387 Loïc Antoine Gombeaud Loïc Estève Lucas Durand Lukasz Tracewski m.fab Ma mangecoeur Manish Kushwaha Marc Illien marinalopez2110 Mark Mirmelstein Marlene Silva Marchena Martin Gergov Martin Zugnoni Marvin Solano Marwan Baghdad Matthias Bussonnier Matthias Klan Matthias Lee Matthieu Boileau Max Mensing mdivk Meesam Shah Michael Carroll Michael Huttner Michael Lovci Michael McCarthy Michael Milligan Michael Pilosov michec81 Mike Croucher MikeSpark Min RK MisterZ Moritz Kirschner Moritz Schlarb moskiGithub mpolidori mrclttnz MubashirullahD Muhammad-Imtiaz mxcheng2011 myidealab Naineel Shah narala558 newturok Ney Torres Nic Wayand Nico Bellack nifuki Nils Werner not4everybody NotSharath nschiraldi Nujjy oscar6echo Paperone80 Patafix Paul Mazzuca Paul Shealy Paulo Roberto de Oliveira Castro Pav K payalbhatia Peter Parente Peter Reid Phil Elson Phil Fenstermacher Philipp Kats phpdistiller phxedmond Piotr Pouria Hadjibagheri powerLeePlus Pratik Lal pydeepak Qcy R. C. Thomas raghav130593 Rahul Sharma Rama Krishna Jinka RBALAJI5 rbq Richard C Gerkin Richard Darst Richard Huntrods richyanicky Rob Nagler robin robotsp rothwewi rushikeshraut777 Ryan Ryan Abernathey Ryan Lovett Ryan McGuire rzuidhof Saiprasad Balasubramanian Sam Manzer samRddhimat Santosh Saranya411 Scott Crooks sdementen SeaDude SergeyK1 Shannon Shi Pengcheng shibbas Shinichi TAMURA Shiva1789 sidebo Sigurður Baldursson Simon Li Sindre Gulseth SivaMaplelabs sjillidimudi skruse smoulderme Solaris Spencer Ogden sreekanthmg Steven B Steven Silvester StudyQuant Subhash Suchit summerswallow summerswallow-whi Søren Fuglede Jørgensen Taewon Tania Allard Taposh Dutta Roy techie879 ThibTrip Thomas Mendoza thomas-rabiller-azimut Thong Kuah thongnnguyen Tim Crone Tim Head Timothy Griffiths Timothy Liu Todd Gamblin Tom Tomer Leibovich tregin Tren Huang Tuhina Chatterjee Tyler Gregory Uday Udit Arora Vasu Gaur Victor Lopez Vidit Agarwal VidJa Vincent Feng vishal49naik49 Vivek Vivek Rai vivekbiet Vlad-Mihai Sima Volker Braun wangcong Wangsoo Kim whositwhatnow Will Will Starms Willem Pienaar Xavier Lange YborBorn YizTian Yoav Tzelnick YoongHM yugushihuang Yuvi Panda Yuze Ma Zac Flamig Zach Day Zachary Sailer Zafer Cesur zmkhazi zneudl 田进 邱雨波 高彦涛

0.7#

0.7.0 - Alex Blackwell - 2018-09-03#

此版本包含 JupyterHub 0.9.2 版、额外的配置选项以及各种错误修复。

重要提示: 本次升级将要求您的用户在某个时间点停止工作并重启其 Pod。您可能需要提前通知他们,或者在夜间没有活跃用户时进行升级。

从 v0.6 升级#

如果您正在运行 chart 的 v0.5 版本,您应首先升级到 v0.6,然后再升级到 0.7.0。您可以通过运行 helm list 来查看您正在使用的版本。

请按照以下步骤从 v0.6 升级到 0.7.0

1. (可选)确保 Hub 和用户的数据不会丢失#

此步骤是可选的,但当 Hub 和用户的数据被认为重要时,这是一个推荐的保障措施。这些更改使得即使 PersistentVolumeClaims (PVCs) 被删除,代表存储(用户数据和 Hub 数据库)的 PersistentVolumes (PVs) 仍然保留。这样做的缺点是,当您想停止为存储付费时,需要手动清理 PVs。

# The script is a saftey measure and patches your PersistentVolumes (PV) to
# not be garbage collected if the PersistentVolumeClaim (PVC) are deleted.
NAMESPACE=<YOUR-NAMESPACE>

# Ensure the hub's and users' data isn't lost
hub_and_user_pvs=($(kubectl get persistentvolumeclaim --no-headers --namespace $NAMESPACE | awk '{print $3}'))
for pv in ${hub_and_user_pvs[@]};
do
    kubectl patch persistentvolume $pv --patch '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}'
done
2. 更新 Helm(需要 v2.9.1+)#
# Update helm
curl https://raw.githubusercontent.com/kubernetes/helm/HEAD/scripts/get | bash

# Update tiller (on the cluster)
helm init --upgrade --service-account=tiller

# Verify the update
# NOTE: you may need to cancel and re-run the command, it should work within 30
#       seconds.
helm version
# VERIFY: Did it return both the client and server version?
# Client: &version.Version{SemVer:"v2.10.0", GitCommit:"9ad53aac42165a5fadc6c87be0dea6b115f93090", GitTreeState:"clean"}
# Server: &version.Version{SemVer:"v2.10.0", GitCommit:"9ad53aac42165a5fadc6c87be0dea6b115f93090", GitTreeState:"clean"}
3. (可选)清理预拉取器资源#

v0.6 版本的预拉取器组件在完成后可能会留下资源,而不是自行清理。此脚本将删除由 v0.6 创建的预拉取器资源。

# This script will delete resources that were meant to be temporary
# The bug that caused this is fixed in version 0.7.0 of the Helm chart
NAMESPACE=<YOUR-NAMESPACE>

resource_types="daemonset,serviceaccount,clusterrole,clusterrolebinding,job"
for bad_resource in $(kubectl get $resource_types --namespace $NAMESPACE | grep '/pre-pull' | awk '{print $1}');
do
    kubectl delete $bad_resource --namespace $NAMESPACE --now
done

kubectl delete $resource_types --selector hub.jupyter.org/deletable=true --namespace $NAMESPACE --now
5. 执行升级#

重要提示: 不要漏掉 --force 标志!由于 0.7 版本中 JupyterHub 资源的标签发生了变化,--force 是必需的。如果没有 --force,Helm 无法从 0.6 的标签方案升级到 0.7,--force 会删除并重新创建部署。

RELEASE_NAME=<YOUR-RELEASE-NAME>
NAMESPACE=<YOUR-NAMESPACE>

helm repo add jupyterhub https://hub.jupyter.org/helm-chart/
helm repo update

# NOTE: We need the --force flag to allow recreation of resources that can't be
#       upgraded to the new state by a patch.
helm upgrade $RELEASE_NAME jupyterhub/jupyterhub --install \
    --force \
    --version=0.7.0 \
    --namespace=$NAMESPACE \
    --values config.yaml \
    --timeout 1800
6. 管理活跃用户#

拥有正在运行的 Pod 的活跃用户必须重启他们的 Pod。如果他们不这样做,下次尝试访问其服务器时可能会遇到 {“error”: “invalid_redirect_uri”, “error_description”: “Invalid redirect URI”} 的错误。

您有权强制执行此操作,但这会中断他们当前正在进行的工作。如果您希望他们能按自己的节奏进行,可以使用 /hub/admin 路径,在他们完成后手动关闭其服务器。

NAMESPACE=<YOUR-NAMESPACE>

# Inspect what users are currently running
kubectl get pod --selector component=singleuser-server --namespace $NAMESPACE

# Force all of them to shutdown their servers, and ensure the hub gets to
# realize that happened through a restart.
kubectl delete pod --selector component=singleuser-server --namespace $NAMESPACE
kubectl delete pod --selector component=hub --namespace $NAMESPACE
故障排查 - 清理集群#

如果出现问题,您可以在安装 chart 之前尝试以下操作。如果您决定采取这些步骤,我们建议首先执行第 1 步以避免数据丢失,并确保通过下面的故障排查步骤使旧数据可用。

RELEASE_NAME=<YOUR-RELEASE-NAME>

# WARNING: Deletes everything installed by the Helm chart!
# WARNING: If you have not changed the reclaim policy of the hub in step 1, the
#          hub never be able to remember anything about past users. Also note
#          that even if you have taken step 1, you must also make the PVs become
#          `Available` again before the hub starts up again.
# NOTE: This does not include user pods or user storage PVCs as they have been
#       indirectly created by KubeSpawner
helm delete $RELEASE_NAME --purge

# WARNING: Deletes everything within the namespace!
# WARNING: If you have not changed the reclaim policy of the hub and users in
#          step 1, the hub's stored information about the users and the user's
#          storage will be lost forever. Also note that even if you have taken
#          step 1, you must also make the hub and users PVs become `Available`
#          before the hub and users startup again.
kubectl delete namespace <YOUR-NAMESPACE>

如果您执行了这些步骤和第 1 步,您现在应该继续下一个关于将 Released 状态的 PV 变为 Available 以便重用的故障排查部分。

故障排查 - 将 Released 状态的 PV 变为 Available 以便重用#

如果您遵循了第 1 步和第 2 步,在清理集群后,如果在重新安装 Helm chart 之前执行此步骤,您可以重用旧 Hub 和用户的存储。

用更技术的术语来说:如果您删除了如 hub-db-dirclaim-anyusername 这样的 PVC,它们的 PV 将处于 Released 状态,前提是它们的 reclaimPolicy 设置为 Retain。要再次使用这些 PV,我们必须将它们的状态变为 Available,以便未来的 PVC 在需要绑定 PV 时可以使用它们。

NAMESPACE=<YOUR-NAMESPACE>

# Ensure the hub's and users' PVs are made `Available` again
hub_and_user_pvs=($(kubectl get persistentvolume | grep -E "Released.+$NAMESPACE/(hub-db-dir|claim-)" | awk '{print $1}'))
for pv in ${hub_and_user_pvs[@]};
do
    kubectl patch persistentvolume $pv --patch '{"spec":{"claimRef":{"uid":null}}}}'
done

# Ensure you don't have any PVCs in the lost state
lost_pvcs=($(kubectl get persistentvolumeclaim --namespace $NAMESPACE | grep -E "(hub-db-dir|claim-).+Lost" | awk '{print $1}'))
for pvc in ${lost_pvcs[@]};
do
    echo kubectl delete persistentvolumeclaim $pvc --namespace $NAMESPACE
done

贡献者#

A. Tan Aaron Culich abhismvit AC AcademicAdmin Adam Grant Adam Huffman Adam Thornton Adam Tilghman Adam-Origamiiris Afreen Rahman agustaf agustiin aisensiy Ajay Changulani Akhil Lawrence akkibatra Alan King Albert J. de Vera Alejandro del Castillo Alejandro Gastón Alvarez Aleksandr Blekh Alex Leith Alex Marandon Alex Mellnik Alex Moore Alex Morreale Alex Tasioulis Alexander Alexander Hendorf Alexander Kruzhkov Alexander Morley Alexander Schwartzberg Allen Downey AlphaSRE Alramzey amangarg96 Amirahmad Khordadi Amit Rathi Analect anasos Andre Celere Andrea Abelli Andrea Turrini Andrea Zonca Andreas Heider Andrew Berger Andrew Melo andrewcheny András Tóth André Luiz Diniz Andy Berner Andy Doddington angus evans Anirudh Vyas Ankit Ankit Sharma ankit2894 Anthony Suen Anton Akhmerov Antonino Ingargiola Antonio Serrano AranVinkItility Arda Aytekin Ariel Balter Ariel Rokem arkroop Arthur arthur Arthur Koziel ArvinSiChuan aseishas at-cchaloux atullo2 Bastian Greshake Tzovaras bbarney213 bbrauns Ben Chuanlong Du Benjamin Paz Benoit Rospars BerserkerTroll BhagyasriYella bhavybarca Birgetit bitnik Borislav Aymaliev Botty Dimanov Brad Skaggs Brandon Sharitt Brent Brian E. Granger Brian Ray Bruce Beauchamp Bruce Chiarelli Byă Camilla Camilo Núñez Fernández Cara carluri Carol Willing Caspian chack05 chang-zhijie chaomaer chaoyue729 Charles Forelle chenyg0911 Chester Li Chia-liang Kao Chico Venancio Chris Fournier Chris Holdgraf Chris Seal Chris Van Pelt Christiaan Swanepoel Christian Alis Christian Hotz-Behofsits Christian Mesh Christian Moscardi Christine Banek Christopher Hench ckbhatt Claudius Mbemba cloud-science Cody Scott Cord Cory Johns cqzlxl Craig Willis Curtis Maves cyberquasar cybertony cyberyor Daisuke Taniwaki daleshsd Dan Allan Dan Hoerst Dan Lidral-Porter Daniel Daniel Morrison danielmaitre danielrychel Dario Romero darky2004 DataVictorEngineer Dave Aitken Dave Hirschfeld David Bath David Doherty David Kügler David Maxson David Napier David Pérez Comendador David Pérez-Suárez David Sanftenberg Davide deep-42-thought Deleted user DerekHeldtWerle Dhawal Patel disimone DmitrII Gerasimenko Dmitry Mishin Dominic Suciu Don Kelly Doug Holt Dragos Cojocari dturaev Dwight Townsend Dylan Lentini Eamon Keane Eddy Elbrink Emmanuel Gomez Enol Fernández epoch1970 Eric Charles Erik Sundell Ermakov Petr ernestmartinez EtienneDesticourt Evan Evan Van Dam Evert Rol eylenth Ezequiel Gioia fahadabbas91 Faras Sadek forbxy Francisco Zamora-Martinez FU Zhipeng Fyodor Félix-Antoine Fortin G YASHASVI Gaetan Semet Gaëtan Lehmann gbrahmi George Jose Gerben Welter Gerhard Burger GladysNalvarte Glen A Knight Graham Dumpleton grant-guo GRC Guillaume EB guimou Guo Zhang gweis Hagen Hoferichter hanbeibei hani1814 Hans Petter Bieker happytest143 Hassan Mudassir Helder Rodrigues hemantasingh Henddher Pedroza hjclub123 huhuhang Hunter Jackson Ian Indrajeet Singh ironv IssacPan Ivan Grbavac J Forde J Gerard Jacob Tomlinson James Curtin James Davidheiser James Londal James Veitch Jan Kalo Jason Kuruzovich Jason Williams jason4zhu javin-gn Jeremie Vallee Jeremy Lewi Jeremy Tuloup Jerry Schuman Jesse Cai Jesse Kinkead Jesse Zhang Jessica Wong Jim Basney Jim Hendricks Jiri Kuncar jlsimms jm2004 Joakim JocelynDelalande Joe Hamman Joel Pfaff John Kaltenbach John Readey johnbotsis johnkpark johnpaulantony Jonas Adler Jonathan Jonathan Brant Jonathan Wheeler jonny86 Joost W. Döbken Jose Manuel Monsalve Diaz Josh Barnes Josh Temple João Barreto jpolchlo JPUnD Juan Cabanela Julien Chastang Jurian Kuyvenhoven Justin Holmes Justin Moen justkar4u JYang25 Jürgen Hermann kakzhetak kaliko Kam Kasravi Kannan Kumar karthikpitchaimani Kenneth Lyons Kevin P. Fleming kevkid Kirill Dubovikov Knarfux Ko Ohashi krinsman KrisL Kristiyan lambertjosh Lars Biemans Leo Gallucci leolurunhe Leopold Talirz LeoPsidom lfzyx lgc019 Lifubang liusztc09 liuzhliang llancellotti lmerli84 loginoff Louis Garman Luca De Feo Luca Grazioli Lucas Durand Lucas Kushner Lukasz Lempart Lukasz Tracewski Lutz Behnke M Pacer Maciej Sawicki madsi1m mak-aravind Malin Aandahl Manjukb Marc BUFFAT marciocourense Marco Pleines Marcus Hunger Marcus Levine Mario Campos Marius van Niekerk Mark Mirmelstein marmaduke woodman Martin Forde Martín Anzorena maryamdev Mas mascarom Mathew Blonc Matt Hansen Matteo Ipri matthdan Matthew Bray Matthew Rocklin Matthias Bussonnier Matthias Klan mattvw Max Joseph Maxim Moinat mdivk Mereep merlin1608 Micah Micah Smith Michael Huttner Michael Milligan Michael Ransley michec81 Michele Bertasi Miguel Caballer Mike Hamer Min RK MincingWords MisterZ mohanamurali7 Mohit Monica Dessole moskiGithub mrkjones1979 mzilinski n3f Naeem Rashid Naineel Shah NaizEra nauhpc ndiy Neelanshu92 Nehemiah I. Dacres Neth Six ngokhoa96 Nick Brown Nickolaus D. Saint nickray Nico Bellack Nicolas M. Thiéry Nikolay Dandanov Nikolay Voronchikhin niveau0 Norman Gray ogre0403 Ola Tarkowska oneklc OpenThings ormskirk77 P.J. Little Pat W Patafix Paul Adams Paul Laskowski Paul Mazzuca Paulo Roberto de Oliveira Castro Pav K pedrovgp pekosro Peter Majchrak pgarapon Phil Fenstermacher philippschw Phuong Cao picca Pierre Accorsi Pinakibiswasdevops Pius Nyakoojo pjamason Pouria Hadjibagheri Prabhu Kasinathan Pramod Rizal Pranay Hasan Yerra Prateek prateek2408 Prerak Mody Przybyszo psnx pydo pyjones1 R. C. Thomas Rachidramadan1990 radudragusin Rafael Ladislau Rafael Mejia raghu20ram raja Ramin Ranjit Raphael Nestler RaRam Raviraju Vysyaraju reddyvenu Ricardo Rocha Rich Signell Richard Caunt Richard Darst Richard England Richard Ting Rizwan Saeed Rob Robert Casey Robert Drysdale Robert Jiang Robert Schroll robin Robin Robin Scheibler roemer2201 Rok Roškar Roman Gorodeckij roversne Roy Wedge Royi Rui Zhang Ruslan Usifov Ryan Abernathey Ryan Lovett rydeng sabarnwa sabyasm sadanand25 Sam Manzer Sambaiah Kilaru samy Sangram Gaikwad sanjaydatasciencedojo Sanmati Jain saransha Saranya411 sarath145p Satendra Kumar saurav maharjan saurs saurav SB sbailey-auro Scott Crooks Scott Sanderson SeaDude semanticyongjia serlina Seshadri Ramaswami shalan7 Shana Matthews Shannon Shantanu Singh Shengxin Huang shilpam11 Shiva Prasanth shreddd Shuo YU Sigurður Baldursson Simon Li Sirawit Pongnakintr SivaMaplelabs smiller5678 srican srini_b Stanislav Nazmutdinov stczwd Stefano Nicotri Stefano Taschini Stephanie Gott Stephen Lecrenski Stephen Pascoe Stephen Sackett Steven Silvester Stéphane Pouyllau sudheer0553 Sugu Sougoumarane Suman Addanki summerswallow summerswallow-whi sundeepChandhoke Sunip Mukherjee svzdvdoptum swgong Sylvain Desroziers syutbai T. George tankeryang TapasSpark Tassos Sarbanes teddy Kossoko tgamal Thomas Ashish Cherian Thomas Kluyver Thomas Mendoza thongnnguyen Thoralf Gutierrez Tim Crone Tim Freund Tim Head Tim Kennell Jr. Tim Klever Tim Shi TimKreuzer Tirthankar Chakravarty titansmc Tobias Morville tobiaskaestner Tom Davidson Tom Kwong Tom O’Connor Tomas Barton Tommaso Fabbri Tyler Erickson tzujan uday2002 Umar Sikander UsDAnDreS Vaclav Pavlin Varun M S Victor Paraschiv vishwesh5 Vladimir Kozhukalov vpvijay87 W. wangaiwudi Wei Hao weih1121 weimindong2016 whitebluecloud whositwhatnow will Will Starms William H William Hosford wtsyang XIAHUALOU xuhuijun Y-L-18 yee379 yeisonseverinopucv Yiding Yifan Li yougha54 Youri Noel Nelson yuandongfang Yueqi Wang yugushihuang Yuhi Ishikura Yuval Kalugny Yuvi Panda Zac Flamig Zachary Sailer Zachary Zhao ZachGlassman zaf Zafer Cesur zearaujo07 Zeb Nicholls Zelphir Kaltstahl ZenRay zero zeusal Zhongyi Zhou (Joe) Yuan ziedbouf zlshi zmkhazi Zoltan Fedor zyc Øystein Efterdal 孙永乐 张旭 武晨光 陈镇秋

0.6#

0.6 - Ellyse Perry - 2017-01-29#

此版本主要侧重于更好地支持自动扩缩、Microsoft Azure 支持以及更好的默认安全性。此外,还包含了大量的错误修复和可配置性改进!

重大变更#

预拉取器配置#

在之前的版本(v0.5)中,如果您想禁用预拉取器,您会使用

prePuller:
  enabled: false

现在,要禁用预拉取器,您需要使用

prePuller:
  hook:
    enabled: false

有关更多信息,请参阅预拉取器文档

从 0.5 升级#

此版本从 v0.5 升级无需任何特殊步骤。有关常规升级步骤,请参阅升级文档

如果您正在运行 chart 的 v0.4 版本,您应首先升级到 v0.5,然后再升级到 v0.6。您可以通过运行 helm list 来查看您正在使用的版本。

故障排查#

如果您的 helm 升级因 no Ingress with the name "jupyterhub-internal" found 错误而失败,您可能遇到了一个 helm 漏洞。要解决此问题,请运行 kubectl --namespace=<YOUR-NAMESPACE> delete ingress jupyterhub-internal 并重新运行 helm upgrade 命令。请注意,这会导致您的 Hub 在 HTTPS 上短暂不可用,一旦部署升级完成,即可恢复正常可用性。

新功能#

默认更安全#

z2jh 在 0.6 版本中默认更加安全。我们现在默认阻止对云安全元数据端点的访问。

有关更多详细信息,请参阅安全文档。该文档已有多项改进,我们建议您通读一遍!

自动扩缩改进#

一些云提供商支持 Kubernetes 节点自动扩缩器,它可以根据集群的使用情况添加或删除节点。在此版本中,我们进行了一些更改,以使 z2jh 能更好地与自动扩缩器交互!

  • 配置 z2jh 以将您的用户“打包”到节点上,而不是将他们“分散”到各个节点。

  • 一个“持续”的预拉取器,可以轻松地在新节点上拉取用户镜像,从而为新节点上的用户提供更快的启动时间。([链接])

  • Hub 和 Proxy Pod 不会被自动扩缩器中断,这得益于使用 PodDisruptionBudget。Hub 和 Proxy 也会尽可能地保持在一起,从而最大限度地减少无法被自动扩缩器缩减的节点数量。

要实现良好的自动扩缩支持还有更多工作要做,但这已经是一个很好的开始!

更好的 Azure 支持#

此版本更好地支持 Azure 的新托管 Kubernetes 服务 (AKS)!

  • 我们现在有关于在 Azure 上使用 z2jh 的更完善的文档!

  • 我们重写了预拉取器,使其可以在 Azure 上运行(之前无法运行)。

Azure AKS 仍处于预览模式,因此在用于任何生产工作负载之前请注意这一点!

有关更多信息,请参阅在 Microsoft AKS 上设置 Kubernetes 部分。

更好的可配置性#

我们现在有更好的文档和关于可配置性的错误修复!

  • extraConfig 可以是一个字典,而不仅仅是一个字符串。当您需要为复杂的部署将 config.yaml 拆分为多个文件时,这会很有帮助。

  • 用户存储的默认工作方式已在文档中有更好的说明

  • 现在从 extraConfigMap 中读取 extraConfig 中的配置可以正常工作了!

  • 您可以配置用户登录后被定向到的 URL。这允许默认将用户导向 JupyterLab

  • 您现在可以预先拉取多个镜像,以满足需要多个镜像的自定义配置。

  • 关于使用 nbgitpuller 预填充用户文件系统的更好说明

Ellyse Perry#

(摘自 https://www.cricket.com.au/players/ellyse-perry/1aMxKNyEOUiJqhq7N5Tlwg)

Ellyse Perry 可以说是澳大利亚最优秀的运动员,这位板球和足球双料国际选手的知名度持续上升,她曾代表国家参加过这两种体育项目的世界杯。

2007 年 7 月,在达尔文举行的玫瑰碗系列赛第二场单日国际赛中,Perry 首次亮相,成为澳大利亚有史以来参加高级国际板球比赛的最年轻球员,当时她还未满 17 岁。

在 2007-08 赛季的全国女子板球联赛中,她首次亮相国内赛场,在第一场比赛中,10 轮投球拿下 2 个三柱门,失 29 分。

自从佩里首次代表国家队出场以来,她已成为“南极星”(澳大利亚女子板球队昵称)的常客,参加了 2009 年的 ICC 女子世界杯和同年的 ICC 女子 Twenty20 世界杯。

作为澳大利亚队的保龄球攻击线领袖,佩里在 2010 年西印度群岛举行的 ICC 女子 Twenty20 世界杯决赛中发挥了至关重要的作用。

比赛进行到最后一刻,新西兰队需要从最后一球中得到五分才能夺冠。在巨大的压力下,佩里投出了本届锦标赛的最后一球,新西兰队的苏菲·德文(Sophie Devine)直接将球击出。

这位才华横溢的足球运动员伸出靴子,将球挡向了位于中场内侧的丽莎·斯塔莱卡(Lisa Sthalekar),为澳大利亚队锁定了冠军奖杯。佩里在决赛中以 18 分的代价拿下 3 个三柱门的成绩,让她获得了“本场最佳球员”奖。

佩里在澳大利亚队三次蝉联世界 T20 冠军的过程中表现出色,并于 2012 年和 2014 年入选赛事最佳阵容。

2017 年,她被评为ICC 年度最佳女板球运动员

贡献者#

没有 zero-to-jupyterhubKubeSpawner 仓库的优秀贡献者们,这个版本是不可能完成的。我们想感谢自上一个 Zero to JupyterHub 版本发布以来,以任何形式做出贡献的每一个人——包括提交问题、评论问题、提交 PR 和进行审查。

按字母顺序排列,

0.5#

0.5 - 哈米德·哈桑 - 2017-12-05#

JupyterHub 0.8、HTTPS 和可扩展性。

从 0.4 升级#

有关升级步骤,请参阅升级文档

新功能#

JupyterHub 0.8#

JupyterHub 0.8 充满了新功能——更多详情请参阅更新日志。专门为此图表设计的功能有:

  1. 在大规模使用时不再出现“重定向次数过多”的错误。

  2. 大量的性能改进,我们现在知道可以处理多达 4000 个活跃用户。

  3. 并发生成限制(通过 hub.concurrentSpawnLimit 设置)可用于限制在任何给定时间可以尝试在 Hub 上启动的并发用户数。这可以进行调整,以避免在数百名用户同时尝试启动时发生崩溃。它会向用户显示友好的错误消息,并要求他们稍后重试,而不是永远旋转等待。

  4. 活动服务器限制(通过 hub.activeServerLimit 设置)可用于限制在任何给定时间可以使用 Hub 的总活跃用户数。这允许管理员控制其集群的大小。

  5. 内存限制和保证(通过 singleuser.memory 设置)现在可以包含小数单位。所以你可以写 0.5G,而无需使用 512M

以及更多功能!

更轻松的 HTTPS#

作为软件作者,我们有责任让管理员能够非常轻松地为他们的用户设置 HTTPS。v0.5 使这比 v0.4 容易得多。您可以在这里找到新的说明,它们要简单得多!

您现在也可以使用自己的 HTTPS 证书和密钥,而不是使用 Let’s Encrypt。

支持更多认证器#

已添加以下新的身份验证提供商

  1. GitLab

  2. CILogon

  3. Globus

您还可以通过在 auth.whitelist.users 中添加用户列表来设置白名单。

更轻松地自定义 jupyterhub_config.py#

您可以随时将额外的 jupyterhub_config.py 配置片段放在 hub.extraConfig 中。现在,您还可以在 hub.extraEnv 中为 Hub 添加额外的环境变量,并通过 hub.extraConfigMap 添加额外的 ConfigMap 项目。ConfigMap 项目可以是任意的 YAML,您可以通过 hub.extraConfig 中的 get_config 函数来读取它们。这使得以 config.yaml 尚不支持的方式自定义 Hub 的配置变得更加清晰。

Hub 服务支持#

您还可以通过将外部 JupyterHub 服务添加到 hub.services 来添加它们。请注意,您仍然负责在某个地方实际运行该服务(也许作为部署对象)。

为用户服务器环境提供更多自定义选项#

singleuser 下添加了更多选项,以帮助您自定义用户生成时所在的环境。您可以使用 singleuser.uidsingleuser.fsGid 更改用户的 uid / gid,使用 singleuser.storage.extraVolumessingleuser.storage.extraVolumeMounts 挂载额外的卷,并使用 singleuser.extraEnv 提供额外的环境变量。

哈米德·哈桑#

哈米德·哈桑是一名快速投球手,目前效力于阿富汗国家板球队。他的昵称从“阿富汗的大卫·贝克汉姆”“兰博”不等,被许多人认为是阿富汗的第一位板球超级英雄。他目前以快速投球(时速超过145公里)、侧手翻庆祝动作、脸上涂着战争油彩以及童年时为躲避战争而逃离阿富汗而闻名。他他打球是因为“我们是我们国家的大使,我们想向世界展示阿富汗不像人们所认为的那样只有恐怖分子和这些东西。我们想让他们知道我们也有很多天才。”

贡献者#

如果没有zero-to-jupyterhub-k8sJupyterHubKubeSpawnerOAuthenticator代码仓库的杰出贡献者,这个版本是不可能完成的。我们想感谢自上一个 Zero to JupyterHub 版本发布以来,以任何形式做出贡献的每一个人——包括提交问题、评论问题、拉取请求和审查。

按字母顺序排列,

0.4#

0.4 - Akram - 2017-06-23#

稳定性、HTTPS 和重大变更。

安装和升级#

我们建议您删除软件包的先前版本并安装最新版本。如果您对 Kubernetes 非常熟悉,可以从旧版本升级,但我们仍然建议您删除并重新创建安装。

重大变更#

  • 默认情况下,用户 pod 的名称动态创建的主目录 PVC (PersistentVolumeClaim) 不再包含 userid。如果您正在为 home 目录使用动态 PVC(这是默认设置),您将需要在升级前手动重命名这些目录。否则,将创建新的 PVC,用户在查看新创建的目录时可能会感到恐慌,认为他们的主目录看起来是空的。

    请参阅PR #56了解需要更改的内容。

  • 默认情况下不再创建StorageClass。这不应影响大多数新安装,因为大多数云提供商的安装都有一个默认值(自 Kubernetes 1.6 起)。如果您使用的是旧版本的 Kubernetes,最简单的方法是升级到新版本。如果不行,您可以手动创建一个 StorageClass,一切应该会继续工作。

  • token.proxy 已被移除。请改用proxy.secretToken。如果您的 config.yaml 包含类似以下内容

    token:
      proxy: <some-secret>
    

    您应该将其更改为

    proxy:
      secretToken: <some-secret>
    

新增#

  • 感谢Jason Kuruzovich,新增了GitHub 身份验证支持

  • 新增了Ingress 支持!如果您的集群已经支持 Ingress(可能还支持自动 Let’s Encrypt),您现在可以轻松使用它。

  • 我们现在为用户 pod / PVC 添加了带有其用户名的标签

  • 支持为用户 home 目录或 hub 数据库使用静态 PVC。这使得此版本可用于那些只有一个 NFS 共享必须用于整个 hub 的集群。

  • PostgreSQL 现在是受支持的 hub 数据库后端提供商。

  • 您现在可以为 proxy-public 服务设置注解和标签。

变更#

  • 我们现在使用官方的configurable http proxy (CHP) 作为代理,而不是非官方的nchp。在大多数情况下,这应该是一个无操作(或不需要任何更改)。JupyterHub 错误可能会显示一个更友好的错误页面。

  • 此版本的 KubeSpawner 使用官方的 Kubernetes python 客户端,而不是pycurl。这在一定程度上有助于提高可扩展性。

移除#

  • 已弃用的 createNamespace 参数不再有效,同样已弃用的 name 参数也无效。您可能本来就没有使用这些参数——保留它们只是为了与非常早期的版本向后兼容。

贡献者#

此版本的发布离不开以下贡献者的出色工作(按字母顺序排列)

<3

阿克兰#

瓦西姆·阿克兰(Wasim Akram,乌尔都语:وسیم اکرم)被许多人认为是史上最伟大的快速投球手,也是反向摆动投球这门精妙艺术的创始人之一。

0.3#

0.3.1 - 2017-05-19#

KubeSpawner 更新。

  • 感谢 Daniel Rodriguez 和 ktongsc 的工作,KubeSpawner 增加了几个新功能!具体来说,我们支持了 init 容器、节点选择器、pod 生命周期钩子等。这些目前可以通过 extraConfig 覆盖来使用。

  • 通过 helm chart 轻松指定 pod 生命周期钩子!

0.3 - 2017-05-15#

部署者用户体验修复。

  • 某些更改后无需手动重启 hub - 现在它会自动重启。您可以通过以下方式在升级后禁用 hub 的自动重启

    1. 找出当前 helm 发布的修订版本

    2. 将 ‘–set revisionOverride=’ 添加到您的升级命令中。

    只有在您确切知道自己在做什么的情况下才这样做 :)

  • 所有内容的基础镜像已升级到 ubuntu 17.04。我们将来可以定义 helm chart 的支持生命周期,并届时决定基础镜像。

  • 为预拉取作业的作业名称添加时间戳。这可以避免在安装失败并需要重试时手动删除它。因为当升级失败时,发布修订版本没有改变,重试会导致“作业已存在”的错误。将时间戳添加到作业名称应该可以解决这个问题。

0.2#

0.2 - 2017-05-01#

小幅清理和功能改进。

  • 移除 cull pod,将其移入 hub pod 作为托管服务

  • 为用户 pod 设置默认 1G 内存保证

  • 允许为 Dummy Authenticator 设置静态全局密码

  • 允许从 helm 配置中为用户 pod 设置额外的静态环境变量

  • 升级 kubespawner 版本(无重大功能变化)

0.1#

0.1 - 2017-04-10#

首次公开发布。