File templates.obscpio of Package rancher-turtles-chart

07070100000000000081a400000000000000000000000168d24f0e00000b12000000000000000000000000000000000000002400000000templates/addon-provider-fleet.yamlapiVersion: turtles-capi.cattle.io/v1alpha1
kind: CAPIProvider
metadata:
  name: fleet
  namespace: '{{ .Values.rancherTurtles.namespace }}'
  annotations:
    "helm.sh/hook": "post-install, post-upgrade"
    "helm.sh/hook-weight": "2"
spec:
  enableAutomaticUpdate: true
  type: addon
  additionalManifests:
    name: fleet-addon-config
    namespace: '{{ .Values.rancherTurtles.namespace }}'
{{- if or (index .Values "cluster-api-operator" "cluster-api" "fleet" "addon" "fetchConfig" "url") (index .Values "cluster-api-operator" "cluster-api" "fleet" "addon" "fetchConfig" "selector") }}
  fetchConfig:
    {{- if index .Values "cluster-api-operator" "cluster-api" "fleet" "addon" "fetchConfig" "url" }}
    url: {{ index .Values "cluster-api-operator" "cluster-api" "fleet" "addon" "fetchConfig" "url" }}
    {{- end }}
    {{- if index .Values "cluster-api-operator" "cluster-api" "fleet" "addon" "fetchConfig" "selector" }}
    selector: {{ index .Values "cluster-api-operator" "cluster-api" "fleet" "addon" "fetchConfig" "selector" }}
    {{- end }}
{{- end }}
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: fleet-addon-config
  namespace: '{{ .Values.rancherTurtles.namespace }}'
  annotations:
    "helm.sh/hook": "post-install, post-upgrade"
    "helm.sh/hook-weight": "2"
data:
  manifests: |-
    apiVersion: addons.cluster.x-k8s.io/v1alpha1
    kind: FleetAddonConfig
    metadata:
      name: fleet-addon-config
    spec:
      config:
        featureGates:
          configMap:
            ref:
              kind: ConfigMap
              apiVersion: v1
              name: rancher-config
              namespace: cattle-system
          experimentalOciStorage: true
          experimentalHelmOps: true
      clusterClass:
        patchResource: true
        setOwnerReferences: true
      cluster:
        agentNamespace: cattle-fleet-system
        applyClassGroup: true
        patchResource: true
        setOwnerReferences: true
        hostNetwork: true
        selector:
          matchLabels:
            cluster-api.cattle.io/rancher-auto-import: "true"
          matchExpressions:
            - key: cluster-api.cattle.io/disable-fleet-auto-import
              operator: DoesNotExist
        namespaceSelector:
          matchLabels:
            cluster-api.cattle.io/rancher-auto-import: "true"
          matchExpressions:
            - key: cluster-api.cattle.io/disable-fleet-auto-import
              operator: DoesNotExist
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: cappf-controller-psa
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: fleet-controller-psa
    subjects:
    - kind: ServiceAccount
      name: caapf-controller-manager
      namespace: {{ .Values.rancherTurtles.namespace }}
07070100000001000081a400000000000000000000000168d24f0e0000014a000000000000000000000000000000000000001a00000000templates/azure-rbac.yamlapiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: caprke2-azure-aggregated-role
  labels:
    cluster.x-k8s.io/aggregate-to-capz-manager: "true"
rules:
- apiGroups:
  - bootstrap.cluster.x-k8s.io
  resources:
  - rke2configs
  verbs:
  - create
  - update
  - delete
  - get
  - list
  - patch
  - watch07070100000002000081a400000000000000000000000168d24f0e000006d5000000000000000000000000000000000000002900000000templates/clusterctl-cm-cleanup-job.yaml{{- if index .Values "rancherTurtles" "rancherInstalled" }}
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: pre-upgrade-job
  namespace: '{{ .Values.rancherTurtles.namespace }}'
  annotations:
    "helm.sh/hook": "post-delete, pre-upgrade"
    "helm.sh/hook-weight": "-2"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: pre-upgrade-job-delete-clusterctl-configmap
  annotations:
    "helm.sh/hook": "post-delete, pre-upgrade"
    "helm.sh/hook-weight": "-2"
rules:
- apiGroups: [""]
  resources:
  - configmaps
  verbs:
  - list
  - delete
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: pre-upgrade-job-clusterctl-configmap-cleanup
  annotations:
    "helm.sh/hook": "post-delete, pre-upgrade"
    "helm.sh/hook-weight": "-2"
subjects:
  - kind: ServiceAccount
    name: pre-upgrade-job
    namespace: '{{ .Values.rancherTurtles.namespace }}'
roleRef:
  kind: ClusterRole
  name: pre-upgrade-job-delete-clusterctl-configmap
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: batch/v1
kind: Job
metadata:
  name: rancher-clusterctl-configmap-cleanup
  namespace: '{{ .Values.rancherTurtles.namespace }}'
  annotations:
    "helm.sh/hook": "post-delete, pre-upgrade"
    "helm.sh/hook-weight": "-1"
spec:
  ttlSecondsAfterFinished: 300
  template:
    spec:
      serviceAccountName: pre-upgrade-job
      containers:
        - name: rancher-clusterctl-configmap-cleanup
          image: {{ index .Values "rancherTurtles" "kubectlImage" }}
          args:
          - delete
          - configmap
          - --namespace={{ .Values.rancherTurtles.namespace }}
          - clusterctl-config
          - --ignore-not-found=true
      restartPolicy: Never
{{- end }}
07070100000003000081a400000000000000000000000168d24f0e00000078000000000000000000000000000000000000002100000000templates/clusterctl-config.yamlapiVersion: v1
kind: ConfigMap
metadata:
  name: clusterctl-config
  namespace: '{{ .Values.rancherTurtles.namespace }}'07070100000004000081a400000000000000000000000168d24f0e00000cb7000000000000000000000000000000000000001d00000000templates/core-provider.yaml{{- if index .Values "cluster-api-operator" "cluster-api" "enabled" }}
{{- $namespace := index .Values "cluster-api-operator" "cluster-api" "core" "namespace" }}
{{- if not (lookup "v1" "Namespace" "" $namespace) }}
---
apiVersion: v1
kind: Namespace
metadata:
  annotations:
    "helm.sh/hook": "post-install, post-upgrade"
    "helm.sh/hook-weight": "1"
  name: {{ index .Values "cluster-api-operator" "cluster-api" "core" "namespace" }}
{{- end }}
---
apiVersion: turtles-capi.cattle.io/v1alpha1
kind: CAPIProvider
metadata:
  name: cluster-api
  namespace: {{ index .Values "cluster-api-operator" "cluster-api" "core" "namespace" }}
  annotations:
    "helm.sh/hook": "post-install, post-upgrade"
    "helm.sh/hook-weight": "2"
spec:
  name: cluster-api
  type: core
  enableAutomaticUpdate: {{ index .Values "cluster-api-operator" "cluster-api" "core" "enableAutomaticUpdate" }}
{{- if index .Values "cluster-api-operator" "cluster-api" "core" "version" }}
  version: {{ index .Values "cluster-api-operator" "cluster-api" "core" "version" }}
{{- end }}
  additionalManifests:
    name: capi-additional-rbac-roles
    namespace: {{ index .Values "cluster-api-operator" "cluster-api" "core" "namespace" }}
  configSecret:
{{- if index .Values "cluster-api-operator" "cluster-api" "configSecret" "name" }}
    name: {{ index .Values "cluster-api-operator" "cluster-api" "configSecret" "name" }}
{{ else }}
    name: {{ index .Values "cluster-api-operator" "cluster-api" "configSecret" "defaultName" }}
{{- end }}
{{- if or (index .Values "cluster-api-operator" "cluster-api" "core" "fetchConfig" "url") (index .Values "cluster-api-operator" "cluster-api" "core" "fetchConfig" "selector") }}
  fetchConfig:
    {{- if index .Values "cluster-api-operator" "cluster-api" "core" "fetchConfig" "url" }}
    url: {{ index .Values "cluster-api-operator" "cluster-api" "core" "fetchConfig" "url" }}
    {{- end }}
    {{- if index .Values "cluster-api-operator" "cluster-api" "core" "fetchConfig" "selector" }}
    selector: {{ index .Values "cluster-api-operator" "cluster-api" "core" "fetchConfig" "selector" }}
    {{- end }}
{{- end }}
{{- if index .Values "cluster-api-operator" "cluster-api" "core" "imageUrl" }}
  deployment:
    containers:
      - name: manager
        imageUrl: {{ index .Values "cluster-api-operator" "cluster-api" "core" "imageUrl" }}
{{- end }}
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: capi-additional-rbac-roles
  namespace: {{ index .Values "cluster-api-operator" "cluster-api" "core" "namespace" }}
  annotations:
    "helm.sh/hook": "post-install, post-upgrade"
    "helm.sh/hook-weight": "2"
data: 
  manifests: |-
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: provisioning-rke-cattle-io
      labels:
        cluster.x-k8s.io/aggregate-to-manager: "true"
    rules:
      - apiGroups: ["rke.cattle.io"]
        resources: ["*"]
        verbs: ["*"]
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: provisioning-rke-machine-cattle-io
      labels:
        cluster.x-k8s.io/aggregate-to-manager: "true"
    rules:
      - apiGroups: ["rke-machine.cattle.io"]
        resources: ["*"]
        verbs: ["*"]
{{- end }}
07070100000005000081a400000000000000000000000168d24f0e00000af9000000000000000000000000000000000000001a00000000templates/deployment.yamlapiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    control-plane: controller-manager
  name: rancher-turtles-controller-manager
  namespace: '{{ .Values.rancherTurtles.namespace }}'
spec:
  replicas: 1
  selector:
    matchLabels:
      control-plane: controller-manager
  template:
    metadata:
      annotations:
        kubectl.kubernetes.io/default-container: manager
      labels:
        control-plane: controller-manager
    spec:
      {{- if .Values.rancherTurtles.imagePullSecrets }}
      imagePullSecrets:
      {{- range .Values.rancherTurtles.imagePullSecrets }}
        - name: {{ . }}
      {{- end }}  
      {{- end }}
      containers:
      - args:
        - --leader-elect
        - --feature-gates=agent-tls-mode={{ index .Values "rancherTurtles" "features" "agent-tls-mode" "enabled"}},ui-plugin={{ index .Values "turtlesUI" "enabled"}},no-cert-manager={{ index .Values "rancherTurtles" "features" "no-cert-manager" "enabled"}}
        {{- range .Values.rancherTurtles.managerArguments }}
        - {{ . }}
        {{- end }}  
        command:
        - /manager
        env:
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: POD_UID
          valueFrom:
            fieldRef:
              fieldPath: metadata.uid
        {{- if (contains "sha256:" .Values.rancherTurtles.imageVersion) }}
        image: '{{ .Values.rancherTurtles.image }}@{{ .Values.rancherTurtles.imageVersion }}'
        {{- else }}
        image: '{{ .Values.rancherTurtles.image }}:{{ .Values.rancherTurtles.imageVersion }}'
        {{- end}}
        imagePullPolicy: '{{ .Values.rancherTurtles.imagePullPolicy }}'
        livenessProbe:
          httpGet:
            path: /healthz
            port: 9440
          initialDelaySeconds: 15
          periodSeconds: 20
        name: manager
        readinessProbe:
          httpGet:
            path: /readyz
            port: 9440
          initialDelaySeconds: 5
          periodSeconds: 10
        resources:
          limits:
            cpu: 500m
            memory: 300Mi
          requests:
            cpu: 10m
            memory: 128Mi
        {{- with .Values.rancherTurtles.volumeMounts.manager }}
        volumeMounts:
        {{- toYaml . | nindent 12 }}
        {{- end }}
      serviceAccountName: rancher-turtles-manager
      terminationGracePeriodSeconds: 10
      {{- with .Values.rancherTurtles.volumes }}
      volumes:
      {{- toYaml . | nindent 8 }}
      {{- end }}
      tolerations:
      - effect: NoSchedule
        key: node-role.kubernetes.io/master
      - effect: NoSchedule
        key: node-role.kubernetes.io/control-plane
07070100000006000081a400000000000000000000000168d24f0e00001416000000000000000000000000000000000000002500000000templates/metal3-infrastructure.yaml{{- if and (index .Values "cluster-api-operator" "cluster-api" "enabled") (index .Values "cluster-api-operator" "cluster-api" "metal3" "enabled") }}
{{- $namespace := index .Values "cluster-api-operator" "cluster-api" "metal3" "infrastructure" "namespace" }}
{{- $ipamnamespace := index .Values "cluster-api-operator" "cluster-api" "metal3" "ipam" "namespace" }}
{{- if not (lookup "v1" "Namespace" "" $namespace) }}
---
apiVersion: v1
kind: Namespace
metadata:
  annotations:
    "helm.sh/hook": "post-install, post-upgrade"
    "helm.sh/hook-weight": "1"
  name: {{ index .Values "cluster-api-operator" "cluster-api" "metal3" "infrastructure" "namespace" }}
{{- end }}
{{- if not (lookup "v1" "Namespace" "" $ipamnamespace) }}
---
apiVersion: v1
kind: Namespace
metadata:
  annotations:
    "helm.sh/hook": "post-install, post-upgrade"
    "helm.sh/hook-weight": "1"
  name: {{ index .Values "cluster-api-operator" "cluster-api" "metal3" "ipam" "namespace" }}
{{- end }}
---
apiVersion: turtles-capi.cattle.io/v1alpha1
kind: ClusterctlConfig
metadata:
  name: clusterctl-config
  namespace: rancher-turtles-system
  annotations:
    "helm.sh/hook": "post-install, post-upgrade"
    "helm.sh/hook-weight": "1"
spec:
  providers:
  - name: metal3
    url: "https://github.com/rancher-sandbox/cluster-api-provider-metal3/releases/v1.10.2/infrastructure-components.yaml"
    type: InfrastructureProvider
  - name: metal3ipam
    url: "https://github.com/rancher-sandbox/ip-address-manager/releases/v1.10.2/ipam-components.yaml"
    type: IPAMProvider
---
apiVersion: turtles-capi.cattle.io/v1alpha1
kind: CAPIProvider
metadata:
  name: metal3
  namespace: {{ index .Values "cluster-api-operator" "cluster-api" "metal3" "infrastructure" "namespace" }}
  annotations:
    "helm.sh/hook": "post-install, post-upgrade"
    "helm.sh/hook-weight": "2"
spec:
  name: metal3
  type: infrastructure
{{- if index .Values  "cluster-api-operator" "cluster-api" "metal3" "version" }}
  version: {{ index .Values "cluster-api-operator" "cluster-api" "metal3" "version" }}
{{- end }}
  configSecret:
{{- if index .Values "cluster-api-operator" "cluster-api" "configSecret" "name" }}
    name: {{ index .Values "cluster-api-operator" "cluster-api" "configSecret" "name" }}
{{ else }}
    name: {{ index .Values "cluster-api-operator" "cluster-api" "configSecret" "defaultName" }}
{{- end }}
{{- if or (index .Values "cluster-api-operator" "cluster-api" "metal3" "infrastructure" "fetchConfig" "url") (index .Values "cluster-api-operator" "cluster-api" "metal3" "infrastructure" "fetchConfig" "selector") }}
  fetchConfig:
    {{- if index .Values "cluster-api-operator" "cluster-api" "metal3" "infrastructure" "fetchConfig" "url" }}
    url: {{ index .Values "cluster-api-operator" "cluster-api" "metal3" "infrastructure" "fetchConfig" "url" }}
    {{- end }}
    {{- if index .Values "cluster-api-operator" "cluster-api" "metal3" "infrastructure" "fetchConfig" "selector" }}
    selector: {{ index .Values "cluster-api-operator" "cluster-api" "metal3" "infrastructure" "fetchConfig" "selector" }}
    {{- end }}
{{- end }}
{{- if index .Values "cluster-api-operator" "cluster-api" "metal3" "infrastructure" "imageUrl" }}
  deployment:
    containers:
      - name: manager
        imageUrl: {{ index .Values "cluster-api-operator" "cluster-api" "metal3" "infrastructure" "imageUrl" }}
{{- end }}
---
apiVersion: turtles-capi.cattle.io/v1alpha1
kind: CAPIProvider
metadata:
  name: metal3ipam
  namespace: {{ index .Values "cluster-api-operator" "cluster-api" "metal3" "ipam" "namespace" }}
  annotations:
    "helm.sh/hook": "post-install, post-upgrade"
    "helm.sh/hook-weight": "2"
spec:
  name: metal3ipam
  type: ipam
{{- if index .Values  "cluster-api-operator" "cluster-api" "metal3" "ipam" "version" }}
  version: {{ index .Values "cluster-api-operator" "cluster-api" "metal3" "ipam" "version" }}
{{- end }}
  configSecret:
{{- if index .Values "cluster-api-operator" "cluster-api" "configSecret" "name" }}
    name: {{ index .Values "cluster-api-operator" "cluster-api" "configSecret" "name" }}
{{ else }}
    name: {{ index .Values "cluster-api-operator" "cluster-api" "configSecret" "defaultName" }}
{{- end }}
{{- if or (index .Values "cluster-api-operator" "cluster-api" "metal3" "ipam" "fetchConfig" "url") (index .Values "cluster-api-operator" "cluster-api" "metal3" "ipam" "fetchConfig" "selector") }}
  fetchConfig:
    {{- if index .Values "cluster-api-operator" "cluster-api" "metal3" "ipam" "fetchConfig" "url" }}
    url: {{ index .Values "cluster-api-operator" "cluster-api" "metal3" "ipam" "fetchConfig" "url" }}
    {{- end }}
    {{- if index .Values "cluster-api-operator" "cluster-api" "metal3" "ipam" "fetchConfig" "selector" }}
    selector: {{ index .Values "cluster-api-operator" "cluster-api" "metal3" "ipam" "fetchConfig" "selector" }}
    {{- end }}
{{- end }}
{{- if index .Values "cluster-api-operator" "cluster-api" "metal3" "ipam" "imageUrl" }}
  deployment:
    containers:
      - name: manager
        imageUrl: {{ index .Values "cluster-api-operator" "cluster-api" "metal3" "ipam" "imageUrl" }}
{{- end }}
{{- end }}
07070100000007000081a400000000000000000000000168d24f0e000000e9000000000000000000000000000000000000001d00000000templates/operator-crds.yamlapiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
    rancher-turtles/aggregate-to-manager: "true"
  name: rancher-turtles-operator-admin
rules:
- apiGroups:
  - '*'
  resources:
  - '*'
  verbs:
  - '*'
07070100000008000081a400000000000000000000000168d24f0e000014ca000000000000000000000000000000000000001f00000000templates/post-delete-job.yaml{{- if index .Values "cluster-api-operator" "cleanup" }}
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: post-delete-job
  namespace: '{{ .Values.rancherTurtles.namespace }}'
  annotations:
    "helm.sh/hook": post-delete
    "helm.sh/hook-weight": "1"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: post-delete-job-delete-webhooks
  annotations:
    "helm.sh/hook": post-delete
    "helm.sh/hook-weight": "1"
rules:
- apiGroups:
  - admissionregistration.k8s.io
  resources:
  - validatingwebhookconfigurations
  - mutatingwebhookconfigurations
  verbs:
  - delete
- apiGroups:
  - apps
  resources:
  - deployments
  verbs:
  - delete
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: post-delete-job-webhook-cleanup
  annotations:
    "helm.sh/hook": post-delete
    "helm.sh/hook-weight": "1"
subjects:
  - kind: ServiceAccount
    name: post-delete-job
    namespace: '{{ .Values.rancherTurtles.namespace }}'
roleRef:
  kind: ClusterRole
  name: post-delete-job-delete-webhooks
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: batch/v1
kind: Job
metadata:
  name: cluster-api-operator-mutatingwebhook-cleanup
  namespace: '{{ .Values.rancherTurtles.namespace }}'
  annotations:
    "helm.sh/hook": post-delete
    "helm.sh/hook-weight": "2"
