apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: tidb-serverless-admission-auth-role
  labels:
    app.kubernetes.io/name: tidb-operator
    app.kubernetes.io/instance: tidb-operator
    app.kubernetes.io/component: admission-webhook
rules:
  - apiGroups:
      - ""
    resources:
      - persistentvolumeclaims
    verbs:
      - get
      - list
      - watch
      - create
      - update
      - delete
  - apiGroups:
      - ""
    resources:
      - pods
    verbs:
      - get
      - list
      - watch
      - update
  - apiGroups:
      - ""
    resources:
      - secrets
      - configmaps
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - ""
    resources:
      - events
    verbs:
      - create
      - patch
      - update
  - apiGroups:
      - apps
    resources:
      - statefulsets
    verbs:
      - get
      - list
      - watch
      - update
  - apiGroups:
      - pingcap.com
    resources:
      - '*'
    verbs:
      - '*'
  - apiGroups:
      - apps.pingcap.com
    resources:
      - statefulsets
    verbs:
      - '*'
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: tidb-serverless-apiserver-auth-role
  labels:
    app.kubernetes.io/name: tidb-operator
    app.kubernetes.io/instance: tidb-operator
    app.kubernetes.io/component: admission-webhook
rules:
  - apiGroups:
      - admission.tidb.pingcap.com
    resources:
      - admissionreviews
      - mutatingreviews
    verbs:
      - create
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: tidb-serverless-admission-auth-binding
  labels:
    app.kubernetes.io/name: tidb-operator
    app.kubernetes.io/instance: tidb-operator
    app.kubernetes.io/component: admission-webhook
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: tidb-serverless-admission-auth-role
subjects:
  - kind: ServiceAccount
    name: serverless-admission-webhook
    namespace: tidb-serverless
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: tidb-serverless-auth-delegator-binding
  labels:
    app.kubernetes.io/name: tidb-operator
    app.kubernetes.io/instance: tidb-operator
    app.kubernetes.io/component: admission-webhook
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: system:auth-delegator
subjects:
  - kind: ServiceAccount
    name: serverless-admission-webhook
    namespace: tidb-serverless
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: tidb-serverless-apiserver-auth-binding
  labels:
    app.kubernetes.io/name: tidb-operator
    app.kubernetes.io/instance: tidb-operator
    app.kubernetes.io/component: admission-webhook
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: tidb-serverless-apiserver-auth-role
subjects:
  - kind: User
    name: kube-apiserver
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: tidb-serverless-auth-reader-binding
  namespace: kube-system
  labels:
    app.kubernetes.io/name: tidb-operator
    app.kubernetes.io/instance: tidb-operator
    app.kubernetes.io/component: admission-webhook
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: extension-apiserver-authentication-reader
subjects:
  - kind: ServiceAccount
    name: serverless-admission-webhook
    namespace: tidb-serverless