首页 > 其他分享 >ArgoCD AppProject CRD

ArgoCD AppProject CRD

时间:2023-12-13 16:12:58浏览次数:47  
标签:AppProject group ArgoCD kind project only CRD my resources

Project 概述

Projects负责为Application提供逻辑分组,它主要实现如下功能:
1. 限制可以部署的内容(指定受信任的Git Source仓库)
2. 限制Application可以部署到的目标位置(指定目标Cluster和Namespace)
3. 限制能够及不能够部署的对象类型,例如RBAC、CRD、DeamonSets、NetworkPolicy等
4. 定义Project Role,从而为Application提供RBAC机制,以绑定到OIDC组或JWT token

Default Project

每个应用程序都属于一个项目。如果未指定,应用程序属于default project,该项目是自动创建的,默认情况下允许从任何源存储库部署到任何集群以及所有资源种类。default project可以修改,但不能删除。
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: default
  namespace: argocd
spec:
  sourceRepos:                     # 允许从任意SourceRepos获取资源配置
  - '*'
  destinations:                    # 允许将Application部署至任意目标Cluster和NameSpace
  - namespace: '*'
    server: '*'
  clusterResourceWhitelist:        # 允许部署任意类型的资源
  - group: '*'
    kind: '*'

AppProject CRD

apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: my-project
  namespace: argocd
  # Finalizer that ensures that project is not deleted until it is not referenced by any application
  finalizers:                       # 删除终结器,当使用此终结器删除应用程序时,Argo CD 应用程序控制器将执行应用程序资源的级联删除。级联删除的默认传播策略是foreground级联删除。
    - resources-finalizer.argocd.argoproj.io
    # - resources-finalizer.argocd.argoproj.io/background
