---
# Source: rollout-operator/charts/crds/crds/replica-templates-custom-resource-definition.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: replicatemplates.rollout-operator.grafana.com
spec:
  group: rollout-operator.grafana.com
  versions:
    - name: v1
      served: true
      storage: true
      additionalPrinterColumns:
        - description: Status replicas
          jsonPath: .status.replicas
          name: StatusReplicas
          type: string
        - description: Spec replicas
          jsonPath: .spec.replicas
          name: SpecReplicas
          type: string
      schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              properties:
                replicas:
                  type: integer
                  default: 1
                  minimum: 0
                labelSelector:
                  type: string
            status:
              type: object
              properties:
                replicas:
                  type: integer
      subresources:
        status: { }
        scale:
          specReplicasPath: .spec.replicas
          statusReplicasPath: .status.replicas
          labelSelectorPath: .spec.labelSelector
  scope: Namespaced
  names:
    plural: replicatemplates
    singular: replicatemplate
    kind: ReplicaTemplate
    categories:
      # Include in "kubectl get all" output
      - all

---
# Source: rollout-operator/charts/crds/crds/zone-aware-pod-disruption-budget-custom-resource-definition.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: zoneawarepoddisruptionbudgets.rollout-operator.grafana.com
spec:
  group: rollout-operator.grafana.com
  versions:
    - name: v1
      served: true
      storage: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              required:
                - selector
              properties:
                maxUnavailable:
                  type: integer
                  description: The number of pods that can be unavailable within a zone or partition.
                  minimum: 0
                maxUnavailablePercentage:
                  type: integer
                  description: Calculate the maxUnavailable value as a percentage of the StatefulSet's spec.Replica count. This option is not supported when using podNamePartitionRegex.
                  minimum: 0
                  maximum: 100
                selector:
                  type: object
                  description: A selector for finding pods and statefulsets that this ZoneAwarePodDisruptionBudget applies to.
                  required:
                    - matchLabels
                  properties:
                    matchLabels:
                      type: object
                      additionalProperties:
                        type: string
                podNamePartitionRegex:
                  type: string
                  description: A regular expression for returning a partition name given a pod name. This field is optional and should only be used when the ZoneAwarePodDisruptionBudget is to be scoped to a partition, such as a multi-zone ingester deployment with ingest_storage_enabled. Enabling this changes the ZPDB functionality such that minAvailability is applied across ALL zones for a given partition. When not enabled, the minAvailability is applied to pods within the eviction zone assuming there are no disruptions in the other zones.
                podNameRegexGroup:
                  type: integer
                  minimum: 1
                  description: The regular expression group number that contains the partition name. This field is only required when the podNamePartitionRegex field is set and has more then one subexpression grouping. The default value is 1.
      subresources:
        status: {}
  scope: Namespaced
  names:
    kind: ZoneAwarePodDisruptionBudget
    plural: zoneawarepoddisruptionbudgets
    singular: zoneawarepoddisruptionbudget
    shortNames:
      - zdpb

---
# Source: rollout-operator/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: rollout-operator
  namespace: "default"
  labels:
    helm.sh/chart: rollout-operator-0.49.0
    app.kubernetes.io/name: rollout-operator
    app.kubernetes.io/instance: rollout-operator
    app.kubernetes.io/version: "v0.36.2"
    app.kubernetes.io/managed-by: Helm
---
# Source: rollout-operator/templates/webhook-clusterrole.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: rollout-operator-webhook-clusterrole
rules:
  - apiGroups:
      - admissionregistration.k8s.io
    resources:
      - validatingwebhookconfigurations
      - mutatingwebhookconfigurations
    verbs:
      - list
      - patch
      - watch
---
# Source: rollout-operator/templates/webhook-clusterrole-binding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: rollout-operator-webhook-clusterrolebinding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: rollout-operator-webhook-clusterrole
subjects:
  - kind: ServiceAccount
    name: rollout-operator
    namespace: "default"
---
# Source: rollout-operator/templates/role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: rollout-operator
  namespace: "default"
  labels:
    helm.sh/chart: rollout-operator-0.49.0
    app.kubernetes.io/name: rollout-operator
    app.kubernetes.io/instance: rollout-operator
    app.kubernetes.io/version: "v0.36.2"
    app.kubernetes.io/managed-by: Helm
