以下示例场景描述了组织如何使用模板来标准化集群创建。
- 强制使用模板: 如果管理员希望所有新的 Rancher 创建的集群都具有这些设置,可以强制每个人使用一个或多个模板来创建集群。
- 与不同的用户共享不同的模板: 管理员可以给基本用户和高级用户提供不同的模板,这样基本用户会有更多受限选项,高级用户在创建集群时可以使用更多选项。
- 更新模板设置: 如果组织的安全和 DevOps 团队决定将最佳实践嵌入到新集群所需的设置中,则这些最佳实践可能会随时间而改变。如果最佳实践发生变化,模板可以更新为新版本并且从模板创建的集群可以升级到新版本模板。
- 共享模板的所有权: 当模板所有者不再希望维护模板或希望共享模板的所有权时,此场景描述如何共享模板所有权。
强制执行模板设置
假设有一个组织,管理员决定用 Kubernetes 版本 1.14 创建所有新集群。
- 首先,管理员创建一个模板,将 Kubernetes 版本指定为 1.14,并将所有其他设置标记为允许用户覆盖。
- 管理员将模板公开。
- 管理员打开模板强制功能。
结果:
- 组织中的所有 Rancher 用户都可以访问该模板。
- 标准用户使用此模板创建的所有新集群都将使用 Kubernetes 1.14,它们无法使用其他 Kubernetes 版本。默认情况下,标准用户没有创建模板的权限,因此除非与他们共享更多模板,否则此模板将是唯一可以使用的模板。
- 所有标准用户必须使用集群模板创建新集群。如果不使用模板,则无法创建集群。
通过这种方式,系统管理员在整个组织中强制使用 Kubernetes 版本,同时仍然允许最终用户配置其他所有内容。
基本和高级用户模板
假设一个组织有基本用户和高级用户。管理员希望基本用户必须使用模板,而高级用户和管理员可以根据自己的需要创建集群。
然后,管理员创建两个模板:
- 一个基本用户模板,除了访问密钥之外,几乎所有选项都被指定了
- 一个用于高级用户的模板,大多数或所有选项已启用允许用户覆盖
管理员只与高级用户共享高级模板。
管理员将基本用户的模板设置为公共模板,因此对在 Rancher 中创建的 RKE 集群的每个人来说,都有一个更严格的集群模板可以作为选项。
结果: 创建集群时,除管理员外,所有 Rancher 用户都必须使用模板。每个人都有权访问限制性模板,但只有高级用户才有权使用更为宽泛的模板。基本用户受到更多限制,而高级用户在配置其 Kubernetes 集群时有更多的自由。
更新模板和集群
假设一个组织有一个模板,它要求集群使用 Kubernetes v1.14。然而,随着时间的推移,管理人员会改变主意。他们决定希望用户能够升级集群以使用更新版本的 Kubernetes。
在这个组织中,许多集群是用一个需要 Kubernetes v1.14 的模板创建的。由于模板不允许重写该设置,因此创建集群的用户无法直接编辑该设置。
模板所有者有几个选项允许集群创建者在其集群上升级 Kubernetes:
- 在模板上指定 Kubernetes v1.15: 模板所有者可以创建指定 Kubernetes v1.15 的新模板修订版。然后使用该模板的每个集群的所有者可以将其集群升级到模板的新版本。升级此模板,允许集群创建者将其集群上的 Kubernetes 升级到 v1.15。
- 允许在模板上使用任何 Kubernetes 版本: 创建模板修订时,模板所有者还可以使用 Rancher UI 上该设置附近的开关将 Kubernetes 版本标记为允许用户覆盖。这将允许升级到此模板修订版的集群使用 Kubernetes 的任何版本。
- 允许使用补丁版本升级: 模板所有者还可以创建一个模板版本,其中 Kubernetes 版本定义为 Latest v1.14(允许补丁版本升级)。这意味着使用该版本的集群将能够获得补丁版本升级,但不允许主要版本升级。
允许其他用户控制和共享模板
假设 Alice 是个 Rancher 管理员。她拥有一个 RKE 模板,该模板反映了她的组织为创建集群而商定的最佳实践。
Bob 是一个高级用户,可以对集群配置做出明智的决策。随着最佳实践的不断更新,Alice 相信 Bob 会创建新的模板修订版。因此,她决定让 Bob 成为模板的所有者。
要与 Bob 共享模板的所有权,Alice 将 Bob 添加为模板的所有者
结果是,作为模板所有者,Bob 负责该模板的版本控制。Bob 现在可以执行以下所有操作:
- 在最佳实践更改时,修改模板。
- 禁用过时的修订版模板,以便不能用它创建新的集群。
- 删除整个模板如果组织希望朝不同的方向发展。
- 当用户使用它创建集群时,将某个修订设置为默认值。模板的最终用户仍可以选择要使用哪个修订版创建集群。
- 共享模板与指定用户共享模板,使所有 Rancher 用户都可以使用该模板,或与其他用户共享该模板的所有权。