spec:
  description: Example Project      # 该Projects的描述信息
  # Allow manifests to deploy from any Git repos
  sourceRepos:                      # 可读取资源配置的Repo
  - '*'
  # Only permit applications to deploy to the guestbook namespace in the same cluster
  destinations:                     # 可部署Application的目标集群和名称空间
  - namespace: guestbook
    server: https://kubernetes.default.svc
  # Deny all cluster-scoped resources from being created, except for Namespace
  clusterResourceWhitelist:         # 可用的资源类型
  - group: ''
    kind: Namespace
  # Allow all namespaced-scoped resources to be created, except for ResourceQuota, LimitRange, NetworkPolicy
  namespaceResourceBlacklist:
  - group: ''
    kind: ResourceQuota
  - group: ''
    kind: LimitRange
  - group: ''
    kind: NetworkPolicy
  # Deny all namespaced-scoped resources from being created, except for Deployment and StatefulSet
  namespaceResourceWhitelist:
  - group: 'apps'
    kind: Deployment
  - group: 'apps'
    kind: StatefulSet
  roles:                          # 该Projects上的可用角色
  # A role which provides read-only access to all applications in the project
  - name: read-only
    description: Read-only privileges to my-project
    policies:
    - p, proj:my-project:read-only, applications, get, my-project/*, allow
    groups:
    - my-oidc-group
  # A role which provides sync privileges to only the guestbook-dev application, e.g. to provide
  # sync privileges to a CI system
  - name: ci-role
    description: Sync privileges for guestbook-dev
    policies:
    - p, proj:my-project:ci-role, applications, sync, my-project/guestbook-dev, allow
    # NOTE: JWT tokens can only be generated by the API server and the token is not persisted
    # anywhere by Argo CD. It can be prematurely revoked by removing the entry from this list.
    jwtTokens:
    - iat: 1535390316
  syncWindows:                       # 该资源的同步窗口
  - kind: allow
    schedule: '10 1 * * *'
    duration: 1h
    applications:
    - '*-prod'
    manualSync: true
  - kind: deny
    schedule: '0 22 * * *'
    duration: 1h
    namespaces:
    - default
  - kind: allow
    schedule: '0 23 * * *'
    duration: 1h
    clusters:
    - in-cluster
    - cluster1

参考文档

https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/#projects

标签:AppProject,group,ArgoCD,kind,project,only,CRD,my,resources
From: https://www.cnblogs.com/wangguishe/p/17897552.html

相关文章

  • ArgoCD Application CRD
    Application示例apiVersion:argoproj.io/v1alpha1kind:Applicationmetadata:name:guestbook#You'llusuallywanttoaddyourresourcestotheargocdnamespace.namespace:argocd#AddthisfinalizerONLYifyouwantthesetocascadedelete.......
  • ArgoCD 同步配置
    自动同步策略当ArgoCD检测到Git中所需的清单与集群中的实时状态之间的差异时,它能够自动同步应用程序。自动同步的好处是CI/CD管道不再需要直接访问ArgoCDAPI服务器来执行部署。相反,管道会提交并推送到Git存储库,并对跟踪Git存储库中的清单进行更改。PruneResour......
  • Tekton Trigger CRD
    Trigger概述Trigger指定事件监听器检测到事件时发生的情况。主要由TriggerTemplate、TriggerBinding和Interceptor组成。TriggerTemplate定义在spec.template字段上,支持引用和内联两种定义方式。TriggerBinding定义在spec.bindings字段上,支持引用和内联两种定义方式。Cluster......
  • Argocd使用说明
    一,背景概述1.0,背景知识docker虚拟化技术Kubernetes容器编排技术1.1,历史操作​ 以自身的使用经历来说明,之前在一个服务器上部署java程序的流程如下本地java-maven打包成为成果物将java程序的成果物上传到服务器上使用命令kill具体服务的进程使用命令启动java服务​ ......
  • K8S HPA在CRD Operator中的应用
    K8SHPA在TrinoOperator中的应用HPA(HorizontalPodAutoscaler)水平扩缩意味着对增加的负载的响应是部署更多的Pod。这与“垂直(Vertical)”扩缩不同,对于Kubernetes,垂直扩缩意味着将更多资源(例如:内存或CPU)分配给已经为工作负载运行的Pod。https://kubernetes.io/zh-cn/do......
  • argocd + kustomize 报错“rpc error: code = Unknown desc = Manifest generation er
    argocd+kustomize报错“rpcerror:code=Unknowndesc=Manifestgenerationerror(cached)” 报错内容报错内容为:rpcerror:code=Unknowndesc=Manifestgenerationerror(cached):`kustomizebuild.xiaowangTech/4.0/frontend/dingding-pc/manifests/overla......
  • 认识 ArgoCD
    ArgoCD官网:https://argo-cd.readthedocs.io/en/stable/应用程序的定义、配置和环境应该是声明式的,并受版本控制。应用程序部署和生命周期管理应该是自动化的、可审计的,并且易于理解。ArgoCD遵循GitOps模式,使用Git存储库作为定义所需应用程序状态的真实源。Kubernetes清单可......
  • k8s强制删除CRD
    在Kubernetes中,当你删除一个自定义资源对象时,默认情况下其实并不会真正删除。相反,Kubernetes会将该对象的状态更新为“Terminating”,并在其metadata.finalizers字段中添加一些值,以确保相关的清理工作被完成后再真正删除该对象。如果你想要强制删除一个自定义资源对象,你需要......
  • 协同文档:OT与CRDT实现协同编辑笔记
    讲协同编辑,先回顾下从BBS、邮件,到IM信息的异步传播信息的生产和消费异步发生。典型的场景如论坛,博客,文档库,邮件。我在写这篇文档的时候,你们看不到。你们看的时候,我早已写完。异步场景下,信息的生产者会谨慎的推敲措辞,以确保自己的意思被准确的传达。表达方式的丰富性很重要,除了......
  • 实现一个CRDT工具库——GCounter
    GCounter这段代码实现了一个GCounter,是一个分布式计数器,支持增加计数和合并计数器。GCounter是一种弱一致性的数据结构,可以用于分布式系统中的计数场景。其中,zero()函数......