apiVersion: argoproj.io/v1beta1
kind: ArgoCD
metadata:
name: example
namespace: spring-petclinic
spec:
applicationSet:
sourceNamespaces: (1)
- dev (2)
在非控制平面命名空间中使用 Application Sets 只是一个技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能提供对即将推出的产品功能的早期访问,使客户能够在开发过程中测试功能并提供反馈。 有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅 技术预览功能支持范围。 |
通过使用 Application Sets,您可以从单个单一存储库到多个集群一次性声明性地自动化和管理多个 Argo CD 应用程序的部署,从而获得更大的灵活性。
从 Red Hat OpenShift GitOps 1.12 版本开始,作为集群管理员,您可以除了 `openshift-gitops` 控制平面命名空间之外,通过根据您的要求显式启用和配置 `ArgoCD` 和 `ApplicationSet` 自定义资源 (CR) 来声明性地在非控制平面命名空间中创建和管理 `ApplicationSet` 资源。当您想要管理您隔离团队的 Argo CD 应用程序的部署时,此功能在多租户环境中特别有用。此功能在 Argo CD 开源项目中称为“任何命名空间中的 ApplicationSet”功能。
生成的 Argo CD 应用程序可以在任何非控制平面命名空间中创建资源。但是,应用程序本身将与 Application Set 资源位于相同的命名空间。 |
您在定义的命名空间中有一个用户定义的 集群范围的 Argo CD 实例。例如,`spring-petclinic` 命名空间。
您已 显式启用和配置 `ArgoCD` CR 中的目标命名空间以在非控制平面命名空间中管理应用程序资源。
作为集群管理员,您可以定义一组非控制平面命名空间,用户可以在其中创建、更新和协调ApplicationSet
资源。您必须根据您的需求显式启用和配置ArgoCD
和ApplicationSet
自定义资源 (CR)。
将applicationSet
规范的sourceNamespaces
参数设置为包含非控制平面命名空间
apiVersion: argoproj.io/v1beta1
kind: ArgoCD
metadata:
name: example
namespace: spring-petclinic
spec:
applicationSet:
sourceNamespaces: (1)
- dev (2)
1 | 用于创建和管理ApplicationSet 资源的非控制平面命名空间列表。 |
2 | Argo CD 服务器创建和管理ApplicationSet 资源的目标命名空间名称。 |
目前, |
验证以下基于角色的访问控制 (RBAC) 资源是否已由 GitOps 运算符创建或修改
名称 | 种类 | 用途 |
---|---|---|
|
|
用于 Argo CD ApplicationSet 控制器在集群级别监视和列出 |
|
|
用于 Argo CD ApplicationSet 控制器在目标命名空间中管理 |
|
|
用于 Argo CD 服务器通过 UI、API 或 CLI 在目标命名空间中管理 |
运算符将 |
请仔细阅读本节。错误配置可能导致潜在的安全问题。 |
在非控制平面命名空间中允许ApplicationSet
资源可能会导致通过源代码管理器 (SCM) 提供程序或拉取请求 (PR) 生成器中的恶意 API 端点泄露机密信息。为防止未经授权访问敏感信息,运算符默认情况下会禁用 SCM 提供程序和 PR 生成器,以此作为预防措施。
要使用 SCM 提供程序和 PR 生成器,请显式定义允许的 SCM 提供程序列表
apiVersion: argoproj.io/v1beta1
kind: ArgoCD
metadata:
name: example-argocd
spec:
applicationSet:
sourceNamespaces:
- dev
scmProviders: (1)
- https://git.mydomain.com/
- https://gitlab.mydomain.com/
1 | 允许的 SCM 提供程序的 URL 列表。 |
如果您使用不在允许的 SCM 提供程序列表中的 URL,Argo CD ApplicationSet 控制器将拒绝它。 |