spec:
  ttlSecondsAfterFinished: 300
  template:
    spec:
      serviceAccountName: post-delete-job
      containers:
        - name: cluster-api-operator-mutatingwebhook-cleanup
          image: {{ index .Values "rancherTurtles" "kubectlImage" }}
          command: ["kubectl"]
          args:
          - delete
          - mutatingwebhookconfigurations.admissionregistration.k8s.io
          - capi-mutating-webhook-configuration
          - capi-kubeadm-bootstrap-mutating-webhook-configuration
          - capi-kubeadm-control-plane-mutating-webhook-configuration
          - rke2-bootstrap-mutating-webhook-configuration
          - rke2-control-plane-mutating-webhook-configuration
          - --ignore-not-found=true
      restartPolicy: Never
---
apiVersion: batch/v1
kind: Job
metadata:
  name: cluster-api-operator-validatingwebhook-cleanup
  namespace: '{{ .Values.rancherTurtles.namespace }}'
  annotations:
    "helm.sh/hook": post-delete
    "helm.sh/hook-weight": "2"
spec:
  ttlSecondsAfterFinished: 300
  template:
    spec:
      serviceAccountName: post-delete-job
      containers:
        - name: cluster-api-operator-validatingwebhook-cleanup
          image: {{ index .Values "rancherTurtles" "kubectlImage" }}
          command: ["kubectl"]
          args:
          - delete
          - validatingwebhookconfigurations.admissionregistration.k8s.io
          - capi-validating-webhook-configuration
          - capi-kubeadm-bootstrap-validating-webhook-configuration
          - capi-kubeadm-control-plane-validating-webhook-configuration
          - rke2-bootstrap-validating-webhook-configuration
          - rke2-control-plane-validating-webhook-configuration
          - --ignore-not-found=true
      restartPolicy: Never
---
apiVersion: batch/v1
kind: Job
metadata:
  name: cluster-api-operator-deployment-cleanup
  namespace: '{{ .Values.rancherTurtles.namespace }}'
  annotations:
    "helm.sh/hook": post-delete
    "helm.sh/hook-weight": "2"
spec:
  ttlSecondsAfterFinished: 300
  template:
    spec:
      serviceAccountName: post-delete-job
      restartPolicy: Never
      containers:
      - name: delete-capi-controller-manager
        image: {{ index .Values "rancherTurtles" "kubectlImage" }}
        command: ["kubectl"]
        args:
        - delete
        - deployments.apps/capi-controller-manager
        - -n
        - {{ index .Values "cluster-api-operator" "cluster-api" "core" "namespace" }}
        - --ignore-not-found=true
      - name: delete-capi-kubeadm-bootstrap-controller-manager
        image: {{ index .Values "rancherTurtles" "kubectlImage" }}
        command: ["kubectl"]
        args:
        - delete
        - deployments.apps/capi-kubeadm-bootstrap-controller-manager
        - -n
        - capi-kubeadm-bootstrap-system
        - --ignore-not-found=true
      - name: delete-capi-kubeadm-control-plane-controller-manager
        image: {{ index .Values "rancherTurtles" "kubectlImage" }}
        command: ["kubectl"]
        args:
        - delete
        - deployments.apps/capi-kubeadm-control-plane-controller-manager
        - -n
        - capi-kubeadm-control-plane-system
        - --ignore-not-found=true
      - name: delete-rke2-kubeadm-bootstrap-controller-manager
        image: {{ index .Values "rancherTurtles" "kubectlImage" }}
        command: ["kubectl"]
        args:
        - delete
        - deployments.apps/rke2-bootstrap-controller-manager
        - -n
        - {{ index .Values "cluster-api-operator" "cluster-api" "rke2" "bootstrap" "namespace" }}
        - --ignore-not-found=true
      - name: delete-rke2-control-plane-controller-manager
        image: {{ index .Values "rancherTurtles" "kubectlImage" }}
        command: ["kubectl"]
        args:
        - delete
        - deployments.apps/rke2-control-plane-controller-manager
        - -n
        - {{ index .Values "cluster-api-operator" "cluster-api" "rke2" "controlPlane" "namespace" }}
        - --ignore-not-found=true
{{- end }}
07070100000009000081a400000000000000000000000168d24f0e00000d6a000000000000000000000000000000000000002000000000templates/post-upgrade-job.yamlapiVersion: v1
kind: ServiceAccount
metadata:
  name: post-upgrade-job
  namespace: '{{ .Values.rancherTurtles.namespace }}'
  annotations:
    "helm.sh/hook": post-upgrade
    "helm.sh/hook-weight": "1"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: post-upgrade-job-delete-capi-operator-resources
  annotations:
    "helm.sh/hook": post-upgrade
    "helm.sh/hook-weight": "1"
rules:
- apiGroups:
  - operator.cluster.x-k8s.io
  resources:
  - addonproviders
  - bootstrapproviders
  - controlplaneproviders
  - coreproviders
  - infrastructureproviders
  - ipamproviders
  - runtimeextensionproviders
  verbs:
  - get
  - watch
  - list
  - delete
  - patch
- apiGroups:
  - apiextensions.k8s.io
  resources:
  - customresourcedefinitions
  verbs:
  - get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: post-upgrade-job-capi-operator-resources-cleanup
  annotations:
    "helm.sh/hook": post-upgrade
    "helm.sh/hook-weight": "1"
subjects:
  - kind: ServiceAccount
    name: post-upgrade-job
    namespace: '{{ .Values.rancherTurtles.namespace }}'
roleRef:
  kind: ClusterRole
  name: post-upgrade-job-delete-capi-operator-resources
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: cluster-api-operator-resources-cleanup-script
  namespace: '{{ .Values.rancherTurtles.namespace }}'
  annotations:
    "helm.sh/hook": post-upgrade
    "helm.sh/hook-weight": "1"
data:
  cleanup.sh: |
    #!/usr/bin/env bash

    set -euo pipefail

    remove_finalizers_and_delete() {
      local resource_type="$1"
      if kubectl get crd $resource_type > /dev/null 2>&1; then
        kubectl get $resource_type --all-namespaces --no-headers --ignore-not-found | awk '{print $1 " " $2}' | xargs -r -n2 bash -c 'kubectl patch '"${resource_type}"' "$1" -n "$0" --type merge -p "{\"metadata\":{\"finalizers\":null}}"'
        kubectl delete $resource_type --all --all-namespaces
      else
        echo "Resource type $resource_type does not exist, skipping cleanup."
      fi
    }

    resource_types=(
      "addonproviders.operator.cluster.x-k8s.io"
      "bootstrapproviders.operator.cluster.x-k8s.io"
      "controlplaneproviders.operator.cluster.x-k8s.io"
      "coreproviders.operator.cluster.x-k8s.io"
      "infrastructureproviders.operator.cluster.x-k8s.io"
      "ipamproviders.operator.cluster.x-k8s.io"
      "runtimeextensionproviders.operator.cluster.x-k8s.io"
    )

    for resource_type in "${resource_types[@]}"; do
      remove_finalizers_and_delete "$resource_type"
    done
---
apiVersion: batch/v1
kind: Job
metadata:
  name: cluster-api-operator-resources-cleanup
  namespace: '{{ .Values.rancherTurtles.namespace }}'
  annotations:
    "helm.sh/hook": post-upgrade
    "helm.sh/hook-weight": "2"
spec:
  ttlSecondsAfterFinished: 300
  template:
    spec:
      serviceAccountName: post-upgrade-job
      containers:
        - name: cluster-api-operator-resources-cleanup
          image: {{ index .Values "rancherTurtles" "shellImage" }}
          command: ["/bin/bash"]
          args:
          - "-c"
          - "/scripts/cleanup.sh"
          volumeMounts:
            - name: script
              mountPath: /scripts
      volumes:
        - name: script
          configMap:
            name: cluster-api-operator-resources-cleanup-script
            defaultMode: 0777
      restartPolicy: Never
---0707010000000a000081a400000000000000000000000168d24f0e00000647000000000000000000000000000000000000001e00000000templates/pre-delete-job.yaml{{- if index .Values "rancherTurtles" "rancherInstalled" }}
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: pre-delete-job
  namespace: '{{ .Values.rancherTurtles.namespace }}'
  annotations:
    "helm.sh/hook": pre-delete
    "helm.sh/hook-weight": "-2"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: pre-delete-job-delete-capiproviders
  annotations:
    "helm.sh/hook": pre-delete
    "helm.sh/hook-weight": "-2"
rules:
- apiGroups:
  - turtles-capi.cattle.io
  resources:
  - capiproviders
  verbs:
  - list
  - delete
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: pre-delete-job-capiprovider-cleanup
  annotations:
    "helm.sh/hook": pre-delete
    "helm.sh/hook-weight": "-2"
subjects:
  - kind: ServiceAccount
    name: pre-delete-job
    namespace: '{{ .Values.rancherTurtles.namespace }}'
roleRef:
  kind: ClusterRole
  name: pre-delete-job-delete-capiproviders
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: batch/v1
kind: Job
metadata:
  name: rancher-capiprovider-cleanup
  namespace: '{{ .Values.rancherTurtles.namespace }}'
  annotations:
    "helm.sh/hook": pre-delete
    "helm.sh/hook-weight": "-1"
spec:
  ttlSecondsAfterFinished: 300
  template:
    spec:
      serviceAccountName: pre-delete-job
      containers:
        - name: rancher-capiprovider-cleanup
          image: {{ index .Values "rancherTurtles" "kubectlImage" }}
          args:
          - delete
          - capiproviders
          - -A
          - --all
          - --cascade=foreground
      restartPolicy: Never
{{- end }}
0707010000000b000081a400000000000000000000000168d24f0e00000a56000000000000000000000000000000000000001f00000000templates/pre-install-job.yaml{{- if index .Values "rancherTurtles" "rancherInstalled"}}
---
apiVersion: management.cattle.io/v3
kind: Feature
metadata:
  name: embedded-cluster-api
  annotations:
    "helm.sh/hook": pre-install
    "helm.sh/hook-weight": "1"
spec:
  value: false
{{- end }}
{{- if index .Values "rancherTurtles" "rancherInstalled" }}
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: pre-install-job
  namespace: '{{ .Values.rancherTurtles.namespace }}'
  annotations:
    "helm.sh/hook": pre-install
    "helm.sh/hook-weight": "1"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: pre-install-job-delete-webhooks
  annotations:
    "helm.sh/hook": pre-install
    "helm.sh/hook-weight": "1"
rules:
- apiGroups:
  - admissionregistration.k8s.io
  resources:
  - validatingwebhookconfigurations
  - mutatingwebhookconfigurations
  verbs:
  - delete
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: pre-install-job-webhook-cleanup
  annotations:
    "helm.sh/hook": pre-install
    "helm.sh/hook-weight": "1"
subjects:
  - kind: ServiceAccount
    name: pre-install-job
    namespace: '{{ .Values.rancherTurtles.namespace }}'
roleRef:
  kind: ClusterRole
  name: pre-install-job-delete-webhooks
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: batch/v1
kind: Job
metadata:
  name: rancher-mutatingwebhook-cleanup
  namespace: '{{ .Values.rancherTurtles.namespace }}'
  annotations:
    "helm.sh/hook": pre-install
    "helm.sh/hook-weight": "2"
spec:
  ttlSecondsAfterFinished: 300
  template:
    spec:
      serviceAccountName: pre-install-job
      containers:
        - name: rancher-mutatingwebhook-cleanup
          image: {{ index .Values "rancherTurtles" "kubectlImage" }}
          args:
          - delete
          - mutatingwebhookconfigurations.admissionregistration.k8s.io
          - mutating-webhook-configuration
          - --ignore-not-found=true
      restartPolicy: Never
---
apiVersion: batch/v1
kind: Job
metadata:
  name: rancher-validatingwebhook-cleanup
  namespace: '{{ .Values.rancherTurtles.namespace }}'
  annotations:
    "helm.sh/hook": pre-install
    "helm.sh/hook-weight": "2"
spec:
  ttlSecondsAfterFinished: 300
  template:
    spec:
      serviceAccountName: pre-install-job
      containers:
        - name: rancher-validatingwebhook-cleanup
          image: {{ index .Values "rancherTurtles" "kubectlImage" }}
          args:
          - delete
          - validatingwebhookconfigurations.admissionregistration.k8s.io
          - validating-webhook-configuration
          - --ignore-not-found=true
      restartPolicy: Never
{{- end }}
0707010000000c000081a400000000000000000000000168d24f0e00038f20000000000000000000000000000000000000002a00000000templates/rancher-turtles-components.yamlapiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.16.1
    helm.sh/resource-policy: keep
  name: capiproviders.turtles-capi.cattle.io
