1.4.11.4.4. Git 仓库订阅示例
1.4.11.4.4.1. 订阅 Git 仓库的特定分支和目录 复制链接链接已复制到粘贴板!
在本示例订阅中,注解 apps.open-cluster-management.io/git-path 表示订阅中订阅了频道中指定的 Git 仓库 sample_app_1/dir1 目录中的所有 Helm chart 和 Kubernetes 资源。默认情况下会在订阅中订阅 master 分支(branch)。在本示例订阅中,指定了注解 apps.open-cluster-management.io/git-branch: branch1 来订阅仓库的 branch1 分支。
备注:
-
当您使用订阅 Helm chart 的 Git 频道订阅时,资源拓扑视图可能会显示额外的
Helmrelease资源。此资源是内部应用管理资源,可以安全地忽略。
1.4.11.4.4.2. 添加 .kubernetesignore 文件 复制链接链接已复制到粘贴板!
您可以在 Git 仓库根目录中,或者在订阅注解中指定的 apps.open-cluster-management.io/git-path 目录中包含 .kubernetesignore 文件。
您可以使用此 .kubernetesignore 文件指定文件和/或子目录模式,以在订阅部署仓库中的 Kubernetes 资源或 Helm chart 时忽略它们。
您还可以使用 .kubernetesignore 文件进行精细过滤,以选择性地应用 Kubernetes 资源。.kubernetesignore 文件的特征格式与 .gitignore 文件相同。
如果没有定义 apps.open-cluster-management.io/git-path 注解,订阅会在仓库根目录中查找 .kubernetesignore 文件。如果定义了 apps.open-cluster-management.io/git-path 字段,订阅会在 apps.open-cluster-management.io/git-path 目录中查找 .kubernetesignore 文件。订阅不会在任何其他目录中搜索 .kubernetesignore 文件。
1.4.11.4.4.3. 应用 Kustomize 复制链接链接已复制到粘贴板!
如果订阅的 Git 文件夹中有 kustomization.yaml 或 kustomization.yml 文件,则会应用 kustomize。您可以使用 spec.packageOverrides 在订阅部署时覆盖 kustomization。
为了覆盖 kustomization.yaml 文件,需要在 packageOverrides 中使用 packageName: kustomization。覆盖操作会添加新条目或更新现有条目。它不会移除现有的条目。
1.4.11.4.4.4. 启用 Git Webhook 复制链接链接已复制到粘贴板!
默认情况下,Git 频道订阅每分钟克隆频道中指定的 Git 仓库,并在提交 ID 发生更改时应用更改。另外,您还可以将订阅配置为仅在 Git 仓库发送存储库 PUSH 和 PULL webhook 事件通知时应用更改。
要在 Git 仓库中配置 webhook,需要一个目标 webhook 有效负载 URL 和可选的 secret。
1.4.11.4.4.4.1. 有效负载(Payload) URL 复制链接链接已复制到粘贴板!
在 hub 集群中创建路由(ingress),以公开订阅 operator 的 webhook 事件监听程序服务。
oc create route passthrough --service=multicluster-operators-subscription -n open-cluster-management
oc create route passthrough --service=multicluster-operators-subscription -n open-cluster-management
然后,使用 oc get route multicluster-operators-subscription -n open-cluster-management 命令查找外部可访问的主机名。
webhook 有效负载 URL 是 https://<externally-reachable hostname>/webhook。
1.4.11.4.4.4.2. Webhook secret 复制链接链接已复制到粘贴板!
Webhook secret 是可选的。在频道命名空间中创建 Kubernetes secret。secret 必须包含 data.secret。
请参见以下示例:
data.secret 的值是您要使用的 base-64 编码 WebHook secret。
最佳实践:为每个 Git 仓库使用唯一的 secret。
1.4.11.4.4.4.3. 在 Git 仓库中配置 WebHook 复制链接链接已复制到粘贴板!
使用有效负载 URL 和 webhook secret 在 Git 仓库中配置 WebHook。
1.4.11.4.4.4.4. 在频道中启用 WebHook 事件通知 复制链接链接已复制到粘贴板!
为订阅频道添加注解。请参见以下示例:
oc annotate channel.apps.open-cluster-management.io <channel name> apps.open-cluster-management.io/webhook-enabled="true"
oc annotate channel.apps.open-cluster-management.io <channel name> apps.open-cluster-management.io/webhook-enabled="true"
如果您使用了一个 secret 来配置 WebHook,也需要为频道添加该注解,其中 <the_secret_name> 是包含 webhook secret 的 kubernetes secret 名称。
oc annotate channel.apps.open-cluster-management.io <channel name> apps.open-cluster-management.io/webhook-secret="<the_secret_name>"
oc annotate channel.apps.open-cluster-management.io <channel name> apps.open-cluster-management.io/webhook-secret="<the_secret_name>"
1.4.11.4.4.4.5. 启用了 webhook 的频道的订阅 复制链接链接已复制到粘贴板!
订阅中不需要特定于 webhook 的配置。