|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
入门和实施指南
开发人员使用 docker pull。它快速、有效,安全问题可以稍后解决。运营团队使用 helm install,内容来自受信任的注册表——因为安全地部署到 Kubernetes 是他们的工作。这两个工作流程之间存在一个差距,产生摩擦、安全债务和临时惊喜。
SUSE Rancher 开发者访问弥补了这一差距。它将 Kubernetes 和受信任的内容直接带入开发者的本地环境,认知负担最小。本地群集由 Rancher Desktop 和其 K3s 引擎提供支持,这是一个轻量级的、生产级的 Kubernetes 发行版,同时也是 RKE2 中嵌入的引擎。从第一行代码开始,本地开发在与生产相同的运行时和内容上运行。
1.订阅激活
在您可以访问 dp.apps.rancher.io 上的受信任 OCI 注册表之前,需要激活您的 SUSE Rancher 开发者访问订阅。
1.1.激活您的订阅
在购买订阅或开始免费试用后,您的主要联系人将收到一封包含 14 个字符注册代码的履行电子邮件。
过程:激活您的访问
-
登录到 SUSE Customer Center。
-
在侧边栏中,导航到 我的工具 并选择 激活订阅。
-
在提供的字段中输入您的 注册代码。
-
将订阅与您的组织关联,然后单击 激活。
-
完成后,验证 SUSE Rancher 开发者访问 是否在 订阅 标签下显示为激活。
2.本地环境:Rancher Desktop
Rancher Desktop 提供本地群集和容器引擎。这是一个独立的应用程序,也是本指南用于运行来自 SUSE Rancher Developer Access 的受信任内容的应用程序。
2.1.容器引擎选择
在设置过程中,您必须选择一个容器引擎。无论您选择哪个选项,您的应用程序和 Kubernetes 集群的行为保持一致,使这两种选项都成为生产环境的坚实基础。K3s 是本地集群的引擎,是一个轻量级的生产级 Kubernetes 发行版,也是 RKE2 核心的嵌入式引擎。您本地运行的集群在生产环境中表现得与任何基于 containerd 的 Kubernetes 发行版相同。
容器引擎的选择影响您与本地环境的交互方式,而不是集群本身的操作方式:
-
Moby (Docker 引擎):这是大多数开发人员的推荐选择。它与 Tilt、Dev Containers 和 Testcontainers 等流行的第三方工具提供最大兼容性。
-
containerd (nerdctl):此选项旨在为希望使用与集群管理员相同模式与本地集群交互的用户提供,使用 nerdctl CLI。
3.SUSE Application Collection UI 扩展用于 Rancher Desktop
SUSE Application Collection UI 扩展用于 Rancher Desktop 自动化注册表身份验证,创建所需的 Kubernetes 拉取密钥,并提供图形界面以浏览、安装和配置来自 SUSE 应用程序集合的应用程序。[1]
3.1.安装和配置扩展
-
通过 Rancher Desktop 中的扩展选项卡安装扩展。
-
打开扩展并转到设置。
-
输入您的 SCC 用户名和在第 1.2 节中生成的词元。
-
点击保存凭据。
配置完成后,扩展会自动执行以下操作:
-
注册登录:登录到
dp.apps.rancher.io以便为您选择的容器引擎启用从 CLI 的身份验证镜像拉取。 -
拉取密钥注入:在您的默认命名空间中创建一个名为
application-collection的 Kubernetes imagePullSecret。imagePullSecret 将注册表凭据存储为 Kubernetes 对象,使集群能够从经过身份验证的注册表中拉取镜像,而无需手动配置。 -
Helm 配置:配置本地 Helm 客户端以解析受信任的 OCI 储存库。
SUSE 应用程序集合中的所有 Helm 图表都公开一个标准的 global.imagePullSecrets 参数。手动安装图表时,将此参数设置为 [application-collection] 以确保使用正确的凭据拉取所有图表依赖项。
|
UI 扩展当前提供可用作 Helm 图表的应用程序接口。您的订阅还授予访问大量独立容器镜像(基础镜像、语言栈、CLI 工具等)的权限,这些镜像尚未在扩展中显示。访问 apps.rancher.io 探索完整目录。 |
[^1]:该扩展也与 Docker Desktop 兼容。
4.为什么受信任的内容很重要
公共容器镜像的维护并不优先考虑 CVE 暴露。使用 SUSE 应用程序集合可以将全栈项目的总漏洞数量从几千减少到不到 50。
4.1.语言栈和基础镜像
未经审查的语言或基础容器可能在您编写第一行代码之前就会向您的项目引入数千个漏洞。来自公共注册表的流行镜像是为了方便而构建的,而不是为了安全。它们并没有系统地维护以最小化CVE暴露。SUSE应用程序集合语言栈建立在SLE BCI之上,这是一个SUSE积极维护和修补的最小基础层。所有受支持的运行时(包括Node.js、Go、OpenJDK等)中,继承的漏洞显著减少。 4.2.应用程序和中间件同样适用于您的栈所依赖的应用程序。来自公共注册表的广泛使用的中间件镜像可能会携带数百个CVE,这并不是因为软件本身不安全,而是因为该镜像建立在一个广泛的基础层上,并且很少维护以跟踪依赖更新。SUSE应用程序集合镜像使用最小的、经过筛选的依赖项,并且积极修补——这是一种不同的镜像组成方法,而不是延迟修补——这使得漏洞数量始终降到公共对应物的一个小部分。
5.示例开发者工作流程:快速迭代内部循环
5.1.使用Tilt和VS Code进行实时开发
本节介绍了基于*Tilt*和*VS Code*的模式,这两个流行的第三方工具是众多实际示例中的一个。
目标是一个紧凑的内部循环:您在本地编辑代码,变更会立即反映在您本地Rancher Desktop集群中的运行容器中,无需手动重建,无需推送到远程注册表,无需从头重新部署。
Rancher Desktop通过其*本地镜像存储*实现这一点。当Tilt构建一个镜像时,它会直接将其推送到K3s使用的存储中,完全绕过远程注册表。在VS Code中保存文件会触发Tilt同步,几秒钟内更新运行中的容器。基于SUSE应用程序集合基础镜像构建的应用程序,其行为与生产环境中的完全相同:相同的containerd运行时,相同的Kubernetes环境。
有状态应用程序非常适合这种模式。诸如PostgreSQL或消息代理等依赖项可以作为受信任的Helm图表一次性部署到本地群集,而应用程序容器则持续更新。整个栈在本地运行且没有外部依赖。
有关完整的设置指南和工作参考实现,请参阅 Rancher开发者访问演示储存库。
6.最佳实践和提示
6.1.固定版本并使用受信任的基础镜像
SUSE 应用程序集合不支持 :latest 标签。始终将您的 Dockerfile 和 Helm 图表固定到 apps.rancher.io 上找到的特定版本和修订标签。这确保您的环境保持可重现,并消除开发与生产之间的版本漂移。
始终使用来自受信任注册表的基础镜像:
FROM dp.apps.rancher.io/containers/suse-bci-base:15.7
6.2.新手开发者的 Kubernetes 提示
Kubernetes 引入了一些在仅使用 Docker 的工作流程中没有直接对应的概念。一些调整可以使过渡更容易:
-
通过 Ingress 进行端口转发:使用 Rancher Desktop 端口转发 UI 一键在 localhost 上暴露集群服务。为本地开发设置 Ingress 控制器是不必要的开销。
-
名称空间:扩展创建的 imagePullSecret 被注入到
default名称空间中。如果您将工作负载部署到其他名称空间,您还需要在那里创建 secret,或配置您的图表以显式引用它。 -
日志和状态:使用
kubectl logs <pod>和kubectl describe pod <pod>作为您的首选诊断工具。在本地开发过程中,大多数问题(镜像拉取失败、崩溃循环、环境变量配置错误)都会立即显现。 -
上下文感知:Rancher Desktop 将自己注册为 kubectl 上下文。如果您使用多个集群,请在运行命令之前使用
kubectl config current-context验证您的活动上下文。