spec:
  group: turtles-capi.cattle.io
  names:
    kind: CAPIProvider
    listKind: CAPIProviderList
    plural: capiproviders
    singular: capiprovider
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.type
      name: Type
      type: string
    - jsonPath: .status.name
      name: ProviderName
      type: string
    - jsonPath: .status.installedVersion
      name: InstalledVersion
      type: string
    - jsonPath: .status.phase
      name: Phase
      type: string
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: CAPIProvider is the Schema for the CAPI Providers API.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: CAPIProviderSpec defines the desired state of CAPIProvider.
            example:
              credentials:
                rancherCloudCredential: user-credential
              name: aws
              type: infrastructure
              version: v2.3.0
            properties:
              additionalDeployments:
                additionalProperties:
                  description: |-
                    AdditionalDeployments defines the properties that can be enabled on the controller
                    manager and deployment for the provider if the provider is managing additional deployments.
                  properties:
                    deployment:
                      description: Deployment defines the properties that can be enabled
                        on the deployment for the additional provider deployment.
                      properties:
                        affinity:
                          description: If specified, the pod's scheduling constraints
                          properties:
                            nodeAffinity:
                              description: Describes node affinity scheduling rules
                                for the pod.
                              properties:
                                preferredDuringSchedulingIgnoredDuringExecution:
                                  description: |-
                                    The scheduler will prefer to schedule pods to nodes that satisfy
                                    the affinity expressions specified by this field, but it may choose
                                    a node that violates one or more of the expressions. The node that is
                                    most preferred is the one with the greatest sum of weights, i.e.
                                    for each node that meets all of the scheduling requirements (resource
                                    request, requiredDuringScheduling affinity expressions, etc.),
                                    compute a sum by iterating through the elements of this field and adding
                                    "weight" to the sum if the node matches the corresponding matchExpressions; the
                                    node(s) with the highest sum are the most preferred.
                                  items:
                                    description: |-
                                      An empty preferred scheduling term matches all objects with implicit weight 0
                                      (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
                                    properties:
                                      preference:
                                        description: A node selector term, associated
                                          with the corresponding weight.
                                        properties:
                                          matchExpressions:
                                            description: A list of node selector requirements
                                              by node's labels.
                                            items:
                                              description: |-
                                                A node selector requirement is a selector that contains values, a key, and an operator
                                                that relates the key and values.
                                              properties:
                                                key:
                                                  description: The label key that
                                                    the selector applies to.
                                                  type: string
                                                operator:
                                                  description: |-
                                                    Represents a key's relationship to a set of values.
                                                    Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                                  type: string
                                                values:
                                                  description: |-
                                                    An array of string values. If the operator is In or NotIn,
                                                    the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                    the values array must be empty. If the operator is Gt or Lt, the values
                                                    array must have a single element, which will be interpreted as an integer.
                                                    This array is replaced during a strategic merge patch.
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                              - key
                                              - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchFields:
                                            description: A list of node selector requirements
                                              by node's fields.
                                            items:
                                              description: |-
                                                A node selector requirement is a selector that contains values, a key, and an operator
                                                that relates the key and values.
                                              properties:
                                                key:
                                                  description: The label key that
                                                    the selector applies to.
                                                  type: string
                                                operator:
                                                  description: |-
                                                    Represents a key's relationship to a set of values.
                                                    Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                                  type: string
                                                values:
                                                  description: |-
                                                    An array of string values. If the operator is In or NotIn,
                                                    the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                    the values array must be empty. If the operator is Gt or Lt, the values
                                                    array must have a single element, which will be interpreted as an integer.
                                                    This array is replaced during a strategic merge patch.
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                              - key
                                              - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      weight:
                                        description: Weight associated with matching
                                          the corresponding nodeSelectorTerm, in the
                                          range 1-100.
                                        format: int32
                                        type: integer
                                    required:
                                    - preference
                                    - weight
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                requiredDuringSchedulingIgnoredDuringExecution:
                                  description: |-
                                    If the affinity requirements specified by this field are not met at
                                    scheduling time, the pod will not be scheduled onto the node.
                                    If the affinity requirements specified by this field cease to be met
                                    at some point during pod execution (e.g. due to an update), the system
                                    may or may not try to eventually evict the pod from its node.
                                  properties:
                                    nodeSelectorTerms:
                                      description: Required. A list of node selector
                                        terms. The terms are ORed.
                                      items:
                                        description: |-
                                          A null or empty node selector term matches no objects. The requirements of
                                          them are ANDed.
                                          The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
                                        properties:
                                          matchExpressions:
                                            description: A list of node selector requirements
                                              by node's labels.
                                            items:
                                              description: |-
                                                A node selector requirement is a selector that contains values, a key, and an operator
                                                that relates the key and values.
                                              properties:
                                                key:
                                                  description: The label key that
                                                    the selector applies to.
                                                  type: string
                                                operator:
                                                  description: |-
                                                    Represents a key's relationship to a set of values.
                                                    Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                                  type: string
                                                values:
                                                  description: |-
                                                    An array of string values. If the operator is In or NotIn,
                                                    the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                    the values array must be empty. If the operator is Gt or Lt, the values
                                                    array must have a single element, which will be interpreted as an integer.
                                                    This array is replaced during a strategic merge patch.
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                              - key
                                              - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchFields:
                                            description: A list of node selector requirements
                                              by node's fields.
                                            items:
                                              description: |-
                                                A node selector requirement is a selector that contains values, a key, and an operator
                                                that relates the key and values.
                                              properties:
                                                key:
                                                  description: The label key that
                                                    the selector applies to.
                                                  type: string
                                                operator:
                                                  description: |-
                                                    Represents a key's relationship to a set of values.
                                                    Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                                  type: string
                                                values:
                                                  description: |-
                                                    An array of string values. If the operator is In or NotIn,
                                                    the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                    the values array must be empty. If the operator is Gt or Lt, the values
                                                    array must have a single element, which will be interpreted as an integer.
                                                    This array is replaced during a strategic merge patch.
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                              - key
                                              - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  required:
                                  - nodeSelectorTerms
                                  type: object
                                  x-kubernetes-map-type: atomic
                              type: object
                            podAffinity:
                              description: Describes pod affinity scheduling rules
                                (e.g. co-locate this pod in the same node, zone, etc.
                                as some other pod(s)).
                              properties:
                                preferredDuringSchedulingIgnoredDuringExecution:
                                  description: |-
                                    The scheduler will prefer to schedule pods to nodes that satisfy
                                    the affinity expressions specified by this field, but it may choose
                                    a node that violates one or more of the expressions. The node that is
                                    most preferred is the one with the greatest sum of weights, i.e.
                                    for each node that meets all of the scheduling requirements (resource
                                    request, requiredDuringScheduling affinity expressions, etc.),
                                    compute a sum by iterating through the elements of this field and adding
                                    "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
                                    node(s) with the highest sum are the most preferred.
                                  items:
                                    description: The weights of all of the matched
                                      WeightedPodAffinityTerm fields are added per-node
                                      to find the most preferred node(s)
                                    properties:
                                      podAffinityTerm:
                                        description: Required. A pod affinity term,
                                          associated with the corresponding weight.
                                        properties:
                                          labelSelector:
                                            description: |-
                                              A label query over a set of resources, in this case pods.
                                              If it's null, this PodAffinityTerm matches with no Pods.
                                            properties:
                                              matchExpressions:
                                                description: matchExpressions is a
                                                  list of label selector requirements.
                                                  The requirements are ANDed.
                                                items:
                                                  description: |-
                                                    A label selector requirement is a selector that contains values, a key, and an operator that
                                                    relates the key and values.
                                                  properties:
                                                    key:
                                                      description: key is the label
                                                        key that the selector applies
                                                        to.
                                                      type: string
                                                    operator:
                                                      description: |-
                                                        operator represents a key's relationship to a set of values.
                                                        Valid operators are In, NotIn, Exists and DoesNotExist.
                                                      type: string
                                                    values:
                                                      description: |-
                                                        values is an array of string values. If the operator is In or NotIn,
                                                        the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                        the values array must be empty. This array is replaced during a strategic
                                                        merge patch.
                                                      items:
                                                        type: string
                                                      type: array
                                                      x-kubernetes-list-type: atomic
                                                  required:
                                                  - key
                                                  - operator
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              matchLabels:
                                                additionalProperties:
                                                  type: string
                                                description: |-
                                                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                  map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                  operator is "In", and the values array contains only "value". The requirements are ANDed.
                                                type: object
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          matchLabelKeys:
                                            description: |-
                                              MatchLabelKeys is a set of pod label keys to select which pods will
                                              be taken into consideration. The keys are used to lookup values from the
                                              incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                              to select the group of existing pods which pods will be taken into consideration
                                              for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                              pod labels will be ignored. The default value is empty.
                                              The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                              Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                              This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          mismatchLabelKeys:
                                            description: |-
                                              MismatchLabelKeys is a set of pod label keys to select which pods will
                                              be taken into consideration. The keys are used to lookup values from the
                                              incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                              to select the group of existing pods which pods will be taken into consideration
                                              for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                              pod labels will be ignored. The default value is empty.
                                              The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                              Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                              This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          namespaceSelector:
                                            description: |-
                                              A label query over the set of namespaces that the term applies to.
                                              The term is applied to the union of the namespaces selected by this field
                                              and the ones listed in the namespaces field.
                                              null selector and null or empty namespaces list means "this pod's namespace".
                                              An empty selector ({}) matches all namespaces.
                                            properties:
                                              matchExpressions:
                                                description: matchExpressions is a
                                                  list of label selector requirements.
                                                  The requirements are ANDed.
                                                items:
                                                  description: |-
                                                    A label selector requirement is a selector that contains values, a key, and an operator that
                                                    relates the key and values.
                                                  properties:
                                                    key:
                                                      description: key is the label
                                                        key that the selector applies
                                                        to.
                                                      type: string
                                                    operator:
                                                      description: |-
                                                        operator represents a key's relationship to a set of values.
                                                        Valid operators are In, NotIn, Exists and DoesNotExist.
                                                      type: string
                                                    values:
                                                      description: |-
                                                        values is an array of string values. If the operator is In or NotIn,
                                                        the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                        the values array must be empty. This array is replaced during a strategic
                                                        merge patch.
                                                      items:
                                                        type: string
                                                      type: array
                                                      x-kubernetes-list-type: atomic
                                                  required:
                                                  - key
                                                  - operator
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              matchLabels:
                                                additionalProperties:
                                                  type: string
                                                description: |-
                                                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                  map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                  operator is "In", and the values array contains only "value". The requirements are ANDed.
                                                type: object
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          namespaces:
                                            description: |-
                                              namespaces specifies a static list of namespace names that the term applies to.
                                              The term is applied to the union of the namespaces listed in this field
                                              and the ones selected by namespaceSelector.
                                              null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          topologyKey:
                                            description: |-
                                              This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                              the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                              whose value of the label with key topologyKey matches that of any node on which any of the
                                              selected pods is running.
                                              Empty topologyKey is not allowed.
                                            type: string
                                        required:
                                        - topologyKey
                                        type: object
                                      weight:
                                        description: |-
                                          weight associated with matching the corresponding podAffinityTerm,
                                          in the range 1-100.
                                        format: int32
                                        type: integer
                                    required:
                                    - podAffinityTerm
                                    - weight
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                requiredDuringSchedulingIgnoredDuringExecution:
                                  description: |-
                                    If the affinity requirements specified by this field are not met at
                                    scheduling time, the pod will not be scheduled onto the node.
                                    If the affinity requirements specified by this field cease to be met
                                    at some point during pod execution (e.g. due to a pod label update), the
                                    system may or may not try to eventually evict the pod from its node.
                                    When there are multiple elements, the lists of nodes corresponding to each
                                    podAffinityTerm are intersected, i.e. all terms must be satisfied.
                                  items:
                                    description: |-
                                      Defines a set of pods (namely those matching the labelSelector
                                      relative to the given namespace(s)) that this pod should be
                                      co-located (affinity) or not co-located (anti-affinity) with,
                                      where co-located is defined as running on a node whose value of
                                      the label with key <topologyKey> matches that of any node on which
                                      a pod of the set of pods is running
                                    properties:
                                      labelSelector:
                                        description: |-
                                          A label query over a set of resources, in this case pods.
                                          If it's null, this PodAffinityTerm matches with no Pods.
                                        properties:
                                          matchExpressions:
                                            description: matchExpressions is a list
                                              of label selector requirements. The
                                              requirements are ANDed.
                                            items:
                                              description: |-
                                                A label selector requirement is a selector that contains values, a key, and an operator that
                                                relates the key and values.
                                              properties:
                                                key:
                                                  description: key is the label key
                                                    that the selector applies to.
                                                  type: string
                                                operator:
                                                  description: |-
                                                    operator represents a key's relationship to a set of values.
                                                    Valid operators are In, NotIn, Exists and DoesNotExist.
                                                  type: string
                                                values:
                                                  description: |-
                                                    values is an array of string values. If the operator is In or NotIn,
                                                    the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                    the values array must be empty. This array is replaced during a strategic
                                                    merge patch.
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                              - key
                                              - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            description: |-
                                              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                              map is equivalent to an element of matchExpressions, whose key field is "key", the
                                              operator is "In", and the values array contains only "value". The requirements are ANDed.
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      matchLabelKeys:
                                        description: |-
                                          MatchLabelKeys is a set of pod label keys to select which pods will
                                          be taken into consideration. The keys are used to lookup values from the
                                          incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                          to select the group of existing pods which pods will be taken into consideration
                                          for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                          pod labels will be ignored. The default value is empty.
                                          The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                          Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                          This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      mismatchLabelKeys:
                                        description: |-
                                          MismatchLabelKeys is a set of pod label keys to select which pods will
                                          be taken into consideration. The keys are used to lookup values from the
                                          incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                          to select the group of existing pods which pods will be taken into consideration
                                          for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                          pod labels will be ignored. The default value is empty.
                                          The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                          Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                          This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      namespaceSelector:
                                        description: |-
                                          A label query over the set of namespaces that the term applies to.
                                          The term is applied to the union of the namespaces selected by this field
                                          and the ones listed in the namespaces field.
                                          null selector and null or empty namespaces list means "this pod's namespace".
                                          An empty selector ({}) matches all namespaces.
                                        properties:
                                          matchExpressions:
                                            description: matchExpressions is a list
                                              of label selector requirements. The
                                              requirements are ANDed.
                                            items:
                                              description: |-
                                                A label selector requirement is a selector that contains values, a key, and an operator that
                                                relates the key and values.
                                              properties:
                                                key:
                                                  description: key is the label key
                                                    that the selector applies to.
                                                  type: string
                                                operator:
                                                  description: |-
                                                    operator represents a key's relationship to a set of values.
                                                    Valid operators are In, NotIn, Exists and DoesNotExist.
                                                  type: string
                                                values:
                                                  description: |-
                                                    values is an array of string values. If the operator is In or NotIn,
                                                    the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                    the values array must be empty. This array is replaced during a strategic
                                                    merge patch.
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                              - key
                                              - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            description: |-
                                              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                              map is equivalent to an element of matchExpressions, whose key field is "key", the
                                              operator is "In", and the values array contains only "value". The requirements are ANDed.
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      namespaces:
                                        description: |-
                                          namespaces specifies a static list of namespace names that the term applies to.
                                          The term is applied to the union of the namespaces listed in this field
                                          and the ones selected by namespaceSelector.
                                          null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      topologyKey:
                                        description: |-
                                          This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                          the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                          whose value of the label with key topologyKey matches that of any node on which any of the
                                          selected pods is running.
                                          Empty topologyKey is not allowed.
                                        type: string
                                    required:
                                    - topologyKey
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            podAntiAffinity:
                              description: Describes pod anti-affinity scheduling
                                rules (e.g. avoid putting this pod in the same node,
                                zone, etc. as some other pod(s)).
                              properties:
                                preferredDuringSchedulingIgnoredDuringExecution:
                                  description: |-
                                    The scheduler will prefer to schedule pods to nodes that satisfy
                                    the anti-affinity expressions specified by this field, but it may choose
                                    a node that violates one or more of the expressions. The node that is
                                    most preferred is the one with the greatest sum of weights, i.e.
                                    for each node that meets all of the scheduling requirements (resource
                                    request, requiredDuringScheduling anti-affinity expressions, etc.),
                                    compute a sum by iterating through the elements of this field and adding
                                    "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
                                    node(s) with the highest sum are the most preferred.
                                  items:
                                    description: The weights of all of the matched
                                      WeightedPodAffinityTerm fields are added per-node
                                      to find the most preferred node(s)
                                    properties:
                                      podAffinityTerm:
                                        description: Required. A pod affinity term,
                                          associated with the corresponding weight.
                                        properties:
                                          labelSelector:
                                            description: |-
                                              A label query over a set of resources, in this case pods.
                                              If it's null, this PodAffinityTerm matches with no Pods.
                                            properties:
                                              matchExpressions:
                                                description: matchExpressions is a
                                                  list of label selector requirements.
                                                  The requirements are ANDed.
                                                items:
                                                  description: |-
                                                    A label selector requirement is a selector that contains values, a key, and an operator that
                                                    relates the key and values.
                                                  properties:
                                                    key:
                                                      description: key is the label
                                                        key that the selector applies
                                                        to.
                                                      type: string
                                                    operator:
                                                      description: |-
                                                        operator represents a key's relationship to a set of values.
                                                        Valid operators are In, NotIn, Exists and DoesNotExist.
                                                      type: string
                                                    values:
                                                      description: |-
                                                        values is an array of string values. If the operator is In or NotIn,
                                                        the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                        the values array must be empty. This array is replaced during a strategic
                                                        merge patch.
                                                      items:
                                                        type: string
                                                      type: array
                                                      x-kubernetes-list-type: atomic
                                                  required:
                                                  - key
                                                  - operator
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              matchLabels:
                                                additionalProperties:
                                                  type: string
                                                description: |-
                                                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                  map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                  operator is "In", and the values array contains only "value". The requirements are ANDed.
                                                type: object
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          matchLabelKeys:
                                            description: |-
                                              MatchLabelKeys is a set of pod label keys to select which pods will
                                              be taken into consideration. The keys are used to lookup values from the
                                              incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                              to select the group of existing pods which pods will be taken into consideration
                                              for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                              pod labels will be ignored. The default value is empty.
                                              The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                              Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                              This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          mismatchLabelKeys:
                                            description: |-
                                              MismatchLabelKeys is a set of pod label keys to select which pods will
                                              be taken into consideration. The keys are used to lookup values from the
                                              incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                              to select the group of existing pods which pods will be taken into consideration
                                              for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                              pod labels will be ignored. The default value is empty.
                                              The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                              Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                              This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          namespaceSelector:
                                            description: |-
                                              A label query over the set of namespaces that the term applies to.
                                              The term is applied to the union of the namespaces selected by this field
                                              and the ones listed in the namespaces field.
                                              null selector and null or empty namespaces list means "this pod's namespace".
                                              An empty selector ({}) matches all namespaces.
                                            properties:
                                              matchExpressions:
                                                description: matchExpressions is a
                                                  list of label selector requirements.
                                                  The requirements are ANDed.
                                                items:
                                                  description: |-
                                                    A label selector requirement is a selector that contains values, a key, and an operator that
                                                    relates the key and values.
                                                  properties:
                                                    key:
                                                      description: key is the label
                                                        key that the selector applies
                                                        to.
                                                      type: string
                                                    operator:
                                                      description: |-
                                                        operator represents a key's relationship to a set of values.
                                                        Valid operators are In, NotIn, Exists and DoesNotExist.
                                                      type: string
                                                    values:
                                                      description: |-
                                                        values is an array of string values. If the operator is In or NotIn,
                                                        the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                        the values array must be empty. This array is replaced during a strategic
                                                        merge patch.
                                                      items:
                                                        type: string
                                                      type: array
                                                      x-kubernetes-list-type: atomic
                                                  required:
                                                  - key
                                                  - operator
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              matchLabels:
                                                additionalProperties:
                                                  type: string
                                                description: |-
                                                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                  map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                  operator is "In", and the values array contains only "value". The requirements are ANDed.
                                                type: object
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          namespaces:
                                            description: |-
                                              namespaces specifies a static list of namespace names that the term applies to.
                                              The term is applied to the union of the namespaces listed in this field
                                              and the ones selected by namespaceSelector.
                                              null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          topologyKey:
                                            description: |-
                                              This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                              the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                              whose value of the label with key topologyKey matches that of any node on which any of the
                                              selected pods is running.
                                              Empty topologyKey is not allowed.
                                            type: string
                                        required:
                                        - topologyKey
                                        type: object
                                      weight:
                                        description: |-
                                          weight associated with matching the corresponding podAffinityTerm,
                                          in the range 1-100.
                                        format: int32
                                        type: integer
                                    required:
                                    - podAffinityTerm
                                    - weight
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                requiredDuringSchedulingIgnoredDuringExecution:
                                  description: |-
                                    If the anti-affinity requirements specified by this field are not met at
                                    scheduling time, the pod will not be scheduled onto the node.
                                    If the anti-affinity requirements specified by this field cease to be met
                                    at some point during pod execution (e.g. due to a pod label update), the
                                    system may or may not try to eventually evict the pod from its node.
                                    When there are multiple elements, the lists of nodes corresponding to each
                                    podAffinityTerm are intersected, i.e. all terms must be satisfied.
                                  items:
                                    description: |-
                                      Defines a set of pods (namely those matching the labelSelector
                                      relative to the given namespace(s)) that this pod should be
                                      co-located (affinity) or not co-located (anti-affinity) with,
                                      where co-located is defined as running on a node whose value of
                                      the label with key <topologyKey> matches that of any node on which
                                      a pod of the set of pods is running
                                    properties:
                                      labelSelector:
                                        description: |-
                                          A label query over a set of resources, in this case pods.
                                          If it's null, this PodAffinityTerm matches with no Pods.
                                        properties:
                                          matchExpressions:
                                            description: matchExpressions is a list
                                              of label selector requirements. The
                                              requirements are ANDed.
                                            items:
                                              description: |-
                                                A label selector requirement is a selector that contains values, a key, and an operator that
                                                relates the key and values.
                                              properties:
                                                key:
                                                  description: key is the label key
                                                    that the selector applies to.
                                                  type: string
                                                operator:
                                                  description: |-
                                                    operator represents a key's relationship to a set of values.
                                                    Valid operators are In, NotIn, Exists and DoesNotExist.
                                                  type: string
                                                values:
                                                  description: |-
                                                    values is an array of string values. If the operator is In or NotIn,
                                                    the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                    the values array must be empty. This array is replaced during a strategic
                                                    merge patch.
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                              - key
                                              - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            description: |-
                                              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                              map is equivalent to an element of matchExpressions, whose key field is "key", the
                                              operator is "In", and the values array contains only "value". The requirements are ANDed.
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      matchLabelKeys:
                                        description: |-
                                          MatchLabelKeys is a set of pod label keys to select which pods will
                                          be taken into consideration. The keys are used to lookup values from the
                                          incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                          to select the group of existing pods which pods will be taken into consideration
                                          for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                          pod labels will be ignored. The default value is empty.
                                          The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                          Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                          This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      mismatchLabelKeys:
                                        description: |-
                                          MismatchLabelKeys is a set of pod label keys to select which pods will
                                          be taken into consideration. The keys are used to lookup values from the
                                          incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                          to select the group of existing pods which pods will be taken into consideration
                                          for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                          pod labels will be ignored. The default value is empty.
                                          The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                          Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                          This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      namespaceSelector:
                                        description: |-
                                          A label query over the set of namespaces that the term applies to.
                                          The term is applied to the union of the namespaces selected by this field
                                          and the ones listed in the namespaces field.
                                          null selector and null or empty namespaces list means "this pod's namespace".
                                          An empty selector ({}) matches all namespaces.
                                        properties:
                                          matchExpressions:
                                            description: matchExpressions is a list
                                              of label selector requirements. The
                                              requirements are ANDed.
                                            items:
                                              description: |-
                                                A label selector requirement is a selector that contains values, a key, and an operator that
                                                relates the key and values.
                                              properties:
                                                key:
                                                  description: key is the label key
                                                    that the selector applies to.
                                                  type: string
                                                operator:
                                                  description: |-
                                                    operator represents a key's relationship to a set of values.
                                                    Valid operators are In, NotIn, Exists and DoesNotExist.
                                                  type: string
                                                values:
                                                  description: |-
                                                    values is an array of string values. If the operator is In or NotIn,
                                                    the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                    the values array must be empty. This array is replaced during a strategic
                                                    merge patch.
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                              - key
                                              - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            description: |-
                                              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                              map is equivalent to an element of matchExpressions, whose key field is "key", the
                                              operator is "In", and the values array contains only "value". The requirements are ANDed.
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      namespaces:
                                        description: |-
                                          namespaces specifies a static list of namespace names that the term applies to.
                                          The term is applied to the union of the namespaces listed in this field
                                          and the ones selected by namespaceSelector.
                                          null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      topologyKey:
                                        description: |-
                                          This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                          the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                          whose value of the label with key topologyKey matches that of any node on which any of the
                                          selected pods is running.
                                          Empty topologyKey is not allowed.
                                        type: string
                                    required:
                                    - topologyKey
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                          type: object
                        containers:
                          description: List of containers specified in the Deployment
                          items:
                            description: |-
                              ContainerSpec defines the properties available to override for each
                              container in a provider deployment such as Image and Args to the container’s
                              entrypoint.
                            properties:
                              args:
                                additionalProperties:
                                  type: string
                                description: |-
                                  Args represents extra provider specific flags that are not encoded as fields in this API.
                                  Explicit controller manager properties defined in the `Provider.ManagerSpec`
                                  will have higher precedence than those defined in `ContainerSpec.Args`.
                                  For example, `ManagerSpec.SyncPeriod` will be used instead of the
                                  container arg `--sync-period` if both are defined.
                                  The same holds for `ManagerSpec.FeatureGates` and `--feature-gates`.
                                type: object
                              command:
                                description: Command allows override container's entrypoint
                                  array.
                                items:
                                  type: string
                                type: array
                              env:
                                description: List of environment variables to set
                                  in the container.
                                items:
                                  description: EnvVar represents an environment variable
                                    present in a Container.
                                  properties:
                                    name:
                                      description: Name of the environment variable.
                                        Must be a C_IDENTIFIER.
                                      type: string
                                    value:
                                      description: |-
                                        Variable references $(VAR_NAME) are expanded
                                        using the previously defined environment variables in the container and
                                        any service environment variables. If a variable cannot be resolved,
                                        the reference in the input string will be unchanged. Double $$ are reduced
                                        to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
                                        "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
                                        Escaped references will never be expanded, regardless of whether the variable
                                        exists or not.
                                        Defaults to "".
                                      type: string
                                    valueFrom:
                                      description: Source for the environment variable's
                                        value. Cannot be used if value is not empty.
                                      properties:
                                        configMapKeyRef:
                                          description: Selects a key of a ConfigMap.
                                          properties:
                                            key:
                                              description: The key to select.
                                              type: string
                                            name:
                                              default: ""
                                              description: |-
                                                Name of the referent.
                                                This field is effectively required, but due to backwards compatibility is
                                                allowed to be empty. Instances of this type with an empty value here are
                                                almost certainly wrong.
                                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                              type: string
                                            optional:
                                              description: Specify whether the ConfigMap
                                                or its key must be defined
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        fieldRef:
                                          description: |-
                                            Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`,
                                            spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
                                          properties:
                                            apiVersion:
                                              description: Version of the schema the
                                                FieldPath is written in terms of,
                                                defaults to "v1".
                                              type: string
                                            fieldPath:
                                              description: Path of the field to select
                                                in the specified API version.
                                              type: string
                                          required:
                                          - fieldPath
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        resourceFieldRef:
                                          description: |-
                                            Selects a resource of the container: only resources limits and requests
                                            (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
                                          properties:
                                            containerName:
                                              description: 'Container name: required
                                                for volumes, optional for env vars'
                                              type: string
                                            divisor:
                                              anyOf:
                                              - type: integer
                                              - type: string
                                              description: Specifies the output format
                                                of the exposed resources, defaults
                                                to "1"
                                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                              x-kubernetes-int-or-string: true
                                            resource:
                                              description: 'Required: resource to
                                                select'
                                              type: string
                                          required:
                                          - resource
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        secretKeyRef:
                                          description: Selects a key of a secret in
                                            the pod's namespace
                                          properties:
                                            key:
                                              description: The key of the secret to
                                                select from.  Must be a valid secret
                                                key.
                                              type: string
                                            name:
                                              default: ""
                                              description: |-
                                                Name of the referent.
                                                This field is effectively required, but due to backwards compatibility is
                                                allowed to be empty. Instances of this type with an empty value here are
                                                almost certainly wrong.
                                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                              type: string
                                            optional:
                                              description: Specify whether the Secret
                                                or its key must be defined
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                      type: object
                                  required:
                                  - name
                                  type: object
                                type: array
                              imageUrl:
                                description: Container Image URL
                                type: string
                              name:
                                description: Name of the container. Cannot be updated.
                                type: string
                              resources:
                                description: Compute resources required by this container.
                                properties:
                                  claims:
                                    description: |-
                                      Claims lists the names of resources, defined in spec.resourceClaims,
                                      that are used by this container.

                                      This is an alpha field and requires enabling the
                                      DynamicResourceAllocation feature gate.

                                      This field is immutable. It can only be set for containers.
                                    items:
                                      description: ResourceClaim references one entry
                                        in PodSpec.ResourceClaims.
                                      properties:
                                        name:
                                          description: |-
                                            Name must match the name of one entry in pod.spec.resourceClaims of
                                            the Pod where this field is used. It makes that resource available
                                            inside a container.
                                          type: string
                                        request:
                                          description: |-
                                            Request is the name chosen for a request in the referenced claim.
                                            If empty, everything from the claim is made available, otherwise
                                            only the result of this request.
                                          type: string
                                      required:
                                      - name
                                      type: object
                                    type: array
                                    x-kubernetes-list-map-keys:
                                    - name
                                    x-kubernetes-list-type: map
                                  limits:
                                    additionalProperties:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                      x-kubernetes-int-or-string: true
                                    description: |-
                                      Limits describes the maximum amount of compute resources allowed.
                                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                    type: object
                                  requests:
                                    additionalProperties:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                      x-kubernetes-int-or-string: true
                                    description: |-
                                      Requests describes the minimum amount of compute resources required.
                                      If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                      otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                    type: object
                                type: object
                            required:
                            - name
                            type: object
                          type: array
                        imagePullSecrets:
                          description: List of image pull secrets specified in the
                            Deployment
                          items:
                            description: |-
                              LocalObjectReference contains enough information to let you locate the
                              referenced object inside the same namespace.
                            properties:
                              name:
                                default: ""
                                description: |-
                                  Name of the referent.
                                  This field is effectively required, but due to backwards compatibility is
                                  allowed to be empty. Instances of this type with an empty value here are
                                  almost certainly wrong.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                type: string
                            type: object
                            x-kubernetes-map-type: atomic
                          type: array
                        nodeSelector:
                          additionalProperties:
                            type: string
                          description: |-
                            NodeSelector is a selector which must be true for the pod to fit on a node.
                            Selector which must match a node's labels for the pod to be scheduled on that node.
                            More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
                          type: object
                        replicas:
                          description: Number of desired pods. This is a pointer to
                            distinguish between explicit zero and not specified. Defaults
                            to 1.
                          minimum: 0
                          type: integer
                        serviceAccountName:
                          description: If specified, the pod's service account
                          type: string
                        tolerations:
                          description: If specified, the pod's tolerations.
                          items:
                            description: |-
                              The pod this Toleration is attached to tolerates any taint that matches
                              the triple <key,value,effect> using the matching operator <operator>.
                            properties:
                              effect:
                                description: |-
                                  Effect indicates the taint effect to match. Empty means match all taint effects.
                                  When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
                                type: string
                              key:
                                description: |-
                                  Key is the taint key that the toleration applies to. Empty means match all taint keys.
                                  If the key is empty, operator must be Exists; this combination means to match all values and all keys.
                                type: string
                              operator:
                                description: |-
                                  Operator represents a key's relationship to the value.
                                  Valid operators are Exists and Equal. Defaults to Equal.
                                  Exists is equivalent to wildcard for value, so that a pod can
                                  tolerate all taints of a particular category.
                                type: string
                              tolerationSeconds:
                                description: |-
                                  TolerationSeconds represents the period of time the toleration (which must be
                                  of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
                                  it is not set, which means tolerate the taint forever (do not evict). Zero and
                                  negative values will be treated as 0 (evict immediately) by the system.
                                format: int64
                                type: integer
                              value:
                                description: |-
                                  Value is the taint value the toleration matches to.
                                  If the operator is Exists, the value should be empty, otherwise just a regular string.
                                type: string
                            type: object
                          type: array
                      type: object
                    manager:
                      description: Manager defines the properties that can be enabled
                        on the controller manager for the additional provider deployment.
                      properties:
                        additionalArgs:
                          additionalProperties:
                            type: string
                          description: |-
                            AdditionalArgs is a map of additional options that will be passed
                            in as container args to the provider's controller manager.
                          type: object
                        cacheNamespace:
                          description: |-
                            CacheNamespace if specified restricts the manager's cache to watch objects in
                            the desired namespace Defaults to all namespaces

                            Note: If a namespace is specified, controllers can still Watch for a
                            cluster-scoped resource (e.g Node).  For namespaced resources the cache
                            will only hold objects from the desired namespace.
                          type: string
                        controller:
                          description: |-
                            Controller contains global configuration options for controllers
                            registered within this manager.
                          properties:
                            cacheSyncTimeout:
                              description: |-
                                CacheSyncTimeout refers to the time limit set to wait for syncing caches.
                                Defaults to 2 minutes if not set.
                              format: int64
                              type: integer
                            groupKindConcurrency:
                              additionalProperties:
                                type: integer
                              description: |-
                                GroupKindConcurrency is a map from a Kind to the number of concurrent reconciliation
                                allowed for that controller.

                                When a controller is registered within this manager using the builder utilities,
                                users have to specify the type the controller reconciles in the For(...) call.
                                If the object's kind passed matches one of the keys in this map, the concurrency
                                for that controller is set to the number specified.

                                The key is expected to be consistent in form with GroupKind.String(),
                                e.g. ReplicaSet in apps group (regardless of version) would be `ReplicaSet.apps`.
                              type: object
                            recoverPanic:
                              description: RecoverPanic indicates if panics should
                                be recovered.
                              type: boolean
                          type: object
                        featureGates:
                          additionalProperties:
                            type: boolean
                          description: |-
                            FeatureGates define provider specific feature flags that will be passed
                            in as container args to the provider's controller manager.
                            Controller Manager flag is --feature-gates.
                          type: object
                        gracefulShutDown:
                          description: |-
                            GracefulShutdownTimeout is the duration given to runnable to stop before the manager actually returns on stop.
                            To disable graceful shutdown, set to time.Duration(0)
                            To use graceful shutdown without timeout, set to a negative duration, e.G. time.Duration(-1)
                            The graceful shutdown is skipped for safety reasons in case the leader election lease is lost.
                          type: string
                        health:
                          description: Health contains the controller health configuration
                          properties:
                            healthProbeBindAddress:
                              description: |-
                                HealthProbeBindAddress is the TCP address that the controller should bind to
                                for serving health probes
                                It can be set to "0" or "" to disable serving the health probe.
                              type: string
                            livenessEndpointName:
                              description: LivenessEndpointName, defaults to "healthz"
                              type: string
                            readinessEndpointName:
                              description: ReadinessEndpointName, defaults to "readyz"
                              type: string
                          type: object
                        leaderElection:
                          description: |-
                            LeaderElection is the LeaderElection config to be used when configuring
                            the manager.Manager leader election
                          properties:
                            leaderElect:
                              description: |-
                                leaderElect enables a leader election client to gain leadership
                                before executing the main loop. Enable this when running replicated
                                components for high availability.
                              type: boolean
                            leaseDuration:
                              description: |-
                                leaseDuration is the duration that non-leader candidates will wait
                                after observing a leadership renewal until attempting to acquire
                                leadership of a led but unrenewed leader slot. This is effectively the
                                maximum duration that a leader can be stopped before it is replaced
                                by another candidate. This is only applicable if leader election is
                                enabled.
                              type: string
                            renewDeadline:
                              description: |-
                                renewDeadline is the interval between attempts by the acting master to
                                renew a leadership slot before it stops leading. This must be less
                                than or equal to the lease duration. This is only applicable if leader
                                election is enabled.
                              type: string
                            resourceLock:
                              description: |-
                                resourceLock indicates the resource object type that will be used to lock
                                during leader election cycles.
                              type: string
                            resourceName:
                              description: |-
                                resourceName indicates the name of resource object that will be used to lock
                                during leader election cycles.
                              type: string
                            resourceNamespace:
                              description: |-
                                resourceName indicates the namespace of resource object that will be used to lock
                                during leader election cycles.
                              type: string
                            retryPeriod:
                              description: |-
                                retryPeriod is the duration the clients should wait between attempting
                                acquisition and renewal of a leadership. This is only applicable if
                                leader election is enabled.
                              type: string
                          required:
                          - leaderElect
                          - leaseDuration
                          - renewDeadline
                          - resourceLock
                          - resourceName
                          - resourceNamespace
                          - retryPeriod
                          type: object
                        maxConcurrentReconciles:
                          description: |-
                            MaxConcurrentReconciles is the maximum number of concurrent Reconciles
                            which can be run.
                          minimum: 1
                          type: integer
                        metrics:
                          description: Metrics contains the controller metrics configuration
                          properties:
                            bindAddress:
                              description: |-
                                BindAddress is the TCP address that the controller should bind to
                                for serving prometheus metrics.
                                It can be set to "0" to disable the metrics serving.
                              type: string
                          type: object
                        profilerAddress:
                          description: |-
                            ProfilerAddress defines the bind address to expose the pprof profiler (e.g. localhost:6060).
                            Default empty, meaning the profiler is disabled.
                            Controller Manager flag is --profiler-address.
                          type: string
                        syncPeriod:
                          description: |-
                            SyncPeriod determines the minimum frequency at which watched resources are
                            reconciled. A lower period will correct entropy more quickly, but reduce
                            responsiveness to change if there are many watched resources. Change this
                            value only if you know what you are doing. Defaults to 10 hours if unset.
                            there will a 10 percent jitter between the SyncPeriod of all controllers
                            so that all controllers will not send list requests simultaneously.
                          type: string
                        verbosity:
                          default: 1
                          description: |-
                            Verbosity set the logs verbosity. Defaults to 1.
                            Controller Manager flag is --verbosity.
                          minimum: 0
                          type: integer
                        webhook:
                          description: Webhook contains the controllers webhook configuration
                          properties:
                            certDir:
                              description: |-
                                CertDir is the directory that contains the server key and certificate.
                                if not set, webhook server would look up the server key and certificate in
                                {TempDir}/k8s-webhook-server/serving-certs. The server key and certificate
                                must be named tls.key and tls.crt, respectively.
                              type: string
                            host:
                              description: |-
                                Host is the hostname that the webhook server binds to.
                                It is used to set webhook.Server.Host.
                              type: string
                            port:
                              description: |-
                                Port is the port that the webhook server serves at.
                                It is used to set webhook.Server.Port.
                              type: integer
                          type: object
                      type: object
                  type: object
                description: |-
                  AdditionalDeployments is a map of additional deployments that the provider
                  should manage. The key is the name of the deployment and the value is the
                  DeploymentSpec.
                type: object
              additionalManifests:
                description: |-
                  AdditionalManifests is reference to configmap that contains additional manifests that will be applied
                  together with the provider components. The key for storing these manifests has to be `manifests`.
                  The manifests are applied only once when a certain release is installed/upgraded. If namespace is not specified, the
                  namespace of the provider will be used. There is no validation of the yaml content inside the configmap.
                properties:
                  name:
                    description: Name defines the name of the configmap.
                    type: string
                  namespace:
                    description: Namespace defines the namespace of the configmap.
                    type: string
                required:
                - name
                type: object
              configSecret:
                description: |-
                  ConfigSecret is the object with name and namespace of the Secret providing
                  the configuration variables for the current provider instance, like e.g. credentials.
                  Such configurations will be used when creating or upgrading provider components.
                  The contents of the secret will be treated as immutable. If changes need
                  to be made, a new object can be created and the name should be updated.
                  The contents should be in the form of key:value. This secret must be in
                  the same namespace as the provider.
                properties:
                  name:
                    description: Name defines the name of the secret.
                    type: string
                  namespace:
                    description: Namespace defines the namespace of the secret.
                    type: string
                required:
                - name
                type: object
              credentials:
                description: Credentials is the structure holding the credentials
                  to use for the provider. Only one credential type could be set at
                  a time.
                example:
                  rancherCloudCredential: user-credential
                maxProperties: 1
                minProperties: 1
                properties:
                  rancherCloudCredential:
                    description: RancherCloudCredential is the Rancher Cloud Credential
                      name
                    type: string
                  rancherCloudCredentialNamespaceName:
                    description: RancherCloudCredentialNamespaceName is the Rancher
                      Cloud Credential namespace:name reference
                    type: string
                type: object
                x-kubernetes-map-type: atomic
                x-kubernetes-validations:
                - message: rancherCloudCredentialNamespaceName should be in the namespace:name
                    format.
                  rule: '!has(self.rancherCloudCredentialNamespaceName) || self.rancherCloudCredentialNamespaceName.matches(''^.+:.+$'')'
              deployment:
                description: Deployment defines the properties that can be enabled
                  on the deployment for the provider.
                properties:
                  affinity:
                    description: If specified, the pod's scheduling constraints
                    properties:
                      nodeAffinity:
                        description: Describes node affinity scheduling rules for
                          the pod.
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              The scheduler will prefer to schedule pods to nodes that satisfy
                              the affinity expressions specified by this field, but it may choose
                              a node that violates one or more of the expressions. The node that is
                              most preferred is the one with the greatest sum of weights, i.e.
                              for each node that meets all of the scheduling requirements (resource
                              request, requiredDuringScheduling affinity expressions, etc.),
                              compute a sum by iterating through the elements of this field and adding
                              "weight" to the sum if the node matches the corresponding matchExpressions; the
                              node(s) with the highest sum are the most preferred.
                            items:
                              description: |-
                                An empty preferred scheduling term matches all objects with implicit weight 0
                                (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
                              properties:
                                preference:
                                  description: A node selector term, associated with
                                    the corresponding weight.
                                  properties:
                                    matchExpressions:
                                      description: A list of node selector requirements
                                        by node's labels.
                                      items:
                                        description: |-
                                          A node selector requirement is a selector that contains values, a key, and an operator
                                          that relates the key and values.
                                        properties:
                                          key:
                                            description: The label key that the selector
                                              applies to.
                                            type: string
                                          operator:
                                            description: |-
                                              Represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                            type: string
                                          values:
                                            description: |-
                                              An array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. If the operator is Gt or Lt, the values
                                              array must have a single element, which will be interpreted as an integer.
                                              This array is replaced during a strategic merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchFields:
                                      description: A list of node selector requirements
                                        by node's fields.
                                      items:
                                        description: |-
                                          A node selector requirement is a selector that contains values, a key, and an operator
                                          that relates the key and values.
                                        properties:
                                          key:
                                            description: The label key that the selector
                                              applies to.
                                            type: string
                                          operator:
                                            description: |-
                                              Represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                            type: string
                                          values:
                                            description: |-
                                              An array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. If the operator is Gt or Lt, the values
                                              array must have a single element, which will be interpreted as an integer.
                                              This array is replaced during a strategic merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                  x-kubernetes-map-type: atomic
                                weight:
                                  description: Weight associated with matching the
                                    corresponding nodeSelectorTerm, in the range 1-100.
                                  format: int32
                                  type: integer
                              required:
                              - preference
                              - weight
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          requiredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              If the affinity requirements specified by this field are not met at
                              scheduling time, the pod will not be scheduled onto the node.
                              If the affinity requirements specified by this field cease to be met
                              at some point during pod execution (e.g. due to an update), the system
                              may or may not try to eventually evict the pod from its node.
                            properties:
                              nodeSelectorTerms:
                                description: Required. A list of node selector terms.
                                  The terms are ORed.
                                items:
                                  description: |-
                                    A null or empty node selector term matches no objects. The requirements of
                                    them are ANDed.
                                    The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
                                  properties:
                                    matchExpressions:
                                      description: A list of node selector requirements
                                        by node's labels.
                                      items:
                                        description: |-
                                          A node selector requirement is a selector that contains values, a key, and an operator
                                          that relates the key and values.
                                        properties:
                                          key:
                                            description: The label key that the selector
                                              applies to.
                                            type: string
                                          operator:
                                            description: |-
                                              Represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                            type: string
                                          values:
                                            description: |-
                                              An array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. If the operator is Gt or Lt, the values
                                              array must have a single element, which will be interpreted as an integer.
                                              This array is replaced during a strategic merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchFields:
                                      description: A list of node selector requirements
                                        by node's fields.
                                      items:
                                        description: |-
                                          A node selector requirement is a selector that contains values, a key, and an operator
                                          that relates the key and values.
                                        properties:
                                          key:
                                            description: The label key that the selector
                                              applies to.
                                            type: string
                                          operator:
                                            description: |-
                                              Represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                            type: string
                                          values:
                                            description: |-
                                              An array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. If the operator is Gt or Lt, the values
                                              array must have a single element, which will be interpreted as an integer.
                                              This array is replaced during a strategic merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                  x-kubernetes-map-type: atomic
                                type: array
                                x-kubernetes-list-type: atomic
                            required:
                            - nodeSelectorTerms
                            type: object
                            x-kubernetes-map-type: atomic
                        type: object
                      podAffinity:
                        description: Describes pod affinity scheduling rules (e.g.
                          co-locate this pod in the same node, zone, etc. as some
                          other pod(s)).
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              The scheduler will prefer to schedule pods to nodes that satisfy
                              the affinity expressions specified by this field, but it may choose
                              a node that violates one or more of the expressions. The node that is
                              most preferred is the one with the greatest sum of weights, i.e.
                              for each node that meets all of the scheduling requirements (resource
                              request, requiredDuringScheduling affinity expressions, etc.),
                              compute a sum by iterating through the elements of this field and adding
                              "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
                              node(s) with the highest sum are the most preferred.
                            items:
                              description: The weights of all of the matched WeightedPodAffinityTerm
                                fields are added per-node to find the most preferred
                                node(s)
                              properties:
                                podAffinityTerm:
                                  description: Required. A pod affinity term, associated
                                    with the corresponding weight.
                                  properties:
                                    labelSelector:
                                      description: |-
                                        A label query over a set of resources, in this case pods.
                                        If it's null, this PodAffinityTerm matches with no Pods.
                                      properties:
                                        matchExpressions:
                                          description: matchExpressions is a list
                                            of label selector requirements. The requirements
                                            are ANDed.
                                          items:
                                            description: |-
                                              A label selector requirement is a selector that contains values, a key, and an operator that
                                              relates the key and values.
                                            properties:
                                              key:
                                                description: key is the label key
                                                  that the selector applies to.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    matchLabelKeys:
                                      description: |-
                                        MatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                        This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    mismatchLabelKeys:
                                      description: |-
                                        MismatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                        This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    namespaceSelector:
                                      description: |-
                                        A label query over the set of namespaces that the term applies to.
                                        The term is applied to the union of the namespaces selected by this field
                                        and the ones listed in the namespaces field.
                                        null selector and null or empty namespaces list means "this pod's namespace".
                                        An empty selector ({}) matches all namespaces.
                                      properties:
                                        matchExpressions:
                                          description: matchExpressions is a list
                                            of label selector requirements. The requirements
                                            are ANDed.
                                          items:
                                            description: |-
                                              A label selector requirement is a selector that contains values, a key, and an operator that
                                              relates the key and values.
                                            properties:
                                              key:
                                                description: key is the label key
                                                  that the selector applies to.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    namespaces:
                                      description: |-
                                        namespaces specifies a static list of namespace names that the term applies to.
                                        The term is applied to the union of the namespaces listed in this field
                                        and the ones selected by namespaceSelector.
                                        null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    topologyKey:
                                      description: |-
                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                        whose value of the label with key topologyKey matches that of any node on which any of the
                                        selected pods is running.
                                        Empty topologyKey is not allowed.
                                      type: string
                                  required:
                                  - topologyKey
                                  type: object
                                weight:
                                  description: |-
                                    weight associated with matching the corresponding podAffinityTerm,
                                    in the range 1-100.
                                  format: int32
                                  type: integer
                              required:
                              - podAffinityTerm
                              - weight
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          requiredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              If the affinity requirements specified by this field are not met at
                              scheduling time, the pod will not be scheduled onto the node.
                              If the affinity requirements specified by this field cease to be met
                              at some point during pod execution (e.g. due to a pod label update), the
                              system may or may not try to eventually evict the pod from its node.
                              When there are multiple elements, the lists of nodes corresponding to each
                              podAffinityTerm are intersected, i.e. all terms must be satisfied.
                            items:
                              description: |-
                                Defines a set of pods (namely those matching the labelSelector
                                relative to the given namespace(s)) that this pod should be
                                co-located (affinity) or not co-located (anti-affinity) with,
                                where co-located is defined as running on a node whose value of
                                the label with key <topologyKey> matches that of any node on which
                                a pod of the set of pods is running
                              properties:
                                labelSelector:
                                  description: |-
                                    A label query over a set of resources, in this case pods.
                                    If it's null, this PodAffinityTerm matches with no Pods.
                                  properties:
                                    matchExpressions:
                                      description: matchExpressions is a list of label
                                        selector requirements. The requirements are
                                        ANDed.
                                      items:
                                        description: |-
                                          A label selector requirement is a selector that contains values, a key, and an operator that
                                          relates the key and values.
                                        properties:
                                          key:
                                            description: key is the label key that
                                              the selector applies to.
                                            type: string
                                          operator:
                                            description: |-
                                              operator represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists and DoesNotExist.
                                            type: string
                                          values:
                                            description: |-
                                              values is an array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                matchLabelKeys:
                                  description: |-
                                    MatchLabelKeys is a set of pod label keys to select which pods will
                                    be taken into consideration. The keys are used to lookup values from the
                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                    to select the group of existing pods which pods will be taken into consideration
                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                    pod labels will be ignored. The default value is empty.
                                    The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                    Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                    This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                mismatchLabelKeys:
                                  description: |-
                                    MismatchLabelKeys is a set of pod label keys to select which pods will
                                    be taken into consideration. The keys are used to lookup values from the
                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                    to select the group of existing pods which pods will be taken into consideration
                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                    pod labels will be ignored. The default value is empty.
                                    The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                    Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                    This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                namespaceSelector:
                                  description: |-
                                    A label query over the set of namespaces that the term applies to.
                                    The term is applied to the union of the namespaces selected by this field
                                    and the ones listed in the namespaces field.
                                    null selector and null or empty namespaces list means "this pod's namespace".
                                    An empty selector ({}) matches all namespaces.
                                  properties:
                                    matchExpressions:
                                      description: matchExpressions is a list of label
                                        selector requirements. The requirements are
                                        ANDed.
                                      items:
                                        description: |-
                                          A label selector requirement is a selector that contains values, a key, and an operator that
                                          relates the key and values.
                                        properties:
                                          key:
                                            description: key is the label key that
                                              the selector applies to.
                                            type: string
                                          operator:
                                            description: |-
                                              operator represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists and DoesNotExist.
                                            type: string
                                          values:
                                            description: |-
                                              values is an array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                namespaces:
                                  description: |-
                                    namespaces specifies a static list of namespace names that the term applies to.
                                    The term is applied to the union of the namespaces listed in this field
                                    and the ones selected by namespaceSelector.
                                    null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                topologyKey:
                                  description: |-
                                    This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                    the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                    whose value of the label with key topologyKey matches that of any node on which any of the
                                    selected pods is running.
                                    Empty topologyKey is not allowed.
                                  type: string
                              required:
                              - topologyKey
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                        type: object
                      podAntiAffinity:
                        description: Describes pod anti-affinity scheduling rules
                          (e.g. avoid putting this pod in the same node, zone, etc.
                          as some other pod(s)).
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              The scheduler will prefer to schedule pods to nodes that satisfy
                              the anti-affinity expressions specified by this field, but it may choose
                              a node that violates one or more of the expressions. The node that is
                              most preferred is the one with the greatest sum of weights, i.e.
                              for each node that meets all of the scheduling requirements (resource
                              request, requiredDuringScheduling anti-affinity expressions, etc.),
                              compute a sum by iterating through the elements of this field and adding
                              "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
                              node(s) with the highest sum are the most preferred.
                            items:
                              description: The weights of all of the matched WeightedPodAffinityTerm
                                fields are added per-node to find the most preferred
                                node(s)
                              properties:
                                podAffinityTerm:
                                  description: Required. A pod affinity term, associated
                                    with the corresponding weight.
                                  properties:
                                    labelSelector:
                                      description: |-
                                        A label query over a set of resources, in this case pods.
                                        If it's null, this PodAffinityTerm matches with no Pods.
                                      properties:
                                        matchExpressions:
                                          description: matchExpressions is a list
                                            of label selector requirements. The requirements
                                            are ANDed.
                                          items:
                                            description: |-
                                              A label selector requirement is a selector that contains values, a key, and an operator that
                                              relates the key and values.
                                            properties:
                                              key:
                                                description: key is the label key
                                                  that the selector applies to.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    matchLabelKeys:
                                      description: |-
                                        MatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                        This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    mismatchLabelKeys:
                                      description: |-
                                        MismatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                        This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    namespaceSelector:
                                      description: |-
                                        A label query over the set of namespaces that the term applies to.
                                        The term is applied to the union of the namespaces selected by this field
                                        and the ones listed in the namespaces field.
                                        null selector and null or empty namespaces list means "this pod's namespace".
                                        An empty selector ({}) matches all namespaces.
                                      properties:
                                        matchExpressions:
                                          description: matchExpressions is a list
                                            of label selector requirements. The requirements
                                            are ANDed.
                                          items:
                                            description: |-
                                              A label selector requirement is a selector that contains values, a key, and an operator that
                                              relates the key and values.
                                            properties:
                                              key:
                                                description: key is the label key
                                                  that the selector applies to.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    namespaces:
                                      description: |-
                                        namespaces specifies a static list of namespace names that the term applies to.
                                        The term is applied to the union of the namespaces listed in this field
                                        and the ones selected by namespaceSelector.
                                        null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    topologyKey:
                                      description: |-
                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                        whose value of the label with key topologyKey matches that of any node on which any of the
                                        selected pods is running.
                                        Empty topologyKey is not allowed.
                                      type: string
                                  required:
                                  - topologyKey
                                  type: object
                                weight:
                                  description: |-
                                    weight associated with matching the corresponding podAffinityTerm,
                                    in the range 1-100.
                                  format: int32
                                  type: integer
                              required:
                              - podAffinityTerm
                              - weight
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          requiredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              If the anti-affinity requirements specified by this field are not met at
                              scheduling time, the pod will not be scheduled onto the node.
                              If the anti-affinity requirements specified by this field cease to be met
                              at some point during pod execution (e.g. due to a pod label update), the
                              system may or may not try to eventually evict the pod from its node.
                              When there are multiple elements, the lists of nodes corresponding to each
                              podAffinityTerm are intersected, i.e. all terms must be satisfied.
                            items:
                              description: |-
                                Defines a set of pods (namely those matching the labelSelector
                                relative to the given namespace(s)) that this pod should be
                                co-located (affinity) or not co-located (anti-affinity) with,
                                where co-located is defined as running on a node whose value of
                                the label with key <topologyKey> matches that of any node on which
                                a pod of the set of pods is running
                              properties:
                                labelSelector:
                                  description: |-
                                    A label query over a set of resources, in this case pods.
                                    If it's null, this PodAffinityTerm matches with no Pods.
                                  properties:
                                    matchExpressions:
                                      description: matchExpressions is a list of label
                                        selector requirements. The requirements are
                                        ANDed.
                                      items:
                                        description: |-
                                          A label selector requirement is a selector that contains values, a key, and an operator that
                                          relates the key and values.
                                        properties:
                                          key:
                                            description: key is the label key that
                                              the selector applies to.
                                            type: string
                                          operator:
                                            description: |-
                                              operator represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists and DoesNotExist.
                                            type: string
                                          values:
                                            description: |-
                                              values is an array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                matchLabelKeys:
                                  description: |-
                                    MatchLabelKeys is a set of pod label keys to select which pods will
                                    be taken into consideration. The keys are used to lookup values from the
                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                    to select the group of existing pods which pods will be taken into consideration
                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                    pod labels will be ignored. The default value is empty.
                                    The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                    Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                    This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                mismatchLabelKeys:
                                  description: |-
                                    MismatchLabelKeys is a set of pod label keys to select which pods will
                                    be taken into consideration. The keys are used to lookup values from the
                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                    to select the group of existing pods which pods will be taken into consideration
                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                    pod labels will be ignored. The default value is empty.
                                    The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                    Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                    This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                namespaceSelector:
                                  description: |-
                                    A label query over the set of namespaces that the term applies to.
                                    The term is applied to the union of the namespaces selected by this field
                                    and the ones listed in the namespaces field.
                                    null selector and null or empty namespaces list means "this pod's namespace".
                                    An empty selector ({}) matches all namespaces.
                                  properties:
                                    matchExpressions:
                                      description: matchExpressions is a list of label
                                        selector requirements. The requirements are
                                        ANDed.
                                      items:
                                        description: |-
                                          A label selector requirement is a selector that contains values, a key, and an operator that
                                          relates the key and values.
                                        properties:
                                          key:
                                            description: key is the label key that
                                              the selector applies to.
                                            type: string
                                          operator:
                                            description: |-
                                              operator represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists and DoesNotExist.
                                            type: string
                                          values:
                                            description: |-
                                              values is an array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                namespaces:
                                  description: |-
                                    namespaces specifies a static list of namespace names that the term applies to.
                                    The term is applied to the union of the namespaces listed in this field
                                    and the ones selected by namespaceSelector.
                                    null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                topologyKey:
                                  description: |-
                                    This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                    the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                    whose value of the label with key topologyKey matches that of any node on which any of the
                                    selected pods is running.
                                    Empty topologyKey is not allowed.
                                  type: string
                              required:
                              - topologyKey
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                        type: object
                    type: object
                  containers:
                    description: List of containers specified in the Deployment
                    items:
                      description: |-
                        ContainerSpec defines the properties available to override for each
                        container in a provider deployment such as Image and Args to the container’s
                        entrypoint.
                      properties:
                        args:
                          additionalProperties:
                            type: string
                          description: |-
                            Args represents extra provider specific flags that are not encoded as fields in this API.
                            Explicit controller manager properties defined in the `Provider.ManagerSpec`
                            will have higher precedence than those defined in `ContainerSpec.Args`.
                            For example, `ManagerSpec.SyncPeriod` will be used instead of the
                            container arg `--sync-period` if both are defined.
                            The same holds for `ManagerSpec.FeatureGates` and `--feature-gates`.
                          type: object
                        command:
                          description: Command allows override container's entrypoint
                            array.
                          items:
                            type: string
                          type: array
                        env:
                          description: List of environment variables to set in the
                            container.
                          items:
                            description: EnvVar represents an environment variable
                              present in a Container.
                            properties:
                              name:
                                description: Name of the environment variable. Must
                                  be a C_IDENTIFIER.
                                type: string
                              value:
                                description: |-
                                  Variable references $(VAR_NAME) are expanded
                                  using the previously defined environment variables in the container and
                                  any service environment variables. If a variable cannot be resolved,
                                  the reference in the input string will be unchanged. Double $$ are reduced
                                  to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
                                  "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
                                  Escaped references will never be expanded, regardless of whether the variable
                                  exists or not.
                                  Defaults to "".
                                type: string
                              valueFrom:
                                description: Source for the environment variable's
                                  value. Cannot be used if value is not empty.
                                properties:
                                  configMapKeyRef:
                                    description: Selects a key of a ConfigMap.
                                    properties:
                                      key:
                                        description: The key to select.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the ConfigMap
                                          or its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  fieldRef:
                                    description: |-
                                      Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`,
                                      spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
                                    properties:
                                      apiVersion:
                                        description: Version of the schema the FieldPath
                                          is written in terms of, defaults to "v1".
                                        type: string
                                      fieldPath:
                                        description: Path of the field to select in
                                          the specified API version.
                                        type: string
                                    required:
                                    - fieldPath
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  resourceFieldRef:
                                    description: |-
                                      Selects a resource of the container: only resources limits and requests
                                      (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
                                    properties:
                                      containerName:
                                        description: 'Container name: required for
                                          volumes, optional for env vars'
                                        type: string
                                      divisor:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        description: Specifies the output format of
                                          the exposed resources, defaults to "1"
                                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                        x-kubernetes-int-or-string: true
                                      resource:
                                        description: 'Required: resource to select'
                                        type: string
                                    required:
                                    - resource
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  secretKeyRef:
                                    description: Selects a key of a secret in the
                                      pod's namespace
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                type: object
                            required:
                            - name
                            type: object
                          type: array
                        imageUrl:
                          description: Container Image URL
                          type: string
                        name:
                          description: Name of the container. Cannot be updated.
                          type: string
                        resources:
                          description: Compute resources required by this container.
                          properties:
                            claims:
                              description: |-
                                Claims lists the names of resources, defined in spec.resourceClaims,
                                that are used by this container.

                                This is an alpha field and requires enabling the
                                DynamicResourceAllocation feature gate.

                                This field is immutable. It can only be set for containers.
                              items:
                                description: ResourceClaim references one entry in
                                  PodSpec.ResourceClaims.
                                properties:
                                  name:
                                    description: |-
                                      Name must match the name of one entry in pod.spec.resourceClaims of
                                      the Pod where this field is used. It makes that resource available
                                      inside a container.
                                    type: string
                                  request:
                                    description: |-
                                      Request is the name chosen for a request in the referenced claim.
                                      If empty, everything from the claim is made available, otherwise
                                      only the result of this request.
                                    type: string
                                required:
                                - name
                                type: object
                              type: array
                              x-kubernetes-list-map-keys:
                              - name
                              x-kubernetes-list-type: map
                            limits:
                              additionalProperties:
                                anyOf:
                                - type: integer
                                - type: string
                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                x-kubernetes-int-or-string: true
                              description: |-
                                Limits describes the maximum amount of compute resources allowed.
                                More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                              type: object
                            requests:
                              additionalProperties:
                                anyOf:
                                - type: integer
                                - type: string
                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                x-kubernetes-int-or-string: true
                              description: |-
                                Requests describes the minimum amount of compute resources required.
                                If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                              type: object
                          type: object
                      required:
                      - name
                      type: object
                    type: array
                  imagePullSecrets:
                    description: List of image pull secrets specified in the Deployment
                    items:
                      description: |-
                        LocalObjectReference contains enough information to let you locate the
                        referenced object inside the same namespace.
                      properties:
                        name:
                          default: ""
                          description: |-
                            Name of the referent.
                            This field is effectively required, but due to backwards compatibility is
                            allowed to be empty. Instances of this type with an empty value here are
                            almost certainly wrong.
                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                          type: string
                      type: object
                      x-kubernetes-map-type: atomic
                    type: array
                  nodeSelector:
                    additionalProperties:
                      type: string
                    description: |-
                      NodeSelector is a selector which must be true for the pod to fit on a node.
                      Selector which must match a node's labels for the pod to be scheduled on that node.
                      More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
                    type: object
                  replicas:
                    description: Number of desired pods. This is a pointer to distinguish
                      between explicit zero and not specified. Defaults to 1.
                    minimum: 0
                    type: integer
                  serviceAccountName:
                    description: If specified, the pod's service account
                    type: string
                  tolerations:
                    description: If specified, the pod's tolerations.
                    items:
                      description: |-
                        The pod this Toleration is attached to tolerates any taint that matches
                        the triple <key,value,effect> using the matching operator <operator>.
                      properties:
                        effect:
                          description: |-
                            Effect indicates the taint effect to match. Empty means match all taint effects.
                            When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
                          type: string
                        key:
                          description: |-
                            Key is the taint key that the toleration applies to. Empty means match all taint keys.
                            If the key is empty, operator must be Exists; this combination means to match all values and all keys.
                          type: string
                        operator:
                          description: |-
                            Operator represents a key's relationship to the value.
                            Valid operators are Exists and Equal. Defaults to Equal.
                            Exists is equivalent to wildcard for value, so that a pod can
                            tolerate all taints of a particular category.
                          type: string
                        tolerationSeconds:
                          description: |-
                            TolerationSeconds represents the period of time the toleration (which must be
                            of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
                            it is not set, which means tolerate the taint forever (do not evict). Zero and
                            negative values will be treated as 0 (evict immediately) by the system.
                          format: int64
                          type: integer
                        value:
                          description: |-
                            Value is the taint value the toleration matches to.
                            If the operator is Exists, the value should be empty, otherwise just a regular string.
                          type: string
                      type: object
                    type: array
                type: object
              enableAutomaticUpdate:
                description: EnableAutomaticUpdate can be used to automatically update
                  the CAPIProvider to a newest version.
                type: boolean
              features:
                description: Features is a collection of features to enable.
                example:
                  clusterResourceSet: true
                  clusterTopology: true
                  machinePool: true
                properties:
                  clusterResourceSet:
                    description: ClusterResourceSet if set to true will enable the
                      cluster resource set feature.
                    type: boolean
                  clusterTopology:
                    description: ClusterTopology if set to true will enable the clusterclass
                      feature.
                    type: boolean
                  machinePool:
                    description: MachinePool if set to true will enable the machine
                      pool feature.
                    type: boolean
                type: object
              fetchConfig:
                description: |-
                  FetchConfig determines how the operator will fetch the components and metadata for the provider.
                  If nil, the operator will try to fetch components according to default
                  embedded fetch configuration for the given kind and `ObjectMeta.Name`.
                  For example, the infrastructure name `aws` will fetch artifacts from
                  https://github.com/kubernetes-sigs/cluster-api-provider-aws/releases.
                properties:
                  oci:
                    description: |-
                      OCI to be used for fetching the provider’s components and metadata from an OCI artifact.
                      You must set `providerSpec.Version` field for operator to pick up desired version of the release from GitHub.
                      If the providerSpec.Version is missing, latest provider version from clusterctl defaults is used.
                    type: string
                  selector:
                    description: |-
                      Selector to be used for fetching provider’s components and metadata from
                      ConfigMaps stored inside the cluster. Each ConfigMap is expected to contain
                      components and metadata for a specific version only.
                      Note: the name of the ConfigMap should be set to the version or to override this
                      add a label like the following: provider.cluster.x-k8s.io/version=v1.4.3
                    properties:
                      matchExpressions:
                        description: matchExpressions is a list of label selector
                          requirements. The requirements are ANDed.
                        items:
                          description: |-
                            A label selector requirement is a selector that contains values, a key, and an operator that
                            relates the key and values.
                          properties:
                            key:
                              description: key is the label key that the selector
                                applies to.
                              type: string
                            operator:
                              description: |-
                                operator represents a key's relationship to a set of values.
                                Valid operators are In, NotIn, Exists and DoesNotExist.
                              type: string
                            values:
                              description: |-
                                values is an array of string values. If the operator is In or NotIn,
                                the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                the values array must be empty. This array is replaced during a strategic
                                merge patch.
                              items:
                                type: string
                              type: array
                              x-kubernetes-list-type: atomic
                          required:
                          - key
                          - operator
                          type: object
                        type: array
                        x-kubernetes-list-type: atomic
                      matchLabels:
                        additionalProperties:
                          type: string
                        description: |-
                          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                          map is equivalent to an element of matchExpressions, whose key field is "key", the
                          operator is "In", and the values array contains only "value". The requirements are ANDed.
                        type: object
                    type: object
                    x-kubernetes-map-type: atomic
                  url:
                    description: |-
                      URL to be used for fetching the provider’s components and metadata from a remote Github repository.
                      For example, https://github.com/{owner}/{repository}/releases
                      You must set `providerSpec.Version` field for operator to pick up
                      desired version of the release from GitHub.
                    type: string
                type: object
                x-kubernetes-validations:
                - message: Must specify one and only one of {oci, url, selector}
                  rule: '[has(self.oci), has(self.url), has(self.selector)].exists_one(x,x)'
              manager:
                description: Manager defines the properties that can be enabled on
                  the controller manager for the provider.
                properties:
                  additionalArgs:
                    additionalProperties:
                      type: string
                    description: |-
                      AdditionalArgs is a map of additional options that will be passed
                      in as container args to the provider's controller manager.
                    type: object
                  cacheNamespace:
                    description: |-
                      CacheNamespace if specified restricts the manager's cache to watch objects in
                      the desired namespace Defaults to all namespaces

                      Note: If a namespace is specified, controllers can still Watch for a
                      cluster-scoped resource (e.g Node).  For namespaced resources the cache
                      will only hold objects from the desired namespace.
                    type: string
                  controller:
                    description: |-
                      Controller contains global configuration options for controllers
                      registered within this manager.
                    properties:
                      cacheSyncTimeout:
                        description: |-
                          CacheSyncTimeout refers to the time limit set to wait for syncing caches.
                          Defaults to 2 minutes if not set.
                        format: int64
                        type: integer
                      groupKindConcurrency:
                        additionalProperties:
                          type: integer
                        description: |-
                          GroupKindConcurrency is a map from a Kind to the number of concurrent reconciliation
                          allowed for that controller.

                          When a controller is registered within this manager using the builder utilities,
                          users have to specify the type the controller reconciles in the For(...) call.
                          If the object's kind passed matches one of the keys in this map, the concurrency
                          for that controller is set to the number specified.

                          The key is expected to be consistent in form with GroupKind.String(),
                          e.g. ReplicaSet in apps group (regardless of version) would be `ReplicaSet.apps`.
                        type: object
                      recoverPanic:
                        description: RecoverPanic indicates if panics should be recovered.
                        type: boolean
                    type: object
                  featureGates:
                    additionalProperties:
                      type: boolean
                    description: |-
                      FeatureGates define provider specific feature flags that will be passed
                      in as container args to the provider's controller manager.
                      Controller Manager flag is --feature-gates.
                    type: object
                  gracefulShutDown:
                    description: |-
                      GracefulShutdownTimeout is the duration given to runnable to stop before the manager actually returns on stop.
                      To disable graceful shutdown, set to time.Duration(0)
                      To use graceful shutdown without timeout, set to a negative duration, e.G. time.Duration(-1)
                      The graceful shutdown is skipped for safety reasons in case the leader election lease is lost.
                    type: string
                  health:
                    description: Health contains the controller health configuration
                    properties:
                      healthProbeBindAddress:
                        description: |-
                          HealthProbeBindAddress is the TCP address that the controller should bind to
                          for serving health probes
                          It can be set to "0" or "" to disable serving the health probe.
                        type: string
                      livenessEndpointName:
                        description: LivenessEndpointName, defaults to "healthz"
                        type: string
                      readinessEndpointName:
                        description: ReadinessEndpointName, defaults to "readyz"
                        type: string
                    type: object
                  leaderElection:
                    description: |-
                      LeaderElection is the LeaderElection config to be used when configuring
                      the manager.Manager leader election
                    properties:
                      leaderElect:
                        description: |-
                          leaderElect enables a leader election client to gain leadership
                          before executing the main loop. Enable this when running replicated
                          components for high availability.
                        type: boolean
                      leaseDuration:
                        description: |-
                          leaseDuration is the duration that non-leader candidates will wait
                          after observing a leadership renewal until attempting to acquire
                          leadership of a led but unrenewed leader slot. This is effectively the
                          maximum duration that a leader can be stopped before it is replaced
                          by another candidate. This is only applicable if leader election is
                          enabled.
                        type: string
                      renewDeadline:
                        description: |-
                          renewDeadline is the interval between attempts by the acting master to
                          renew a leadership slot before it stops leading. This must be less
                          than or equal to the lease duration. This is only applicable if leader
                          election is enabled.
                        type: string
                      resourceLock:
                        description: |-
                          resourceLock indicates the resource object type that will be used to lock
                          during leader election cycles.
                        type: string
                      resourceName:
                        description: |-
                          resourceName indicates the name of resource object that will be used to lock
                          during leader election cycles.
                        type: string
                      resourceNamespace:
                        description: |-
                          resourceName indicates the namespace of resource object that will be used to lock
                          during leader election cycles.
                        type: string
                      retryPeriod:
                        description: |-
                          retryPeriod is the duration the clients should wait between attempting
                          acquisition and renewal of a leadership. This is only applicable if
                          leader election is enabled.
                        type: string
                    required:
                    - leaderElect
                    - leaseDuration
                    - renewDeadline
                    - resourceLock
                    - resourceName
                    - resourceNamespace
                    - retryPeriod
                    type: object
                  maxConcurrentReconciles:
                    description: |-
                      MaxConcurrentReconciles is the maximum number of concurrent Reconciles
                      which can be run.
                    minimum: 1
                    type: integer
                  metrics:
                    description: Metrics contains the controller metrics configuration
                    properties:
                      bindAddress:
                        description: |-
                          BindAddress is the TCP address that the controller should bind to
                          for serving prometheus metrics.
                          It can be set to "0" to disable the metrics serving.
                        type: string
                    type: object
                  profilerAddress:
                    description: |-
                      ProfilerAddress defines the bind address to expose the pprof profiler (e.g. localhost:6060).
                      Default empty, meaning the profiler is disabled.
                      Controller Manager flag is --profiler-address.
                    type: string
                  syncPeriod:
                    description: |-
                      SyncPeriod determines the minimum frequency at which watched resources are
                      reconciled. A lower period will correct entropy more quickly, but reduce
                      responsiveness to change if there are many watched resources. Change this
                      value only if you know what you are doing. Defaults to 10 hours if unset.
                      there will a 10 percent jitter between the SyncPeriod of all controllers
                      so that all controllers will not send list requests simultaneously.
                    type: string
                  verbosity:
                    default: 1
                    description: |-
                      Verbosity set the logs verbosity. Defaults to 1.
                      Controller Manager flag is --verbosity.
                    minimum: 0
                    type: integer
                  webhook:
                    description: Webhook contains the controllers webhook configuration
                    properties:
                      certDir:
                        description: |-
                          CertDir is the directory that contains the server key and certificate.
                          if not set, webhook server would look up the server key and certificate in
                          {TempDir}/k8s-webhook-server/serving-certs. The server key and certificate
                          must be named tls.key and tls.crt, respectively.
                        type: string
                      host:
                        description: |-
                          Host is the hostname that the webhook server binds to.
                          It is used to set webhook.Server.Host.
                        type: string
                      port:
                        description: |-
                          Port is the port that the webhook server serves at.
                          It is used to set webhook.Server.Port.
                        type: integer
                    type: object
                type: object
              manifestPatches:
                description: |-
                  ManifestPatches are applied to rendered provider manifests to customize the
                  provider manifests. Patches are applied in the order they are specified.
                  The `kind` field must match the target object, and
                  if `apiVersion` is specified it will only be applied to matching objects.
                  This should be an inline yaml blob-string https://datatracker.ietf.org/doc/html/rfc7396
                items:
                  type: string
                type: array
              name:
                description: Name is the name of the provider to enable
                example: aws
                type: string
              type:
                description: Type is the type of the provider to enable
                example: InfrastructureProvider
                type: string
              variables:
                additionalProperties:
                  type: string
                description: Variables is a map of environment variables to add to
                  the content of the ConfigSecret
                example:
                  CLUSTER_TOPOLOGY: "true"
                  EXP_CLUSTER_RESOURCE_SET: "true"
                  EXP_MACHINE_POOL: "true"
                type: object
              version:
                description: Version indicates the provider version.
                type: string
            required:
            - type
            type: object
            x-kubernetes-validations:
            - message: 'CAPI Provider version should be in the semver format prefixed
                with ''v''. Example: v1.9.3'
              rule: '!has(self.version) || self.version.matches(r"""^v([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+)?$""")'
            - message: Config secret namespace is always equal to the resource namespace
                and should not be set.
              rule: '!has(self.configSecret) || !has(self.configSecret.__namespace__)'
            - message: One of fetchConfig oci, url or selector should be set.
              rule: '!has(self.fetchConfig) || [has(self.fetchConfig.oci), has(self.fetchConfig.url),
                has(self.fetchConfig.selector)].exists_one(e, e)'
          status:
            default: {}
            description: CAPIProviderStatus defines the observed state of CAPIProvider.
            properties:
              conditions:
                description: Conditions define the current service state of the provider.
                items:
                  description: Condition defines an observation of a Cluster API resource
                    operational state.
                  properties:
                    lastTransitionTime:
                      description: |-
                        lastTransitionTime is the last time the condition transitioned from one status to another.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        message is a human readable message indicating details about the transition.
                        This field may be empty.
                      maxLength: 10240
                      minLength: 1
                      type: string
                    reason:
                      description: |-
                        reason is the reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may be empty.
                      maxLength: 256
                      minLength: 1
                      type: string
                    severity:
                      description: |-
                        severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The Severity field MUST be set only when Status=False.
                      maxLength: 32
                      type: string
                    status:
                      description: status of the condition, one of True, False, Unknown.
                      type: string
                    type:
                      description: |-
                        type of condition in CamelCase or in foo.example.com/CamelCase.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      maxLength: 256
                      minLength: 1
                      type: string
                  required:
                  - lastTransitionTime
                  - status
                  - type
                  type: object
                type: array
              contract:
                description: |-
                  Contract will contain the core provider contract that the provider is
                  abiding by, like e.g. v1alpha4.
                type: string
              installedVersion:
                description: InstalledVersion is the version of the provider that
                  is installed.
                type: string
              name:
                description: Name reflects actual provider name, which will be visible
                  to users in 'kubectl get capiproviders -A -o wide'
                type: string
              observedGeneration:
                description: ObservedGeneration is the latest generation observed
                  by the controller.
                format: int64
                type: integer
              phase:
                default: Pending
                description: Indicates the provider status
                type: string
              variables:
                additionalProperties:
                  type: string
                default:
                  CLUSTER_TOPOLOGY: "true"
                  EXP_CLUSTER_RESOURCE_SET: "true"
                  EXP_MACHINE_POOL: "true"
                description: Variables is a map of environment variables added to
                  the content of the ConfigSecret
                type: object
            type: object
        type: object
        x-kubernetes-validations:
        - message: CAPI Provider type should always be set.
          rule: has(self.spec.type)
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.16.1
    helm.sh/resource-policy: keep
  name: clusterctlconfigs.turtles-capi.cattle.io
spec:
  group: turtles-capi.cattle.io
  names:
    kind: ClusterctlConfig
    listKind: ClusterctlConfigList
    plural: clusterctlconfigs
    singular: clusterctlconfig
  scope: Namespaced
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: ClusterctlConfig is the Schema for the CAPI Clusterctl config
          API.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: ClusterctlConfigSpec defines the user overrides for images
              and known providers with sources
            properties:
              images:
                description: Images is a list of image overrided for specified providers
                items:
                  description: Image allows to define transformations to apply to
                    the image contained in the YAML manifests.
                  properties:
                    name:
                      description: Name of the provider image override
                      example: all
                      type: string
                    repository:
                      description: Repository sets the container registry override
                        to pull images from.
                      example: my-registry/my-org
                      type: string
                    tag:
                      description: Tag allows to specify a tag for the images.
                      type: string
                  required:
                  - name
                  type: object
                type: array
              providers:
                description: Provider overrides
                items:
                  description: Provider allows to define providers with known URLs
                    to pull the components.
                  properties:
                    name:
                      description: Name of the provider
                      type: string
                    type:
                      description: Type is the type of the provider
                      example: InfrastructureProvider
                      type: string
                    url:
                      description: URL of the provider components. Will be used unless
                        and override is specified
                      type: string
                  required:
                  - name
                  - type
                  - url
                  type: object
                type: array
            type: object
        type: object
        x-kubernetes-validations:
        - message: Clusterctl Config should be named clusterctl-config.
          rule: self.metadata.name == 'clusterctl-config'
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    app.kubernetes.io/component: rbac
    app.kubernetes.io/created-by: rancher-turtles
    app.kubernetes.io/instance: controller-manager-sa
    app.kubernetes.io/managed-by: kustomize
    app.kubernetes.io/name: serviceaccount
    app.kubernetes.io/part-of: rancher-turtles
  name: rancher-turtles-manager
  namespace: '{{ .Values.rancherTurtles.namespace }}'
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  labels:
    app.kubernetes.io/component: rbac
    app.kubernetes.io/created-by: rancher-turtles
    app.kubernetes.io/instance: leader-election-role
    app.kubernetes.io/managed-by: kustomize
    app.kubernetes.io/name: role
    app.kubernetes.io/part-of: rancher-turtles
  name: rancher-turtles-leader-election-role
  namespace: '{{ .Values.rancherTurtles.namespace }}'
rules:
- apiGroups:
  - ""
  resources:
  - configmaps
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete
- apiGroups:
  - coordination.k8s.io
  resources:
  - leases
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete
- apiGroups:
  - ""
  resources:
  - events
  verbs:
  - create
  - patch
---
aggregationRule:
  clusterRoleSelectors:
  - matchLabels:
      rancher-turtles/aggregate-to-manager: "true"
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: rancher-turtles-aggregated-manager-role
rules: []
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
    rancher-turtles/aggregate-to-manager: "true"
  name: rancher-turtles-manager-role
rules:
- apiGroups:
  - ""
  resources:
  - configmaps
  - events
  - namespaces
  - secrets
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - catalog.cattle.io
  resources:
  - uiplugins
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - watch
- apiGroups:
  - cluster.x-k8s.io
  resources:
  - clusters
  - clusters/status
  verbs:
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - coordination.k8s.io
  resources:
  - leases
  verbs:
  - create
  - get
  - update
- apiGroups:
  - infrastructure.cluster.x-k8s.io
  resources:
  - '*'
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - management.cattle.io
  resources:
  - clusterregistrationtokens
  - clusters
  - clusters/status
  verbs:
  - create
  - delete
  - deletecollection
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - management.cattle.io
  resources:
  - clusterregistrationtokens/status
  - settings
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - provisioning.cattle.io
  resources:
  - clusters
  - clusters/status
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - rbac.authorization.k8s.io
  resourceNames:
  - rancher-turtles-manager-role
  resources:
  - clusterroles
  verbs:
  - get
  - list
- apiGroups:
  - turtles-capi.cattle.io
  resources:
  - capiproviders
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - turtles-capi.cattle.io
  resources:
  - capiproviders/finalizers
  verbs:
  - update
- apiGroups:
  - turtles-capi.cattle.io
  resources:
  - capiproviders/status
  verbs:
  - get
  - patch
  - update
- apiGroups:
  - turtles-capi.cattle.io
  resources:
  - clusterctlconfigs
  - clusterctlconfigs/status
  verbs:
  - get
  - list
  - patch
  - watch
- apiGroups:
  - turtles-capi.cattle.io
  resources:
  - clusterctlconfigs/finalizers
  verbs:
  - get
  - list
  - patch
  - update
  - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  labels:
    app.kubernetes.io/component: rbac
    app.kubernetes.io/created-by: rancher-turtles
    app.kubernetes.io/instance: leader-election-rolebinding
    app.kubernetes.io/managed-by: kustomize
    app.kubernetes.io/name: rolebinding
    app.kubernetes.io/part-of: rancher-turtles
  name: rancher-turtles-leader-election-rolebinding
  namespace: '{{ .Values.rancherTurtles.namespace }}'
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: rancher-turtles-leader-election-role
subjects:
- kind: ServiceAccount
  name: rancher-turtles-manager
  namespace: '{{ .Values.rancherTurtles.namespace }}'
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  labels:
    app.kubernetes.io/component: rbac
    app.kubernetes.io/created-by: rancher-turtles
    app.kubernetes.io/instance: manager-rolebinding
    app.kubernetes.io/managed-by: kustomize
    app.kubernetes.io/name: clusterrolebinding
    app.kubernetes.io/part-of: rancher-turtles
  name: rancher-turtles-manager-rolebinding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: rancher-turtles-aggregated-manager-role
subjects:
- kind: ServiceAccount
  name: rancher-turtles-manager
  namespace: '{{ .Values.rancherTurtles.namespace }}'
0707010000000d000081a400000000000000000000000168d24f0e000089af000000000000000000000000000000000000003b00000000templates/rancher-turtles-exp-clusterclass-components.yaml{{- if index .Values "rancherTurtles" "features" "clusterclass-operations" "enabled" }}
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.16.1
  labels:
    turtles-capi.cattle.io: clusterclass
  name: clusterupgradegroups.rollout.turtles-capi.cattle.io
spec:
  group: rollout.turtles-capi.cattle.io
  names:
    kind: ClusterUpgradeGroup
    listKind: ClusterUpgradeGroupList
    plural: clusterupgradegroups
    singular: clusterupgradegroup
  scope: Namespaced
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: ClusterUpgradeGroup is the Schema for the clusterupgrades API
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: ClusterUpgradeGroupSpec defines the desired state of ClusterUpgradeGroup
            properties:
              className:
                type: string
              rolloutStrategy:
                description: |-
                  RolloutStrategy controls the rollout of bundles, by defining
                  partitions, canaries and percentages for cluster availability.
                properties:
                  rollingUpdate:
                    description: |-
                      Rolling update config params. Present only if
                      RolloutStrategyType = RollingUpdate.
                    properties:
                      maxFailures:
                        anyOf:
                        - type: integer
                        - type: string
                        description: |-
                          The maximum number of failed attempts before skipping the update for a given
                          cluster.
                        x-kubernetes-int-or-string: true
                      maxRollouts:
                        anyOf:
                        - type: integer
                        - type: string
                        description: |-
                          The maximum number of clusters that can be in update state (non-active) during a
                          rolling update.
                        x-kubernetes-int-or-string: true
                      rolloutDelay:
                        anyOf:
                        - type: integer
                        - type: string
                        description: The delay between subsequent cluster rollouts.
                        x-kubernetes-int-or-string: true
                    type: object
                  type:
                    description: |-
                      Type of rollout.
                      Default is RollingUpdate.
                    type: string
                type: object
              targets:
                description: Targets refer to the clusters that should be upgraded.
                items:
                  properties:
                    clusterGroup:
                      description: ClusterGroup to match a specific cluster group
                        by name.
                      nullable: true
                      type: string
                    clusterGroupSelector:
                      description: ClusterGroupSelector is a selector to match cluster
                        groups.
                      nullable: true
                      properties:
                        matchExpressions:
                          description: matchExpressions is a list of label selector
                            requirements. The requirements are ANDed.
                          items:
                            description: |-
                              A label selector requirement is a selector that contains values, a key, and an operator that
                              relates the key and values.
                            properties:
                              key:
                                description: key is the label key that the selector
                                  applies to.
                                type: string
                              operator:
                                description: |-
                                  operator represents a key's relationship to a set of values.
                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                type: string
                              values:
                                description: |-
                                  values is an array of string values. If the operator is In or NotIn,
                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                  the values array must be empty. This array is replaced during a strategic
                                  merge patch.
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                            required:
                            - key
                            - operator
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        matchLabels:
                          additionalProperties:
                            type: string
                          description: |-
                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                          type: object
                      type: object
                      x-kubernetes-map-type: atomic
                    clusterName:
                      description: |-
                        ClusterName to match a specific cluster by name that will be
                        selected
                      nullable: true
                      type: string
                    clusterSelector:
                      description: |-
                        ClusterSelector is a selector to match clusters. The structure is
                        the standard metav1.LabelSelector format. If clusterGroupSelector or
                        clusterGroup is specified, clusterSelector will be used only to
                        further refine the selection after clusterGroupSelector and
                        clusterGroup is evaluated.
                      nullable: true
                      properties:
                        matchExpressions:
                          description: matchExpressions is a list of label selector
                            requirements. The requirements are ANDed.
                          items:
                            description: |-
                              A label selector requirement is a selector that contains values, a key, and an operator that
                              relates the key and values.
                            properties:
                              key:
                                description: key is the label key that the selector
                                  applies to.
                                type: string
                              operator:
                                description: |-
                                  operator represents a key's relationship to a set of values.
                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                type: string
                              values:
                                description: |-
                                  values is an array of string values. If the operator is In or NotIn,
                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                  the values array must be empty. This array is replaced during a strategic
                                  merge patch.
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                            required:
                            - key
                            - operator
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        matchLabels:
                          additionalProperties:
                            type: string
                          description: |-
                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                          type: object
                      type: object
                      x-kubernetes-map-type: atomic
                    doNotDeploy:
                      description: DoNotDeploy if set to true, will not deploy to
                        this target.
                      type: boolean
                    name:
                      description: |-
                        Name of target. This value is largely for display and logging. If
                        not specified a default name of the format "target000" will be used
                      type: string
                  type: object
                type: array
            required:
            - className
            type: object
          status:
            description: ClusterUpgradeGroupStatus defines the observed state of ClusterUpgradeGroup
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.14.0
  labels:
    turtles-capi.cattle.io: clusterclass
  name: clusterupgrades.rollout.turtles-capi.cattle.io
spec:
  group: rollout.turtles-capi.cattle.io
  names:
    kind: ClusterUpgrade
    listKind: ClusterUpgradeList
    plural: clusterupgrades
    singular: clusterupgrade
  scope: Namespaced
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: ClusterUpgrade is the Schema for the clusterupgrades API
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: ClusterUpgradeSpec defines the desired state of ClusterUpgrade
            properties:
              className:
                type: string
              rolloutStrategy:
                description: |-
                  RolloutStrategy controls the rollout of bundles, by defining
                  partitions, canaries and percentages for cluster availability.
                properties:
                  autoPartitionSize:
                    anyOf:
                    - type: integer
                    - type: string
                    description: |-
                      A number or percentage of how to automatically partition clusters if no
                      specific partitioning strategy is configured.
                      default: 25%
                    x-kubernetes-int-or-string: true
                  maxUnavailable:
                    anyOf:
                    - type: integer
                    - type: string
                    description: |-
                      A number or percentage of clusters that can be unavailable during an update
                      of a bundle. This follows the same basic approach as a deployment rollout
                      strategy. Once the number of clusters meets unavailable state update will be
                      paused. Default value is 100% which doesn't take effect on update.
                      default: 100%
                    x-kubernetes-int-or-string: true
                  maxUnavailablePartitions:
                    anyOf:
                    - type: integer
                    - type: string
                    description: |-
                      A number or percentage of cluster partitions that can be unavailable during
                      an update of a bundle.
                      default: 0
                    x-kubernetes-int-or-string: true
                  partitions:
                    description: |-
                      A list of definitions of partitions.  If any target clusters do not match
                      the configuration they are added to partitions at the end following the
                      autoPartitionSize.
                    items:
                      description: Partition defines a separate rollout strategy for
                        a set of clusters.
                      properties:
                        clusterGroup:
                          description: A cluster group name to include in this partition
                          type: string
                        clusterGroupSelector:
                          description: Selector matching cluster group labels to include
                            in this partition
                          properties:
                            matchExpressions:
                              description: matchExpressions is a list of label selector
                                requirements. The requirements are ANDed.
                              items:
                                description: |-
                                  A label selector requirement is a selector that contains values, a key, and an operator that
                                  relates the key and values.
                                properties:
                                  key:
                                    description: key is the label key that the selector
                                      applies to.
                                    type: string
                                  operator:
                                    description: |-
                                      operator represents a key's relationship to a set of values.
                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                    type: string
                                  values:
                                    description: |-
                                      values is an array of string values. If the operator is In or NotIn,
                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                      the values array must be empty. This array is replaced during a strategic
                                      merge patch.
                                    items:
                                      type: string
                                    type: array
                                required:
                                - key
                                - operator
                                type: object
                              type: array
                            matchLabels:
                              additionalProperties:
                                type: string
                              description: |-
                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                              type: object
                          type: object
                          x-kubernetes-map-type: atomic
                        clusterName:
                          description: ClusterName is the name of a cluster to include
                            in this partition
                          type: string
                        clusterSelector:
                          description: Selector matching cluster labels to include
                            in this partition
                          properties:
                            matchExpressions:
                              description: matchExpressions is a list of label selector
                                requirements. The requirements are ANDed.
                              items:
                                description: |-
                                  A label selector requirement is a selector that contains values, a key, and an operator that
                                  relates the key and values.
                                properties:
                                  key:
                                    description: key is the label key that the selector
                                      applies to.
                                    type: string
                                  operator:
                                    description: |-
                                      operator represents a key's relationship to a set of values.
                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                    type: string
                                  values:
                                    description: |-
                                      values is an array of string values. If the operator is In or NotIn,
                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                      the values array must be empty. This array is replaced during a strategic
                                      merge patch.
                                    items:
                                      type: string
                                    type: array
                                required:
                                - key
                                - operator
                                type: object
                              type: array
                            matchLabels:
                              additionalProperties:
                                type: string
                              description: |-
                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                              type: object
                          type: object
                          x-kubernetes-map-type: atomic
                        maxUnavailable:
                          anyOf:
                          - type: integer
                          - type: string
                          description: |-
                            A number or percentage of clusters that can be unavailable in this
                            partition before this partition is treated as done.
                            default: 10%
                          x-kubernetes-int-or-string: true
                        name:
                          description: A user-friendly name given to the partition
                            used for Display (optional).
                          type: string
                      type: object
                    type: array
                type: object
              targets:
                description: Targets refer to the clusters that should be upgraded.
                items:
                  properties:
                    clusterGroup:
                      description: ClusterGroup to match a specific cluster group
                        by name.
                      nullable: true
                      type: string
                    clusterGroupSelector:
                      description: ClusterGroupSelector is a selector to match cluster
                        groups.
                      nullable: true
                      properties:
                        matchExpressions:
                          description: matchExpressions is a list of label selector
                            requirements. The requirements are ANDed.
                          items:
                            description: |-
                              A label selector requirement is a selector that contains values, a key, and an operator that
                              relates the key and values.
                            properties:
                              key:
                                description: key is the label key that the selector
                                  applies to.
                                type: string
                              operator:
                                description: |-
                                  operator represents a key's relationship to a set of values.
                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                type: string
                              values:
                                description: |-
                                  values is an array of string values. If the operator is In or NotIn,
                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                  the values array must be empty. This array is replaced during a strategic
                                  merge patch.
                                items:
                                  type: string
                                type: array
                            required:
                            - key
                            - operator
                            type: object
                          type: array
                        matchLabels:
                          additionalProperties:
                            type: string
                          description: |-
                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                          type: object
                      type: object
                      x-kubernetes-map-type: atomic
                    clusterName:
                      description: |-
                        ClusterName to match a specific cluster by name that will be
                        selected
                      nullable: true
                      type: string
                    clusterSelector:
                      description: |-
                        ClusterSelector is a selector to match clusters. The structure is
                        the standard metav1.LabelSelector format. If clusterGroupSelector or
                        clusterGroup is specified, clusterSelector will be used only to
                        further refine the selection after clusterGroupSelector and
                        clusterGroup is evaluated.
                      nullable: true
                      properties:
                        matchExpressions:
                          description: matchExpressions is a list of label selector
                            requirements. The requirements are ANDed.
                          items:
                            description: |-
                              A label selector requirement is a selector that contains values, a key, and an operator that
                              relates the key and values.
                            properties:
                              key:
                                description: key is the label key that the selector
                                  applies to.
                                type: string
                              operator:
                                description: |-
                                  operator represents a key's relationship to a set of values.
                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                type: string
                              values:
                                description: |-
                                  values is an array of string values. If the operator is In or NotIn,
                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                  the values array must be empty. This array is replaced during a strategic
                                  merge patch.
                                items:
                                  type: string
                                type: array
                            required:
                            - key
                            - operator
                            type: object
                          type: array
                        matchLabels:
                          additionalProperties:
                            type: string
                          description: |-
                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                          type: object
                      type: object
                      x-kubernetes-map-type: atomic
                    doNotDeploy:
                      description: DoNotDeploy if set to true, will not deploy to
                        this target.
                      type: boolean
                    name:
                      description: |-
                        Name of target. This value is largely for display and logging. If
                        not specified a default name of the format "target000" will be used
                      type: string
                  type: object
                type: array
            required:
            - className
            type: object
          status:
            description: ClusterUpgradeStatus defines the observed state of ClusterUpgrade
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    app.kubernetes.io/component: rbac
    app.kubernetes.io/created-by: turtles-rollout-poc
    app.kubernetes.io/instance: controller-manager-sa
    app.kubernetes.io/managed-by: kustomize
    app.kubernetes.io/name: serviceaccount
    app.kubernetes.io/part-of: turtles-rollout-poc
    turtles-capi.cattle.io: clusterclass
  name: rancher-turtles-clusterclass-manager
  namespace: {{ index .Values "rancherTurtles" "namespace" }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  labels:
    app.kubernetes.io/component: rbac
    app.kubernetes.io/created-by: turtles-rollout-poc
    app.kubernetes.io/instance: leader-election-role
    app.kubernetes.io/managed-by: kustomize
    app.kubernetes.io/name: role
    app.kubernetes.io/part-of: turtles-rollout-poc
    turtles-capi.cattle.io: clusterclass
  name: rancher-turtles-clusterclass-leader-election-role
  namespace: {{ index .Values "rancherTurtles" "namespace" }}
rules:
- apiGroups:
  - ""
  resources:
  - configmaps
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete
- apiGroups:
  - coordination.k8s.io
  resources:
  - leases
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete
- apiGroups:
  - ""
  resources:
  - events
  verbs:
  - create
  - patch
---
aggregationRule:
  clusterRoleSelectors:
  - matchLabels:
      rancher-turtles/aggregate-to-manager: "true"
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
    turtles-capi.cattle.io: clusterclass
  name: rancher-turtles-clusterclass-aggregated-manager-role
rules: []
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
    rancher-turtles/aggregate-to-manager: "true"
    turtles-capi.cattle.io: clusterclass
  name: rancher-turtles-clusterclass-manager-role
rules:
- apiGroups:
  - cluster.x-k8s.io
  resources:
  - clusterclasses
  - clusters
  - clusters/status
  verbs:
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - rollout.turtles-capi.cattle.io
  resources:
  - clusterupgradegroups
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - rollout.turtles-capi.cattle.io
  resources:
  - clusterupgradegroups/status
  verbs:
  - get
  - patch
  - update
- apiGroups:
  - rollout.turtles-capi.cattle.io
  resources:
  - clusterupgradegroupss/finalizers
  verbs:
  - update
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  labels:
    app.kubernetes.io/component: rbac
    app.kubernetes.io/created-by: turtles-rollout-poc
    app.kubernetes.io/instance: leader-election-rolebinding
    app.kubernetes.io/managed-by: kustomize
    app.kubernetes.io/name: rolebinding
    app.kubernetes.io/part-of: turtles-rollout-poc
    turtles-capi.cattle.io: clusterclass
  name: rancher-turtles-clusterclass-leader-election-rolebinding
  namespace: {{ index .Values "rancherTurtles" "namespace" }}
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: rancher-turtles-clusterclass-leader-election-role
subjects:
- kind: ServiceAccount
  name: rancher-turtles-clusterclass-manager
  namespace: {{ index .Values "rancherTurtles" "namespace" }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  labels:
    app.kubernetes.io/component: rbac
    app.kubernetes.io/created-by: turtles-rollout-poc
    app.kubernetes.io/instance: manager-rolebinding
    app.kubernetes.io/managed-by: kustomize
    app.kubernetes.io/name: clusterrolebinding
    app.kubernetes.io/part-of: turtles-rollout-poc
    turtles-capi.cattle.io: clusterclass
  name: rancher-turtles-clusterclass-manager-rolebinding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: rancher-turtles-clusterclass-aggregated-manager-role
subjects:
- kind: ServiceAccount
  name: rancher-turtles-clusterclass-manager
  namespace: {{ index .Values "rancherTurtles" "namespace" }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    control-plane: controller-manager
    turtles-capi.cattle.io: clusterclass
  name: rancher-turtles-clusterclass-controller-manager
  namespace: {{ index .Values "rancherTurtles" "namespace" }}
spec:
  replicas: 1
  selector:
    matchLabels:
      control-plane: controller-manager
      turtles-capi.cattle.io: clusterclass
  template:
    metadata:
      annotations:
        kubectl.kubernetes.io/default-container: manager
      labels:
        control-plane: controller-manager
        turtles-capi.cattle.io: clusterclass
    spec:
      containers:
      - args:
        - --leader-elect
        command:
        - ./turtles-clusterclass-operations
        env:
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: POD_UID
          valueFrom:
            fieldRef:
              fieldPath: metadata.uid
        {{- $imageVersion := index .Values "rancherTurtles" "features" "clusterclass-operations" "imageVersion" -}}
        {{- if contains "sha256:" $imageVersion }}
        image: {{ index .Values "rancherTurtles" "features" "clusterclass-operations" "image" }}@{{ index .Values "rancherTurtles" "features" "clusterclass-operations" "imageVersion" }}
        {{- else }}
        image: {{ index .Values "rancherTurtles" "features" "clusterclass-operations" "image" }}:{{ index .Values "rancherTurtles" "features" "clusterclass-operations" "imageVersion" }}
        {{- end }}
        imagePullPolicy: '{{ index .Values "rancherTurtles" "features" "clusterclass-operations" "imagePullPolicy" }}'
        livenessProbe:
          httpGet:
            path: /healthz
            port: 8081
          initialDelaySeconds: 15
          periodSeconds: 20
        name: manager
        readinessProbe:
          httpGet:
            path: /readyz
            port: 8081
          initialDelaySeconds: 5
          periodSeconds: 10
        resources:
          limits:
            cpu: 500m
            memory: 128Mi
          requests:
            cpu: 10m
            memory: 64Mi
      serviceAccountName: rancher-turtles-clusterclass-manager
      terminationGracePeriodSeconds: 10
      tolerations:
      - effect: NoSchedule
        key: node-role.kubernetes.io/master
      - effect: NoSchedule
        key: node-role.kubernetes.io/control-plane
{{- end }}
0707010000000e000081a400000000000000000000000168d24f0e000050e2000000000000000000000000000000000000003300000000templates/rancher-turtles-exp-day2-components.yaml{{- if index .Values "rancherTurtles" "features" "day2operations" "enabled" }}
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    cert-manager.io/inject-ca-from: {{ index .Values "rancherTurtles" "namespace" }}/rancher-turtles-day2-operations-serving-cert
    controller-gen.kubebuilder.io/version: v0.16.1
  labels:
    turtles-capi.cattle.io: day2-operations
  name: etcdmachinesnapshots.turtles-capi.cattle.io
spec:
  group: turtles-capi.cattle.io
  names:
    kind: ETCDMachineSnapshot
    listKind: ETCDMachineSnapshotList
    plural: etcdmachinesnapshots
    singular: etcdmachinesnapshot
  scope: Namespaced
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: ETCDMachineSnapshot is the Schema for the ETCDMachineSnapshot
          API.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: ETCDMachineSnapshotSpec defines the desired state of EtcdMachineSnapshot
            properties:
              clusterName:
                type: string
              location:
                type: string
              machineName:
                type: string
            required:
            - clusterName
            type: object
            x-kubernetes-validations:
            - message: ETCD snapshot location can't be empty.
              rule: size(self.clusterName)>0
          status:
            default: {}
            description: EtcdSnapshotRestoreStatus defines observed state of EtcdSnapshotRestore
            properties:
              error:
                type: string
              phase:
                description: ETCDSnapshotPhase is a string representation of the phase
                  of the etcd snapshot
                type: string
              s3Snapshots:
                items:
                  properties:
                    creationTime:
                      description: CreationTime is the timestamp when the snapshot
                        was taken by etcd.
                      format: date-time
                      type: string
                    location:
                      type: string
                    name:
                      type: string
                  required:
                  - location
                  - name
                  type: object
                type: array
              snapshotFileName:
                type: string
              snapshots:
                items:
                  properties:
                    creationTime:
                      description: CreationTime is the timestamp when the snapshot
                        was taken by etcd.
                      format: date-time
                      type: string
                    location:
                      type: string
                    machineName:
                      type: string
                    name:
                      type: string
                  required:
                  - location
                  - machineName
                  - name
                  type: object
                type: array
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    cert-manager.io/inject-ca-from: {{ index .Values "rancherTurtles" "namespace" }}/rancher-turtles-day2-operations-serving-cert
    controller-gen.kubebuilder.io/version: v0.16.1
  labels:
    turtles-capi.cattle.io: day2-operations
  name: etcdsnapshotrestores.turtles-capi.cattle.io
spec:
  group: turtles-capi.cattle.io
  names:
    kind: ETCDSnapshotRestore
    listKind: ETCDSnapshotRestoreList
    plural: etcdsnapshotrestores
    singular: etcdsnapshotrestore
  scope: Namespaced
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: ETCDSnapshotRestore is the schema for the ETCDSnapshotRestore
          API.
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: ETCDSnapshotRestoreSpec defines the desired state of EtcdSnapshotRestore.
            properties:
              clusterName:
                type: string
              etcdMachineSnapshotName:
                type: string
            required:
            - clusterName
            - etcdMachineSnapshotName
            type: object
            x-kubernetes-validations:
            - message: Cluster Name can't be empty.
              rule: size(self.clusterName)>0
            - message: ETCD machine snapshot name can't be empty.
              rule: size(self.etcdMachineSnapshotName)>0
          status:
            default: {}
            description: ETCDSnapshotRestoreStatus defines observed state of EtcdSnapshotRestore.
            properties:
              conditions:
                description: Conditions provide observations of the operational state
                  of a Cluster API resource.
                items:
                  description: Condition defines an observation of a Cluster API resource
                    operational state.
                  properties:
                    lastTransitionTime:
                      description: |-
                        lastTransitionTime is the last time the condition transitioned from one status to another.
                        This should be when the underlying condition changed. If that is not known, then using the time when
                        the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        message is a human readable message indicating details about the transition.
                        This field may be empty.
                      maxLength: 10240
                      minLength: 1
                      type: string
                    reason:
                      description: |-
                        reason is the reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may be empty.
                      maxLength: 256
                      minLength: 1
                      type: string
                    severity:
                      description: |-
                        severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The Severity field MUST be set only when Status=False.
                      maxLength: 32
                      type: string
                    status:
                      description: status of the condition, one of True, False, Unknown.
                      type: string
                    type:
                      description: |-
                        type of condition in CamelCase or in foo.example.com/CamelCase.
                        Many .condition.type values are consistent across resources like Available, but because arbitrary conditions
                        can be useful (see .node.status.conditions), the ability to deconflict is important.
                      maxLength: 256
                      minLength: 1
                      type: string
                  required:
                  - lastTransitionTime
                  - status
                  - type
                  type: object
                type: array
              phase:
                default: Pending
                description: ETCDSnapshotPhase is a string representation of the phase
                  of the etcd snapshot
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    cert-manager.io/inject-ca-from: {{ index .Values "rancherTurtles" "namespace" }}/rancher-turtles-day2-operations-serving-cert
    controller-gen.kubebuilder.io/version: v0.16.1
  labels:
    turtles-capi.cattle.io: day2-operations
  name: rke2etcdmachinesnapshotconfigs.turtles-capi.cattle.io
spec:
  group: turtles-capi.cattle.io
  names:
    kind: RKE2EtcdMachineSnapshotConfig
    listKind: RKE2EtcdMachineSnapshotConfigList
    plural: rke2etcdmachinesnapshotconfigs
    singular: rke2etcdmachinesnapshotconfig
  scope: Namespaced
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: RKE2EtcdMachineSnapshotConfig is the config for the RKE2EtcdMachineSnapshotConfig
          API
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: RKE2EtcdMachineSnapshotConfigSpec defines the desired state
              of RKE2EtcdMachineSnapshotConfig
            properties:
              local:
                properties:
                  dataDir:
                    type: string
                required:
                - dataDir
                type: object
              s3:
                properties:
                  bucket:
                    type: string
                  endpoint:
                    type: string
                  endpointCAsecret:
                    type: string
                  folder:
                    type: string
                  insecure:
                    type: boolean
                  region:
                    type: string
                  s3CredentialSecret:
                    type: string
                  skipSSLVerify:
                    type: boolean
                type: object
            required:
            - local
            - s3
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  labels:
    app.kubernetes.io/component: rbac
    app.kubernetes.io/created-by: rancher-turtles
    app.kubernetes.io/instance: leader-election-role
    app.kubernetes.io/managed-by: kustomize
    app.kubernetes.io/name: role
    app.kubernetes.io/part-of: rancher-turtles
    turtles-capi.cattle.io: day2-operations
  name: rancher-turtles-day2-operations-leader-election-role
  namespace: {{ index .Values "rancherTurtles" "namespace" }}
rules:
- apiGroups:
  - ""
  resources:
  - configmaps
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete
- apiGroups:
  - coordination.k8s.io
  resources:
  - leases
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete
- apiGroups:
  - ""
  resources:
  - events
  verbs:
  - create
  - patch
---
aggregationRule:
  clusterRoleSelectors:
  - matchLabels:
      rancher-turtles-exp/aggregate-to-manager: "true"
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
    turtles-capi.cattle.io: day2-operations
  name: rancher-turtles-day2-operations-aggregated-manager-role
rules: []
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
    rancher-turtles-exp/aggregate-to-manager: "true"
    rancher-turtles/aggregate-to-manager: "true"
    turtles-capi.cattle.io: day2-operations
  name: rancher-turtles-day2-operations-manager-role
rules:
- apiGroups:
  - ""
  resources:
  - configmaps
  - events
  - secrets
  - serviceaccounts
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - ""
  resources:
  - serviceaccounts/token
  verbs:
  - create
- apiGroups:
  - authorization.k8s.io
  resources:
  - subjectaccessreviews
  verbs:
  - create
  - get
- apiGroups:
  - bootstrap.cluster.x-k8s.io
  resources:
  - rke2configs
  - rke2configs/finalizers
  - rke2configs/status
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - cluster.x-k8s.io
  resources:
  - clusters
  - clusters/status
  - machines
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - management.cattle.io
  resources:
  - '*'
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - rbac.authorization.k8s.io
  resources:
  - rolebindings
  - roles
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - turtles-capi.cattle.io
  resources:
  - etcdmachinesnapshots
  - etcdsnapshotrestores
  - rke2etcdmachinesnapshotconfigs
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - turtles-capi.cattle.io
  resources:
  - etcdmachinesnapshots/finalizers
  - etcdsnapshotrestores/finalizers
  - rke2etcdmachinesnapshotconfigs/finalizers
  verbs:
  - update
- apiGroups:
  - turtles-capi.cattle.io
  resources:
  - etcdmachinesnapshots/status
  - etcdsnapshotrestores/status
  - rke2etcdmachinesnapshotconfigs/status
  verbs:
  - get
  - patch
  - update
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  labels:
    app.kubernetes.io/component: rbac
    app.kubernetes.io/created-by: rancher-turtles
    app.kubernetes.io/instance: leader-election-rolebinding
    app.kubernetes.io/managed-by: kustomize
    app.kubernetes.io/name: rolebinding
    app.kubernetes.io/part-of: rancher-turtles
    turtles-capi.cattle.io: day2-operations
  name: rancher-turtles-day2-operations-leader-election-rolebinding
  namespace: {{ index .Values "rancherTurtles" "namespace" }}
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: rancher-turtles-day2-operations-leader-election-role
subjects:
- kind: ServiceAccount
  name: rancher-turtles-day2-operations-manager
  namespace: {{ index .Values "rancherTurtles" "namespace" }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  labels:
    app.kubernetes.io/component: rbac
    app.kubernetes.io/created-by: rancher-turtles
    app.kubernetes.io/instance: manager-rolebinding
    app.kubernetes.io/managed-by: kustomize
    app.kubernetes.io/name: clusterrolebinding
    app.kubernetes.io/part-of: rancher-turtles
    turtles-capi.cattle.io: day2-operations
  name: rancher-turtles-day2-operations-manager-rolebinding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: rancher-turtles-day2-operations-aggregated-manager-role
subjects:
- kind: ServiceAccount
  name: rancher-turtles-day2-operations-manager
  namespace: {{ index .Values "rancherTurtles" "namespace" }}
---
apiVersion: v1
kind: Service
metadata:
  labels:
    turtles-capi.cattle.io: day2-operations
  name: rancher-turtles-day2-operations-webhook-service
  namespace: {{ index .Values "rancherTurtles" "namespace" }}
spec:
  ports:
  - port: 443
    targetPort: webhook-server
  selector:
    turtles-capi.cattle.io: day2-operations
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  labels:
    turtles-capi.cattle.io: day2-operations
  name: rancher-turtles-day2-operations-serving-cert
  namespace: {{ index .Values "rancherTurtles" "namespace" }}
spec:
  dnsNames:
  - rancher-turtles-day2-operations-webhook-service.{{ index .Values "rancherTurtles" "namespace" }}.svc
  - rancher-turtles-day2-operations-webhook-service.{{ index .Values "rancherTurtles" "namespace" }}.svc.cluster.local
  issuerRef:
    kind: Issuer
    name: rancher-turtles-day2-operations-selfsigned-issuer
  secretName: rancher-turtles-day2-operations-webhook-service-cert
---
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  labels:
    turtles-capi.cattle.io: day2-operations
  name: rancher-turtles-day2-operations-selfsigned-issuer
  namespace: {{ index .Values "rancherTurtles" "namespace" }}
spec:
  selfSigned: {}
---
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:
  annotations:
    cert-manager.io/inject-ca-from: {{ index .Values "rancherTurtles" "namespace" }}/rancher-turtles-day2-operations-serving-cert
  labels:
    turtles-capi.cattle.io: day2-operations
  name: rancher-turtles-day2-operations-mutating-webhook-configuration
webhooks:
- admissionReviewVersions:
  - v1
  clientConfig:
    service:
      name: rancher-turtles-day2-operations-webhook-service
      namespace: {{ index .Values "rancherTurtles" "namespace" }}
      path: /mutate-bootstrap-cluster-x-k8s-io-v1beta1-rke2config
  failurePolicy: Fail
  name: systemagentrke2config.kb.io
  rules:
  - apiGroups:
    - bootstrap.cluster.x-k8s.io
    apiVersions:
    - v1beta1
    operations:
    - CREATE
    - UPDATE
    resources:
    - rke2configs
  sideEffects: None
---
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
  annotations:
    cert-manager.io/inject-ca-from: {{ index .Values "rancherTurtles" "namespace" }}/rancher-turtles-day2-operations-serving-cert
  labels:
    turtles-capi.cattle.io: day2-operations
  name: rancher-turtles-day2-operations-validating-webhook-configuration
webhooks:
- admissionReviewVersions:
  - v1
  clientConfig:
    service:
      name: rancher-turtles-day2-operations-webhook-service
      namespace: {{ index .Values "rancherTurtles" "namespace" }}
      path: /validate-turtles-capi-cattle-io-v1alpha1-etcdmachinesnapshot
  failurePolicy: Fail
  matchPolicy: Equivalent
  name: etcdmachinesnapshot.kb.io
  rules:
  - apiGroups:
    - turtles-capi.cattle.io
    apiVersions:
    - v1alpha1
    operations:
    - CREATE
    - UPDATE
    resources:
    - etcdmachinesnapshots
  sideEffects: None
- admissionReviewVersions:
  - v1
  clientConfig:
    service:
      name: rancher-turtles-day2-operations-webhook-service
      namespace: {{ index .Values "rancherTurtles" "namespace" }}
      path: /validate-turtles-capi-cattle-io-v1alpha1-etcdsnapshotrestore
  failurePolicy: Fail
  matchPolicy: Equivalent
  name: etcdsnapshotrestore.kb.io
  rules:
  - apiGroups:
    - turtles-capi.cattle.io
    apiVersions:
    - v1alpha1
    operations:
    - CREATE
    - UPDATE
    resources:
    - etcdsnapshotrestores
  sideEffects: None
{{- end }}
0707010000000f000081a400000000000000000000000168d24f0e00000e07000000000000000000000000000000000000003300000000templates/rancher-turtles-exp-day2-deployment.yaml{{- if index .Values "rancherTurtles" "features" "day2operations" "enabled" }}
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    control-plane: controller-manager
    turtles-capi.cattle.io: day2-operations
  name: rancher-turtles-day2-operations-controller-manager
  namespace: '{{ .Values.rancherTurtles.namespace }}'
spec:
  replicas: 1
  selector:
    matchLabels:
      control-plane: controller-manager
      turtles-capi.cattle.io: day2-operations
  template:
    metadata:
      annotations:
        kubectl.kubernetes.io/default-container: manager
      labels:
        control-plane: controller-manager
        turtles-capi.cattle.io: day2-operations
    spec:
      containers:
      - args:
        - --leader-elect
        - --feature-gates=etcd-backup-restore={{ .Values.rancherTurtles.features.day2operations.etcdBackupRestore.enabled }}
        command:
        - ./turtles-day2-operations
        env:
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: POD_UID
          valueFrom:
            fieldRef:
              fieldPath: metadata.uid
        {{- if (contains "sha256:" .Values.rancherTurtles.features.day2operations.imageVersion) }}
        image: '{{ .Values.rancherTurtles.features.day2operations.image }}@{{ .Values.rancherTurtles.features.day2operations.imageVersion }}'
        {{- else }}
        image: '{{ .Values.rancherTurtles.features.day2operations.image }}:{{ .Values.rancherTurtles.features.day2operations.imageVersion }}'
        {{- end }}
        imagePullPolicy: '{{ .Values.rancherTurtles.features.day2operations.imagePullPolicy }}'
        livenessProbe:
          httpGet:
            path: /healthz
            port: 9440
          initialDelaySeconds: 15
          periodSeconds: 20
        name: manager
        ports:
        - containerPort: 9443
          name: webhook-server
          protocol: TCP
        readinessProbe:
          httpGet:
            path: /readyz
            port: 9440
          initialDelaySeconds: 5
          periodSeconds: 10
        resources:
          limits:
            cpu: 500m
            memory: 128Mi
          requests:
            cpu: 10m
            memory: 64Mi
        volumeMounts:
        {{- if .Values.rancherTurtles.features.day2operations.etcdBackupRestore.enabled }}
        - mountPath: /tmp/k8s-webhook-server/serving-certs
          name: cert
          readOnly: true
        {{- end }}
      serviceAccountName: rancher-turtles-day2-operations-manager
      terminationGracePeriodSeconds: 10
      tolerations:
      - effect: NoSchedule
        key: node-role.kubernetes.io/master
      - effect: NoSchedule
        key: node-role.kubernetes.io/control-plane
      volumes:
      {{- if .Values.rancherTurtles.features.day2operations.etcdBackupRestore.enabled }}
      - name: cert
        secret:
          secretName: rancher-turtles-day2-operations-webhook-service-cert
      {{- end }}
---
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    app.kubernetes.io/component: rbac
    app.kubernetes.io/created-by: rancher-turtles
    app.kubernetes.io/instance: controller-manager-sa
    app.kubernetes.io/managed-by: kustomize
    app.kubernetes.io/name: serviceaccount
    app.kubernetes.io/part-of: rancher-turtles
    turtles-capi.cattle.io: day2-operations
  name: rancher-turtles-day2-operations-manager
  namespace: '{{ .Values.rancherTurtles.namespace }}'
{{- end }}07070100000010000081a400000000000000000000000168d24f0e00000987000000000000000000000000000000000000001e00000000templates/rke2-bootstrap.yaml{{- if and (index .Values "cluster-api-operator" "cluster-api" "enabled") (index .Values "cluster-api-operator" "cluster-api" "rke2" "enabled") }}
{{- $namespace := index .Values "cluster-api-operator" "cluster-api" "rke2" "bootstrap" "namespace" }}
{{- if not (lookup "v1" "Namespace" "" $namespace) }}
---
apiVersion: v1
kind: Namespace
metadata:
  annotations:
    "helm.sh/hook": "post-install, post-upgrade"
    "helm.sh/hook-weight": "1"
  name: {{ index .Values "cluster-api-operator" "cluster-api" "rke2" "bootstrap" "namespace" }}
{{- end }}
---
apiVersion: turtles-capi.cattle.io/v1alpha1
kind: CAPIProvider
metadata:
  name: rke2-bootstrap
  namespace: {{ index .Values "cluster-api-operator" "cluster-api" "rke2" "bootstrap" "namespace" }}
  annotations:
    "helm.sh/hook": "post-install, post-upgrade"
    "helm.sh/hook-weight": "2"
spec:
  name: rke2
  type: bootstrap
  enableAutomaticUpdate: {{ index .Values "cluster-api-operator" "cluster-api" "rke2" "enableAutomaticUpdate" }}
{{- if index .Values  "cluster-api-operator" "cluster-api" "rke2" "version" }}
  version: {{ index .Values "cluster-api-operator" "cluster-api" "rke2" "version" }}
{{- end }}
  configSecret:
{{- if index .Values "cluster-api-operator" "cluster-api" "configSecret" "name" }}
    name: {{ index .Values "cluster-api-operator" "cluster-api" "configSecret" "name" }}
{{ else }}
    name: {{ index .Values "cluster-api-operator" "cluster-api" "configSecret" "defaultName" }}
{{- end }}
{{- if or (index .Values "cluster-api-operator" "cluster-api" "rke2" "bootstrap" "fetchConfig" "url") (index .Values "cluster-api-operator" "cluster-api" "rke2" "bootstrap" "fetchConfig" "selector") }}
  fetchConfig:
    {{- if index .Values "cluster-api-operator" "cluster-api" "rke2" "bootstrap" "fetchConfig" "url" }}
    url: {{ index .Values "cluster-api-operator" "cluster-api" "rke2" "bootstrap" "fetchConfig" "url" }}
    {{- end }}
    {{- if index .Values "cluster-api-operator" "cluster-api" "rke2" "bootstrap" "fetchConfig" "selector" }}
    selector: {{ index .Values "cluster-api-operator" "cluster-api" "rke2" "bootstrap" "fetchConfig" "selector" }}
    {{- end }}
{{- end }}
{{- if index .Values "cluster-api-operator" "cluster-api" "rke2" "bootstrap" "imageUrl" }}
  deployment:
    containers:
      - name: manager
        imageUrl: {{ index .Values "cluster-api-operator" "cluster-api" "rke2" "bootstrap" "imageUrl" }}
{{- end }}
{{- end }}
07070100000011000081a400000000000000000000000168d24f0e000009af000000000000000000000000000000000000002100000000templates/rke2-controlplane.yaml{{- if and (index .Values "cluster-api-operator" "cluster-api" "enabled") (index .Values "cluster-api-operator" "cluster-api" "rke2" "enabled") }}
{{- $namespace := index .Values "cluster-api-operator" "cluster-api" "rke2" "controlPlane" "namespace" }}
{{- if not (lookup "v1" "Namespace" "" $namespace) }}
---
apiVersion: v1
kind: Namespace
metadata:
  annotations:
    "helm.sh/hook": "post-install, post-upgrade"
    "helm.sh/hook-weight": "1"
  name: {{ index .Values "cluster-api-operator" "cluster-api" "rke2" "controlPlane" "namespace" }}
{{- end }}
---
apiVersion: turtles-capi.cattle.io/v1alpha1
kind: CAPIProvider
metadata:
  name: rke2-control-plane
  namespace: {{ index .Values "cluster-api-operator" "cluster-api" "rke2" "controlPlane" "namespace" }}
  annotations:
    "helm.sh/hook": "post-install, post-upgrade"
    "helm.sh/hook-weight": "2"
spec:
  name: rke2
  type: controlPlane
  enableAutomaticUpdate: {{ index .Values "cluster-api-operator" "cluster-api" "rke2" "enableAutomaticUpdate" }}
{{- if index .Values  "cluster-api-operator" "cluster-api" "rke2" "version" }}
  version: {{ index .Values "cluster-api-operator" "cluster-api" "rke2" "version" }}
{{- end }}
  configSecret:
{{- if index .Values "cluster-api-operator" "cluster-api" "configSecret" "name" }}
    name: {{ index .Values "cluster-api-operator" "cluster-api" "configSecret" "name" }}
{{ else }}
    name: {{ index .Values "cluster-api-operator" "cluster-api" "configSecret" "defaultName" }}
{{- end }}
{{- if or (index .Values "cluster-api-operator" "cluster-api" "rke2" "controlPlane" "fetchConfig" "url") (index .Values "cluster-api-operator" "cluster-api" "rke2" "controlPlane" "fetchConfig" "selector") }}
  fetchConfig:
    {{- if index .Values "cluster-api-operator" "cluster-api" "rke2" "controlPlane" "fetchConfig" "url" }}
    url: {{ index .Values "cluster-api-operator" "cluster-api" "rke2" "controlPlane" "fetchConfig" "url" }}
    {{- end }}
    {{- if index .Values "cluster-api-operator" "cluster-api" "rke2" "controlPlane" "fetchConfig" "selector" }}
    selector: {{ index .Values "cluster-api-operator" "cluster-api" "rke2" "controlPlane" "fetchConfig" "selector" }}
    {{- end }}
{{- end }}
{{- if index .Values "cluster-api-operator" "cluster-api" "rke2" "controlPlane" "imageUrl" }}
  deployment:
    containers:
      - name: manager
        imageUrl: {{ index .Values "cluster-api-operator" "cluster-api" "rke2" "controlPlane" "imageUrl" }}
{{- end }}
{{- end }}
07070100000012000081a400000000000000000000000168d24f0e00000281000000000000000000000000000000000000001900000000templates/ui-plugin.yaml{{- if and (index .Values "turtlesUI" "enabled") (index .Values "rancherTurtles" "rancherInstalled") }}
apiVersion: catalog.cattle.io/v1
kind: UIPlugin
metadata:
  name: capi
  namespace: '{{ .Values.rancherTurtles.namespace }}'
spec:
  plugin:
    endpoint: https://raw.githubusercontent.com/rancher/capi-ui-extension/gh-pages/extensions/capi/{{ index .Values "turtlesUI" "version" | toString }}
    name: capi
    version: {{ index .Values "turtlesUI" "version" }}
    metadata:
      catalog.cattle.io/display-name: CAPI UI
      catalog.cattle.io/experimental: "true"
      catalog.cattle.io/ui-extensions-version: ">= 3.0.0"
{{- end }}
07070100000013000041ed00000000000000000000000168d24f0e00000000000000000000000000000000000000000000000a00000000templates07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!
openSUSE Build Service is sponsored by