Orbit

共享环境变量组

An environment variable group holds values that several Orbit projects need, such as a shared API key or a database credential, in one place. Link the group to the projects that need it and every…

环境变量组保存多个Orbit项目需要的值,例如共享的API密钥或数据库凭证,统一放在一个地方。将组链接到需要它的项目,其每次构建都会获得这些变量,因此轮换密钥只需编辑一次,而不是六次。

Env组的位置

打开Orbit并从顶级导航中选择Env groups。该页面标题为Shared env var groups,并将其描述为跨多个Orbit项目共享的账户级组。

组位于项目上方。项目自己的变量仍然位于其Env vars选项卡中,请参阅Environment Variables in Orbit

何时使用组

测试很简单:是否在多个项目中粘贴了相同的值?

良好候选项:

  • 每个前端使用的共享分析或错误追踪密钥。
  • 多个内部工具使用的读取副本连接字符串。
  • 整个账户都会调用的某个服务的第三方API密钥。
  • 通用的功能标志客户端令牌。

不适合的候选项:

  • 特定于某个项目的任何内容。它应该位于该项目上。
  • 在生产和预览之间不同的任何内容。组不按环境划分,因此按环境变化的值应该位于项目自己的环境变量上。

创建组

  1. 点击New group
  2. 给它一个Group name,最多64个字符。以它包含的内容命名,例如凭证所属的服务名称。
  3. 添加可选的Description
  4. 点击Create group

一个账户最多可以容纳20个组。当达到限制时,按钮显示**(limit reached)**,创建另一个会被拒绝。

创建、编辑和删除组需要账户上的所有者或管理员角色。开发者和查看者可以看到组但不能更改它们,这是有意的:组编辑会立即改变多个项目。

添加变量

打开组并使用Variables部分:

  1. 点击Add variable
  2. 输入密钥和值。
  3. 对任何敏感内容勾选Mark as secret
  4. 点击Save group

标记为机密的变量被加密存储,其值在之后不会返回给面板。列表显示密钥和**Marked as secret (hidden)**指示器,而不是值。非机密值保持可见,以便您可以一目了然地检查它们。

将变量标记为机密意味着您无法从面板读取它。这是其目的,但这也意味着该组不是密码管理器。将权威副本保存在您的团队已经保存凭证的地方,并将该组视为分发机制。

要更改机密的值,输入新值并保存。要移除变量,点击其行上的Remove并保存。

链接项目

Linked projects部分列出账户中的每个项目。点击一个项目以链接或取消链接它;链接的项目会突出显示。保存组以应用。

没有链接项目的组没有作用,该部分在您链接一个项目之前显示No projects yet

组变量在构建时注入,因此链接一个项目会影响其下一次构建,而不是当前活动的部署。如果您需要立即进行更改,请重新部署,请参阅Deploying Your Project

优先级

规则在页面上说明:组变量在构建时注入,项目级和环境级变量优先于组变量。

换句话说,最具体的获胜:

  1. 环境级变量,最高优先级。
  2. 项目级变量。
  3. 组变量,最低。

这个顺序很有用,而不仅仅是技术细节。在组中设置共享默认值,并在需要不同内容的一个项目上覆盖它,而无需将该项目从组中移除。有关环境层,请参阅Environment Variables Per Environment

它也解释了组最常见的混淆:您编辑组、重新部署,但没有任何改变,因为项目有自己的同名变量悄悄获胜。当组值似乎被忽略时,首先检查项目自己的Env vars选项卡。

轮换共享凭证

这是组存在的工作流:

  1. 在提供商处创建新凭证,保持旧凭证活跃。
  2. 编辑组中的值并保存。
  3. 重新部署每个链接的项目,或等待其下一次部署。
  4. 确认每个项目都在新凭证上工作。
  5. 在提供商处撤销旧凭证。

首先执行第5步会为您提供一个窗口,其中每个链接的项目立即断开,这正是共享凭证集中的风险。

删除组

点击组上的删除。确认会具体说明后果:未来的构建将失去这些变量,已完成的构建不会受到影响。

删除也会取消链接每个项目。这意味着运行的部署会继续使用它们构建时的值,每个链接项目的下一次构建则不会有这些变量。如果这些变量是必需的,该构建将失败或应用程序在运行时行为异常。

在删除之前,逐个取消链接项目并重新部署每个项目,这样您可以找出在所有项目都失去它之前,哪些项目实际上依赖于该组。

实用建议

保持组小而有目的。 每个外部服务一个组比一个巨大的"共享"组更好,因为它让您能够精确链接需要每样东西的项目。

在任何地方以相同方式命名密钥。 如果一个项目读取SENTRY_DSN,另一个读取SENTRY_KEY,共享组无法帮助您。首先标准化名称。

不要将生产凭证放在链接到具有公开预览的项目的组中。 组变量到达链接项目的每次构建,包括预览。

故障排除

构建看不到变量。 确认项目已链接并保存,以及构建在建立链接后运行。组变量从下一次构建开始应用。

运行时值错误。 同名的项目级或环境级变量正在覆盖它。检查项目的Env vars选项卡。

Create group不可用。 您已达到20个组的限制,或您的账户角色不是所有者或管理员。

机密的值显示为空白。 这是正确的。机密值在保存后不会返回给面板。

组编辑后项目断开。 在组中回滚值并重新部署,然后找出哪个项目不同意。Rolling Back a Deployment在您进行此操作时让运行的站点保持健康。

下一步

仍需帮助?

请发送邮件至 support@kapsulehost.com 或在 KPanel 中打开聊天。

打开 KPanel