rules:
- apiGroups:
  - ""
  resources:
  - pods
  verbs:
  - list
  - get
  - watch
  - delete
- apiGroups:
  - apps
  resources:
  - statefulsets
  verbs:
  - list
  - get
  - watch
  - patch
- apiGroups:
  - apps
  resources:
  - statefulsets/status
  verbs:
  - update
- apiGroups:
  - rollout-operator.grafana.com
  resources:
  - zoneawarepoddisruptionbudgets
  verbs:
  - get
  - list
  - watch
- apiGroups:
    - rollout-operator.grafana.com
  resources:
    - replicatemplates/scale
    - replicatemplates/status
  verbs:
    - get
    - patch
---
# Source: rollout-operator/templates/webhook-role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: rollout-operator-webhook-role
  namespace: "default"
rules:
  - apiGroups:
      - ""
    resources:
      - secrets
    verbs:
      - update
      - get
    resourceNames:
      - certificate
  - apiGroups:
      - ""
    resources:
      - secrets
    verbs:
      - create
---
# Source: rollout-operator/templates/rolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: rollout-operator
  namespace: "default"
  labels:
    helm.sh/chart: rollout-operator-0.49.0
    app.kubernetes.io/name: rollout-operator
    app.kubernetes.io/instance: rollout-operator
    app.kubernetes.io/version: "v0.36.2"
    app.kubernetes.io/managed-by: Helm
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: rollout-operator
subjects:
- kind: ServiceAccount
  name: rollout-operator
---
# Source: rollout-operator/templates/webhook-role-binding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: rollout-operator-webhook-rolebinding
  namespace: "default"
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: rollout-operator-webhook-role
subjects:
  - kind: ServiceAccount
    name: rollout-operator
    namespace: "default"
---
# Source: rollout-operator/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
  name: rollout-operator
  namespace: "default"
  labels:
    helm.sh/chart: rollout-operator-0.49.0
    app.kubernetes.io/name: rollout-operator
    app.kubernetes.io/instance: rollout-operator
    app.kubernetes.io/version: "v0.36.2"
    app.kubernetes.io/managed-by: Helm
spec:
  type: ClusterIP
  ports:
    - port: 443
      protocol: TCP
      targetPort: 8443
      name: https
  selector:
    app.kubernetes.io/name: rollout-operator
    app.kubernetes.io/instance: rollout-operator
---
# Source: rollout-operator/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: rollout-operator
  namespace: "default"
  labels:
    helm.sh/chart: rollout-operator-0.49.0
    app.kubernetes.io/name: rollout-operator
    app.kubernetes.io/instance: rollout-operator
    app.kubernetes.io/version: "v0.36.2"
    app.kubernetes.io/managed-by: Helm
spec:
  replicas: 1
  revisionHistoryLimit: 10
  minReadySeconds: 10
  selector:
    matchLabels:
      app.kubernetes.io/name: rollout-operator
      app.kubernetes.io/instance: rollout-operator
  strategy:
    rollingUpdate:
      maxSurge: 0
      maxUnavailable: 1
  template:
    metadata:
      namespace: "default"
      labels:
        app.kubernetes.io/name: rollout-operator
        app.kubernetes.io/instance: rollout-operator
    spec:
      serviceAccountName: rollout-operator
      securityContext:
        {}
      containers:
        - name: rollout-operator
          securityContext:
            {}
          image: docker.io/grafana/rollout-operator:v0.36.2
          imagePullPolicy: IfNotPresent
          args:
          - -kubernetes.namespace=default
          - -server-tls.enabled=true
          - -server-tls.self-signed-cert.secret-name=certificate
          - -server-tls.self-signed-cert.dns-name=rollout-operator.default.svc
          ports:
            - name: http-metrics
              containerPort: 8001
              protocol: TCP
            - name: https
              containerPort: 8443
              protocol: TCP
          readinessProbe:
            httpGet:
              path: /ready
              port: http-metrics
            initialDelaySeconds: 5
            timeoutSeconds: 1
          resources:
            limits:
              memory: 200Mi
            requests:
              cpu: 100m
              memory: 100Mi
---
# Source: rollout-operator/templates/prepare-downscale-webhook.yaml
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:
  name: prepare-downscale-default
  labels:
    grafana.com/inject-rollout-operator-ca: "true"
    grafana.com/namespace: "default"
    helm.sh/chart: rollout-operator-0.49.0
    app.kubernetes.io/name: rollout-operator
    app.kubernetes.io/instance: rollout-operator
    app.kubernetes.io/version: "v0.36.2"
    app.kubernetes.io/managed-by: Helm
webhooks:
  - name: prepare-downscale-default.grafana.com
    clientConfig:
      service:
        namespace: "default"
        name: rollout-operator
        path: /admission/prepare-downscale
        port: 443
    rules:
      - operations:
          - UPDATE
        apiGroups:
          - apps
        apiVersions:
          - v1
        resources:
          - statefulsets
          - statefulsets/scale
        scope: Namespaced
    admissionReviewVersions:
      - v1
    namespaceSelector:
      matchLabels:
        kubernetes.io/metadata.name: "default"
    sideEffects: NoneOnDryRun
    matchPolicy: Equivalent
    timeoutSeconds: 10
    failurePolicy: Fail
---
# Source: rollout-operator/templates/no-downscale-webhook.yaml
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
  name: no-downscale-default
  labels:
    grafana.com/inject-rollout-operator-ca: "true"
    grafana.com/namespace: "default"
    helm.sh/chart: rollout-operator-0.49.0
    app.kubernetes.io/name: rollout-operator
    app.kubernetes.io/instance: rollout-operator
    app.kubernetes.io/version: "v0.36.2"
    app.kubernetes.io/managed-by: Helm
webhooks:
  - name: no-downscale-default.grafana.com
    clientConfig:
      service:
        namespace: "default"
        name: rollout-operator
        path: /admission/no-downscale
        port: 443
    rules:
      - operations:
          - UPDATE
        apiGroups:
          - apps
        apiVersions:
          - v1
        resources:
          - statefulsets
          - statefulsets/scale
        scope: Namespaced
    admissionReviewVersions:
      - v1
    namespaceSelector:
      matchLabels:
        kubernetes.io/metadata.name: "default"
    sideEffects: None
    failurePolicy: Fail
---
# Source: rollout-operator/templates/pod-eviction-webhook.yaml
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
  name: pod-eviction-default
  labels:
    grafana.com/inject-rollout-operator-ca: "true"
    grafana.com/namespace: "default"
    helm.sh/chart: rollout-operator-0.49.0
    app.kubernetes.io/name: rollout-operator
    app.kubernetes.io/instance: rollout-operator
    app.kubernetes.io/version: "v0.36.2"
    app.kubernetes.io/managed-by: Helm
webhooks:
  - name: pod-eviction-default.grafana.com
    clientConfig:
      service:
        namespace: "default"
        name: rollout-operator
        path: /admission/pod-eviction
        port: 443
    rules:
      - operations:
          - CREATE
        apiGroups:
          - ""
        apiVersions:
          - v1
        resources:
          - pods/eviction
        scope: Namespaced
    admissionReviewVersions:
      - v1
    namespaceSelector:
      matchLabels:
        kubernetes.io/metadata.name: "default"
    sideEffects: None
    timeoutSeconds: 10
    failurePolicy: Fail
---
# Source: rollout-operator/templates/zone-aware-pod-disruption-budget-validating-webhook.yaml
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
  name: zpdb-validation-default
  labels:
    grafana.com/inject-rollout-operator-ca: "true"
    grafana.com/namespace: "default"
    helm.sh/chart: rollout-operator-0.49.0
    app.kubernetes.io/name: rollout-operator
    app.kubernetes.io/instance: rollout-operator
    app.kubernetes.io/version: "v0.36.2"
    app.kubernetes.io/managed-by: Helm
webhooks:
  - name: zpdb-validation-default.grafana.com
    clientConfig:
      service:
        namespace: "default"
        name: rollout-operator
        path: /admission/zpdb-validation
        port: 443
    rules:
      - operations:
          - CREATE
          - UPDATE
        apiGroups:
          - rollout-operator.grafana.com
        apiVersions:
          - v1
        resources:
          - zoneawarepoddisruptionbudgets
        scope: Namespaced
    admissionReviewVersions: ["v1"]
    namespaceSelector:
      matchLabels:
        kubernetes.io/metadata.name: "default"
    sideEffects: None
    timeoutSeconds: 10
    failurePolicy: Fail
