1.4.11.4.4. Git 仓库订阅示例


1.4.11.4.4.1. 订阅 Git 仓库的特定分支和目录
    apiVersion: apps.open-cluster-management.io/v1
    kind: Subscription
    metadata:
      name: sample-subscription
      namespace: default
      annotations:
        apps.open-cluster-management.io/git-path: sample_app_1/dir1
        apps.open-cluster-management.io/git-branch: branch1
    spec:
      channel: default/sample-channel
      placement:
        placementRef:
          kind: PlacementRule
          name: dev-clusters
Copy to Clipboard Toggle word wrap

在本示例订阅中,注解 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.yamlkustomization.yml 文件,则会应用 kustomize。您可以使用 spec.packageOverrides 在订阅部署时覆盖 kustomization

apiVersion: apps.open-cluster-management.io/v1
kind: Subscription
metadata:
  name: example-subscription
  namespace: default
spec:
  channel: some/channel
  packageOverrides:
  - packageName: kustomization
    packageOverrides:
    - value: |
patchesStrategicMerge:
- patch.yaml
Copy to Clipboard Toggle word wrap

为了覆盖 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
Copy to Clipboard Toggle word wrap

然后,使用 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

请参见以下示例:

apiVersion: v1
kind: Secret
metadata:
  name: my-github-webhook-secret
data:
  secret: BASE64_ENCODED_SECRET
Copy to Clipboard Toggle word wrap

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"
Copy to Clipboard Toggle word wrap

如果您使用了一个 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>"
Copy to Clipboard Toggle word wrap
1.4.11.4.4.4.5. 启用了 webhook 的频道的订阅

订阅中不需要特定于 webhook 的配置。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat