1.2. 在任意命名空间中为 pull 模型部署 Argo CD ApplicationSet 资源(技术预览)


使用 Argo CD pull 模型,您可以在 hub 集群上的任意命名空间中创建 ApplicationSet 资源。

要完全管理 Argo CD ApplicationSet 资源,请完成以下部分:

需要的访问权限:集群管理员

先决条件

1.2.1. 为标准配置部署 ApplicationSet 资源

如果您对基于角色的访问控制(RBAC)的支持有限,您可能需要为标准配置部署 ApplicationSet 资源。

对于简单的 RBAC 管理,您可以为标准配置部署 ApplicationSet 资源,为您提供以下优点:

  • 命名空间没有在 GitHub 仓库资源中指定。
  • 工作负载命名空间的目的地在 Application 模板中指定。
  • ApplicationSet 资源使用默认的 AppProject 资源。

要为标准配置部署 ApplicationSet 资源,请完成以下步骤:

  1. openshift-gitops 命名空间中,创建一个 Placement 资源。
  2. 通过添加以下 YAML 文件示例,使用默认的 AppProject 资源在 appset-2 命名空间中创建 ApplicationSet 资源:

    apiVersion: v1
    kind: Namespace
    metadata:
      annotations:
      name: appset-2
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令来应用 YAML 文件示例:

    oc apply -f namespace-example.yaml
    Copy to Clipboard Toggle word wrap
  4. 通过添加以下 YAML 文件示例,使用默认的 AppProject 资源在 appset-2 命名空间中创建 ApplicationSet 资源:

    apiVersion: argoproj.io/v1alpha1
    kind: ApplicationSet
    metadata:
      name: helloworld
      namespace: appset-2
    spec:
      generators:
      - clusterDecisionResource:
          configMapRef: acm-placement
          labelSelector:
            matchLabels:
              cluster.open-cluster-management.io/placement: all-openshift-clusters
          requeueAfterSeconds: 30
      template:
        metadata:
          annotations:
            apps.open-cluster-management.io/ocm-managed-cluster: '{{name}}'
            argocd.argoproj.io/skip-reconcile: "true"
          labels:
            apps.open-cluster-management.io/pull-to-ocm-managed-cluster: "true"
          name: '{{name}}-helloworld'
        spec:
          destination:
            namespace: helloworld
            server: https://kubernetes.default.svc
          project: default
          source:
            path: helloworld
            repoURL: https://github.com/stolostron/application-samples.git
            targetRevision: HEAD
          syncPolicy:
            automated: {}
    Copy to Clipboard Toggle word wrap
  5. 运行以下命令来应用 YAML 文件示例:

    oc apply -f applicationset-example.yaml
    Copy to Clipboard Toggle word wrap
    • ApplicationSet 资源在 hub 集群上的 appset-2 命名空间中创建。
    • 应用程序资源 部署到受管集群上的 appset-2 命名空间。
    • Application 资源将其工作负载部署到受管集群上的 Helloworld 命名空间。
    • 应用默认的 Argo CD AppProject 资源配置
    • GitHub 存储库指定路径中定义的所有应用程序资源都不特定于命名空间。

1.2.2. 为高级配置部署 ApplicationSet 资源

如果支持基于角色的访问控制(RBAC),则可以选择为高级配置部署 ApplicationSet 资源。

您可以使用更多 RBAC 管理为高级配置部署 ApplicationSet 资源,为您提供以下优点:

  • GitHub 仓库资源中指定的应用程序资源工作负载命名空间。
  • ApplicationSet 资源中指定的工作负载命名空间的目的地与 GitHub 存储库匹配。
  • ApplicationSet 资源对 RBAC 控制使用自定义 Argo CD AppProject 资源。

要为高级配置部署 ApplicationSet 资源,请完成以下步骤:

  1. openshift-gitops 命名空间中,创建一个 Placement 资源。
  2. 通过添加以下 YAML 文件示例,使用自定义 bgdk AppProject 资源在 bgdk 命名空间中创建 ApplicationSet 资源:

    apiVersion: v1
    kind: Namespace
    metadata:
      annotations:
      name: bgdk
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令来应用 YAML 文件示例:

    oc apply -f namespace-example.yaml
    Copy to Clipboard Toggle word wrap
  4. 通过添加以下 YAML 文件示例,在 OpenShift GitOps 命名空间中设置 bgdk AppProject 资源配置:

    apiVersion: argoproj.io/v1alpha1
    kind: AppProject
    metadata:
      name: bgdk
      namespace: openshift-gitops
    spec:
      sourceNamespaces:
      - bgdk
      sourceRepos:
      - https://github.com/redhat-developer-demos/openshift-gitops-examples.git
      destinations:
      - namespace: bgdk
        server: https://kubernetes.default.svc
      clusterResourceWhitelist:
      - group: ''
        kind: Namespace
    Copy to Clipboard Toggle word wrap
    • sourceNamespaces 是创建 应用程序本身 的命名空间。
    • sourceReposApplication 模板使用的存储库。
    • 目的地应用程序部署 其工作负载的命名空间。
    • clusterResourceWhitelist 是允许应用程序部署的集群范围的资源列表。在这种情况下,此命名空间类型是强制的,因为 Application 必须创建新命名空间。
  5. 运行以下命令来应用 YAML 文件示例:

    oc apply -f appproject-example.yaml
    Copy to Clipboard Toggle word wrap
  6. 通过添加以下 YAML 文件示例,将自定义 Argo CD AppProject 资源配置应用到 ApplicationSet 资源:

    apiVersion: argoproj.io/v1alpha1
    kind: ApplicationSet
    metadata:
      name: bgdk-2
      namespace: bgdk
    spec:
      generators:
      - clusterDecisionResource:
          configMapRef: acm-placement
          labelSelector:
            matchLabels:
              cluster.open-cluster-management.io/placement: all-openshift-clusters
          requeueAfterSeconds: 30
      template:
        metadata:
          annotations:
            apps.open-cluster-management.io/ocm-managed-cluster: '{{name}}'
            argocd.argoproj.io/skip-reconcile: "true"
          labels:
            apps.open-cluster-management.io/pull-to-ocm-managed-cluster: "true"
          name: '{{name}}-bgdk'
        spec:
          destination:
            namespace: bgdk
            server: https://kubernetes.default.svc
          project: bgdk
          source:
            path: apps/bgd/overlays/bgdk
            repoURL: https://github.com/redhat-developer-demos/openshift-gitops-examples.git
            targetRevision: HEAD
          syncPolicy:
            automated: {}
    Copy to Clipboard Toggle word wrap
  7. 运行以下命令来应用 YAML 文件示例:

    oc apply -f applicationset-example.yaml
    Copy to Clipboard Toggle word wrap

其他资源

要了解更多有关 ArgoCD ApplicationSet 的信息,请参阅以下资源:

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat