apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: argocd-applicationset-controller
  labels:
    app.kubernetes.io/name: argocd-applicationset-controller
    app.kubernetes.io/part-of: argocd
    app.kubernetes.io/component: applicationset-controller
rules:
  - apiGroups:
      - argoproj.io
    resources:
      - applications
      - applicationsets
      - applicationsets/finalizers
    verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
  - apiGroups:
      - argoproj.io
    resources:
      - appprojects
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - argoproj.io
    resources:
      - applicationsets/status
    verbs:
      - get
      - patch
      - update
  - apiGroups:
      - ""
    resources:
      - events
    verbs:
      - create
      - get
      - list
      - patch
      - watch
  - apiGroups:
      - ""
    resources:
      - secrets
      - configmaps
    verbs:
      - get
      - list
      - watch
  # argocd-applicationset-controller leader election rules
  # Create with resourceNames fails, so use a separate rule for the lease creation
  - apiGroups:
      - coordination.k8s.io
    resources:
      - leases
    verbs:
      - create
  - apiGroups:
      - coordination.k8s.io
    resources:
      - leases
    resourceNames:
      # Defined in `cmd/argocd-applicationset-controller/commands/applicationset_controller.go`
      - 58ac56fa.applicationsets.argoproj.io
    verbs:
      - get
      - update
      - create
