apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: argo-rollouts-clusterrole
  labels:
    app.kubernetes.io/component: rollouts-controller
    app.kubernetes.io/name: argo-rollouts-clusterrole
    app.kubernetes.io/part-of: argo-rollouts
rules:
  - apiGroups:
      - argoproj.io
    resources:
      - rollouts
      - rollouts/status
      - rollouts/finalizers
    verbs:
      - get
      - list
      - watch
      - update
      - patch
  - apiGroups:
      - argoproj.io
    resources:
      - analysisruns
      - analysisruns/finalizers
      - experiments
      - experiments/finalizers
    verbs:
      - create
      - get
      - list
      - watch
      - update
      - patch
      - delete
  - apiGroups:
      - argoproj.io
    resources:
      - analysistemplates
      - clusteranalysistemplates
    verbs:
      - get
      - list
      - watch
  # replicaset access needed for managing ReplicaSets
  - apiGroups:
      - apps
    resources:
      - replicasets
    verbs:
      - create
      - get
      - list
      - watch
      - update
      - patch
      - delete
    # deployments and podtemplates read access needed for workload reference support
  - apiGroups:
      - ""
      - apps
    resources:
      - deployments
      - podtemplates
    verbs:
      - get
      - list
      - watch
  # services patch needed to update selector of canary/stable/active/preview services
  - apiGroups:
      - ""
    resources:
      - services
    verbs:
      - get
      - list
      - watch
      - patch
  # secret read access to run analysis templates which reference secrets
  - apiGroups:
      - ""
    resources:
      - secrets
    verbs:
      - get
      - list
      - watch
  # pod list/update needed for updating ephemeral data
  - apiGroups:
      - ""
    resources:
      - pods
    verbs:
      - list
      - update
  # pods eviction needed for restart
  - apiGroups:
      - ""
    resources:
      - pods/eviction
    verbs:
      - create
  # event write needed for emitting events
  - apiGroups:
      - ""
    resources:
      - events
    verbs:
      - create
      - update
      - patch
  # ingress patch needed for managing ingress annotations, create needed for nginx canary
  - apiGroups:
      - networking.k8s.io
      - extensions
    resources:
      - ingresses
    verbs:
      - create
      - get
      - list
      - watch
      - patch
  # job access needed for analysis template job metrics
  - apiGroups:
      - batch
    resources:
      - jobs
    verbs:
      - create
      - get
      - list
      - watch
      - update
      - patch
      - delete
  # virtualservice/destinationrule access needed for using the Istio provider
  - apiGroups:
      - networking.istio.io
    resources:
      - virtualservices
      - destinationrules
    verbs:
      - watch
      - get
      - update
      - patch
      - list
  # trafficsplit access needed for using the SMI provider
  - apiGroups:
      - split.smi-spec.io
    resources:
      - trafficsplits
    verbs:
      - create
      - watch
      - get
      - update
      - patch
  - apiGroups:
      - getambassador.io
    resources:
      - mappings
    verbs:
      - create
      - watch
      - get
      - update
      - list
      - delete
