1.4. 应用程序高级配置
在 Red Hat Advanced Cluster Management for Kubernetes 中,应用程序由多个应用程序资源组成。您可以使用频道、订阅和放置规则资源来帮助部署、更新和管理整个应用程序。
单集群和多集群应用程序使用相同的 Kubernetes 规格,但多集群应用程序涉及更多的部署和应用程序管理生命周期自动化。
Red Hat Advanced Cluster Management for Kubernetes 应用程序的所有应用程序组件资源都在 YAML 文件 spec 部分中定义。当需要创建或更新应用程序组件资源时,需要创建或编辑正确的 spec 部分,使其包含用于定义资源的标签。
查看以下与应用程序高级配置相关的内容:
1.4.1. 订阅 Git 资源 复制链接链接已复制到粘贴板!
默认情况下,当订阅将订阅的应用程序部署到目标集群时,即使应用程序资源与其他命名空间关联,应用程序也会部署到该订阅命名空间中。订阅管理员可以更改默认行为,如下所述。
另外,如果应用程序资源存在于集群中,且不是由订阅创建,订阅就不能在该现有资源上应用新资源。作为订阅管理员,请查看以下流程来更改默认设置。
需要的访问权限:集群管理员
1.4.1.1. 授予用户和组订阅管理员 复制链接链接已复制到粘贴板!
了解如何授予订阅管理员访问权限。
- 从控制台登录到 Red Hat OpenShift Container Platform 集群。
创建一个或多个用户。有关创建用户的信息,请参阅准备用户。
您创建的用户是
app.open-cluster-management.io/subscription
应用程序的管理员。在 OpenShift Container Platform 中,订阅管理员可以更改默认行为。您可以将这些用户组成一个组来代表订阅管理组群(在稍后会进行演示)。- 在终端中登录 Red Hat Advanced Cluster Management 集群。
使用以下命令在
open-cluster-management:subscription-admin
ClusterRoleBinding 中添加以下 subjects 内容:oc edit clusterrolebinding open-cluster-management:subscription-admin
oc edit clusterrolebinding open-cluster-management:subscription-admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注: 在初始情况下,
open-cluster-management:subscription-admin
ClusterRoleBinding 没有 subject。您的 subject 可能如下所示:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.1.2. 在 Git 中创建应用程序资源 复制链接链接已复制到粘贴板!
您需要在订阅时在资源 YAML 中指定 apiVersion
的完整组和版本。例如,如果订阅 apiVersion: v1
,订阅控制器无法验证订阅,您收到以下错误信息:Resource /v1, Kind=ImageStream is not supported
。
如果 apiVersion
被改为 image.openshift.io/v1
,如以下示例所示,它会在订阅控制器中传递验证,并且资源被成功应用。
接下来,请参阅订阅管理员如何更改默认行为的更多示例。
1.4.1.3. 应用程序命名空间示例 复制链接链接已复制到粘贴板!
在这个示例中,以订阅管理员身份登录。创建订阅以从 Git 存储库订阅示例资源 YAML 文件。示例文件包含位于以下不同命名空间中的订阅:
适用的频道类型: Git
-
ConfigMap
test-configmap-1
在multins
命名空间中创建。 -
ConfigMap
test-configmap-2
在default
命名空间中创建。 ConfigMap
test-configmap-3
在subscription
命名空间中创建。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果订阅由其他用户创建,则所有 ConfigMap 都会在与订阅相同的命名空间中创建。
1.4.1.4. 资源覆盖示例 复制链接链接已复制到粘贴板!
适用的频道类型: Git、ObjectBucket(控制台中的对象存储)
在本例中,目标集群中已存在以下 ConfigMap。
从 Git 存储库订阅以下示例资源 YAML 文件,并替换现有的 ConfigMap。查看 data
规格中的变化:
1.4.1.4.1. 默认合并选项 复制链接链接已复制到粘贴板!
请参阅带有默认 apps.open-cluster-management.io/reconcile-option: merge
注解的 Git 存储库中的以下示例资源 YAML 文件。请参见以下示例:
当此订阅由订阅管理员创建并订阅 ConfigMap 资源时,现有 ConfigMap 会被合并,如下例所示:
当使用 merge
选项时,订阅的资源中的条目会在现有资源中创建或更新。没有条目会从现有资源中删除。
重要: 如果要覆盖订阅的资源由其他操作员或控制器自动协调,资源配置由订阅以及控制器或操作员更新。在这种情况下不要使用这个方法。
1.4.1.4.2. 替换选项 复制链接链接已复制到粘贴板!
您可以以订阅管理员身份登录,并创建带有apps.open-cluster-management.io/reconcile-option: replace
注解的订阅。请参见以下示例:
当此订阅由订阅管理员创建并订阅 ConfigMap 资源时,现有 ConfigMap 将替换为以下内容:
1.4.1.5. 订阅特定的 Git 元素 复制链接链接已复制到粘贴板!
您可以订阅特定 Git 分支、提交或标签。
1.4.1.5.1. 订阅特定分支 复制链接链接已复制到粘贴板!
multicloud-operators-subscription
仓库中包含的订阅 operator 默认订阅 Git 仓库的 master
分支。如果要订阅到不同的分支,则需要在订阅中指定分支名称注解。
以下示例 YAML 文件演示了如何通过 apps.open-cluster-management.io/git-branch: <branch1>
指定不同的分支:
1.4.1.5.2. 订阅特定提交 复制链接链接已复制到粘贴板!
multicloud-operators-subscription
仓库中包含的订阅 operator 默认订阅 Git 仓库的指定分支的最新提交。如果要订阅特定提交,则需要使用订阅中的提交散列(commit hash)指定所需的提交注解。
在以下示例中,YAML 文件演示了如何通过 apps.open-cluster-management.io/git-desired-commit: <full commit number>
指定不同的提交:
git-clone-depth
注解是可选的,默认设置为 20
。这意味着订阅控制器会从 Git 存储库检索前 20 个提交历史记录。如果您指定了一个旧的 git-desired-commit
,则需要为所需的提交相应地指定 git-clone-depth
。
1.4.1.5.3. 订阅特定标签 复制链接链接已复制到粘贴板!
multicloud-operators-subscription
仓库中包含的订阅 operator 默认订阅 Git 仓库的指定分支的最新提交。如果要订阅特定标签,则需要在订阅中指定标签注解。
以下示例显示,YAML 文件显示如何通过 apps.open-cluster-management.io/git-tag: <v1.0>
指定不同的标签:
注: 如果 Git 所需的提交和标签注解都被指定,标签将被忽略。
git-clone-depth
注解是可选的,默认设置为 20
。这意味着订阅控制器从 Git 仓库检索前 20
个提交历史记录。如果指定了旧的 git-tag
,则需要为标签的所需提交相应地指定 git-clone-depth
。