diff --git a/operators/k8s-triliovault/5.0.2/manifests/ca-bundle-cm.yaml b/operators/k8s-triliovault/5.0.2/manifests/ca-bundle-cm.yaml
new file mode 100644
index 000000000000..946f8ca49e45
--- /dev/null
+++ b/operators/k8s-triliovault/5.0.2/manifests/ca-bundle-cm.yaml
@@ -0,0 +1,13 @@
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: k8s-triliovault-proxy-ca
+ labels:
+ app: k8s-triliovault-proxy-secret
+ app.kubernetes.io/part-of: k8s-triliovault
+ app.kubernetes.io/name: k8s-triliovault
+ app.kubernetes.io/instance: k8s-triliovault-proxy-ca
+ app.kubernetes.io/managed-by: k8s-triliovault
+ config.openshift.io/inject-trusted-cabundle: "true"
+data:
diff --git a/operators/k8s-triliovault/5.0.2/manifests/k8s-triliovault.clusterserviceversion.yaml b/operators/k8s-triliovault/5.0.2/manifests/k8s-triliovault.clusterserviceversion.yaml
new file mode 100644
index 000000000000..0e6df8c85e8c
--- /dev/null
+++ b/operators/k8s-triliovault/5.0.2/manifests/k8s-triliovault.clusterserviceversion.yaml
@@ -0,0 +1,511 @@
+---
+apiVersion: operators.coreos.com/v1alpha1
+kind: ClusterServiceVersion
+metadata:
+ labels:
+ operatorframework.io/arch.amd64: supported
+ operatorframework.io/arch.ppc64le: supported
+ annotations:
+ tectonic-visibility: ocs
+ alm-examples: |
+ [
+ {
+ "apiVersion": "triliovault.trilio.io/v1",
+ "kind": "TrilioVaultManager",
+ "metadata": {
+ "name": "triliovault-manager"
+ },
+ "spec": {
+ "applicationScope": "Cluster",
+ "tvkInstanceName": "tvk-instance",
+ "logLevel": "Info",
+ "componentConfiguration": {
+ "ingress-controller": {
+ "enabled": false
+ }
+ },
+ "dataJobResources": {
+ "requests": {
+ "memory": "800Mi",
+ "cpu": "100m"
+ }
+ },
+ "metadataJobResources": {
+ "requests": {
+ "memory": "10Mi",
+ "cpu": "10m"
+ }
+ }
+ }
+ }
+ ]
+ capabilities: Full Lifecycle
+ repository: https://github.com/triliovault-k8s-issues/triliovault-k8s-issues
+ support: Trilio
+ console.openshift.io/plugins: '["tvk-console-plugin"]'
+ operatorframework.io/suggested-namespace: trilio-system
+ containerImage: quay.io/triliodata/k8s-triliovault-operator:5.0.2
+ certified: 'false'
+ createdAt: 2020-04-27 17:12:00
+ categories: "Storage,Database,Monitoring,Security,Developer Tools"
+ description: Cloud-Native Data Protection for Kubernetes
+ olm.skipRange: ">=3.0.0 <5.0.2"
+ name: k8s-triliovault-stable.5.0.2
+ namespace: placeholder
+spec:
+ apiservicedefinitions: {}
+ customresourcedefinitions:
+ owned:
+ - description: Represents TrilioVault Manager which is an instance of TrilioVault for Kubernetes.
+ displayName: TrilioVault Manager
+ kind: TrilioVaultManager
+ name: triliovaultmanagers.triliovault.trilio.io
+ specDescriptors:
+ - description: TVK instance name is the instance name to identify the TVK instance with name
+ displayName: TVK Instance Name
+ path: tvkInstanceName
+ x-descriptors:
+ - 'urn:alm:descriptor:com.tectonic.ui:text'
+ - description: DataJobResources is the resource limits & requests for all the data processing jobs.
+ displayName: DataJobResources
+ path: dataJobResources
+ x-descriptors:
+ - urn:alm:descriptor:com.tectonic.ui:resourceRequirements
+ - description: MetadataJobResources is the resource limits & requests for all the meta processing jobs.
+ displayName: MetadataJobResources
+ path: metadataJobResources
+ x-descriptors:
+ - urn:alm:descriptor:com.tectonic.ui:resourceRequirements
+ - displayName: Node Affinity
+ description: Node affinity is a group of node affinity scheduling
+ path: nodeAffinity
+ x-descriptors:
+ - 'urn:alm:descriptor:com.tectonic.ui:nodeAffinity'
+ - description: HIDDEN FIELDS - DatamoverLogLevel
+ displayName: HIDDEN FIELDS - DatamoverLogLevel
+ path: datamoverLogLevel
+ x-descriptors:
+ - 'urn:alm:descriptor:com.tectonic.ui:hidden'
+ - description: HIDDEN FIELDS - Ingress Config
+ displayName: HIDDEN FIELDS - Ingress Config
+ path: ingressConfig
+ x-descriptors:
+ - 'urn:alm:descriptor:com.tectonic.ui:hidden'
+ - description: HIDDEN FIELDS - TrilioVaultAppVersion
+ displayName: HIDDEN FIELDS - Trilio Vault App Version
+ path: trilioVaultAppVersion
+ x-descriptors:
+ - 'urn:alm:descriptor:com.tectonic.ui:hidden'
+ - description: HIDDEN FIELDS - RestoreNamespaces
+ displayName: HIDDEN FIELDS - Restore Namespace
+ path: restoreNamespaces
+ x-descriptors:
+ - 'urn:alm:descriptor:com.tectonic.ui:hidden'
+ - description: HIDDEN FIELDS - HelmVersion
+ displayName: HIDDEN FIELDS - HelmVersion
+ path: helmVersion
+ x-descriptors:
+ - 'urn:alm:descriptor:com.tectonic.ui:hidden'
+ statusDescriptors:
+ - description: Status of the TVM
+ displayName: Status
+ path: status
+ x-descriptors:
+ - 'urn:alm:descriptor:com.tectonic.ui:text'
+ - description: TrilioVault for Kubernetes UI
+ displayName: Dashboard
+ path: dashboard
+ x-descriptors:
+ - urn:alm:descriptor:org.w3:link
+ version: v1
+ description: |-
+ Trilio for Red Hat OpenShift provides fast and easy backup of application containers and virtual machines, disaster and ransomware recovery and application mobility across any cluster, anywhere.
+ Trilio for Red Hat OpenShift:
+ * Red Hat Certified - first backup and recovery solution with OpenShift Operator Certification.
+ * Application-Centric - protects both data and metadata for Helm or Label based applications.
+ * Namespace protection: Protect single or multi-namespace protection for complete cluster recovery
+ * Fully multi-tenant tool, adhering to OpenShift RBAC policies, allowing you to operate hybrid, on-prem, air-gapped, public cloud (ROSA or ARO) or OpenShift on public cloud instances.
+ * OpenShift Virtualization - protects data and metadata of OpenShift Virtualization Virtual Machines
+ * Operators - protect and recover Red Hat OpenShift Lifecycle Management (OLM) Operators
+ * Native to Kubernetes & OpenShift: Packaged and deployed as an Operator, provides new CRDs, integrated via Kubernetes API and with all features that it provides.
+ * Infrastructure Agnostic: Compatible with any CSI Persistent Volume storage; backup storage based on NFS, S3, Blob/Container; and run on any Cloud (Private or Public).
+ * Avoid vendor lock-in with industry proven Open Source backup format
+ * Application Deployment & Tooling protection: Helm, Operators, Labels, Namespaces
+ * Observability: Prometheus, Grafana
+ * Fully Automated: Use our Ansible Certified Collection and our seamless integration with Red Hat Advanced Cluster Manager to fully automate your backup strategy and enable automated Disaster Recovery testing.
+ * Unattended Recovery: Integrate Trilio with your Event Drive Ansible architecture for unattended recovery.
+ * Fast Disaster Recovery: Utilize Trilio’s Continuous Restore to continually copy Persistent Volume data to any number of Kubernetes and OpenShift clusters, shortening recovery times and remote site failover
+ More Information
+ ----------------------
+ Please click the link below to access more information about Trilio for Red Hat OpenShift:
+ More Information"
+ About Trilio
+ ----------------
+ Trilio is trusted by global cloud infrastructure operators to deliver data protection, application resiliency, infrastructure migration and infrastructure version management. Our Trilio technology supports Kubernetes, OpenStack and Virtualization environments to recover from disasters, migrate tenant workloads, move workloads to new infrastructures and migrate to new infrastructure software distributions. Visit our website https://trilio.io
+ displayName: Trilio for Kubernetes
+ install:
+ spec:
+ deployments:
+ - name: k8s-triliovault-operator
+ labels:
+ app: k8s-triliovault-operator
+ app.kubernetes.io/managed-by: k8s-triliovault-operator
+ app.kubernetes.io/part-of: k8s-triliovault-operator
+ app.kubernetes.io/name: k8s-triliovault-operator
+ app.kubernetes.io/instance: k8s-triliovault-operator
+ spec:
+ strategy:
+ type: RollingUpdate
+ rollingUpdate:
+ maxSurge: 25%
+ maxUnavailable: 25%
+ selector:
+ matchLabels:
+ app: k8s-triliovault-operator
+ replicas: 1
+ template:
+ metadata:
+ labels:
+ app: k8s-triliovault-operator
+ app.kubernetes.io/managed-by: k8s-triliovault-operator
+ app.kubernetes.io/part-of: k8s-triliovault-operator
+ app.kubernetes.io/name: k8s-triliovault-operator
+ app.kubernetes.io/instance: k8s-triliovault-operator
+ spec:
+ hostNetwork: false
+ hostIPC: false
+ hostPID: false
+ securityContext:
+ runAsNonRoot: true
+ runAsUser: 1001
+ containers:
+ - name: k8s-triliovault-operator
+ image: quay.io/triliodata/k8s-triliovault-operator:5.0.2
+ imagePullPolicy: "Always"
+ env:
+ - name: INSTALL_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ - name: REGISTRY
+ value: quay.io/triliodata
+ - name: RELEASE_VERSION
+ value: 5.0.2
+ - name: RELATED_IMAGE_CONTROL_PLANE
+ value: quay.io/triliodata/control-plane:5.0.2
+ - name: RELATED_IMAGE_WEB
+ value: quay.io/triliodata/web:5.0.2
+ - name: RELATED_IMAGE_WEB_BACKEND
+ value: quay.io/triliodata/control-plane:5.0.2
+ - name: RELATED_IMAGE_EXPORTER
+ value: quay.io/triliodata/control-plane:5.0.2
+ - name: RELATED_IMAGE_ADMISSION_WEBHOOK
+ value: quay.io/triliodata/control-plane:5.0.2
+ - name: RELATED_IMAGE_ANALYZER
+ value: quay.io/triliodata/control-plane:5.0.2
+ - name: RELATED_IMAGE_METAMOVER
+ value: quay.io/triliodata/datamover:5.0.2
+ - name: RELATED_IMAGE_DATAMOVER
+ value: quay.io/triliodata/datamover:5.0.2
+ - name: RELATED_IMAGE_DATASTORE_ATTACHER
+ value: quay.io/triliodata/datamover:5.0.2
+ - name: RELATED_IMAGE_SCHEDULER
+ value: quay.io/triliodata/control-plane:5.0.2
+ - name: RELATED_IMAGE_CLEANER
+ value: quay.io/triliodata/datamover:5.0.2
+ - name: RELATED_IMAGE_RETENTION
+ value: quay.io/triliodata/datamover:5.0.2
+ - name: RELATED_IMAGE_TARGET_BROWSER
+ value: quay.io/triliodata/datamover:5.0.2
+ - name: RELATED_IMAGE_HOOK
+ value: quay.io/triliodata/control-plane:5.0.2
+ - name: RELATED_IMAGE_RESOURCE_CLEANER
+ value: quay.io/triliodata/datamover:5.0.2
+ - name: RELATED_IMAGE_TVK_INIT
+ value: quay.io/triliodata/control-plane:5.0.2
+ - name: RELATED_IMAGE_DEX
+ value: quay.io/triliodata/dex:2.30.7
+ - name: RELATED_IMAGE_MINIO
+ value: quay.io/triliodata/control-plane:5.0.2
+ - name: RELATED_IMAGE_NATS
+ value: quay.io/triliodata/nats:2.8.5
+ - name: RELATED_IMAGE_SERVICE_MANAGER
+ value: quay.io/triliodata/event-stack:5.0.2
+ - name: RELATED_IMAGE_SYNCER
+ value: quay.io/triliodata/event-stack:5.0.2
+ - name: RELATED_IMAGE_WATCHER
+ value: quay.io/triliodata/event-stack:5.0.2
+ - name: RELATED_IMAGE_CONTINUOUS_RESTORE
+ value: quay.io/triliodata/datamover:5.0.2
+ - name: ADMISSION_MUTATION_CONFIG
+ value: tvm-mutating-webhook-configuration
+ - name: ADMISSION_VALIDATION_CONFIG
+ value: tvm-validating-webhook-configuration
+ - name: MASTER_ENCRYPTION_KEY_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ - name: MASTER_ENCRYPTION_KEY_NAME
+ value: triliovault-master-encryption-key
+ livenessProbe:
+ httpGet:
+ path: /healthz
+ port: 8081
+ scheme: HTTP
+ initialDelaySeconds: 60
+ periodSeconds: 30
+ timeoutSeconds: 2
+ successThreshold: 1
+ failureThreshold: 3
+ readinessProbe:
+ httpGet:
+ path: /readyz
+ port: 8081
+ scheme: HTTP
+ initialDelaySeconds: 5
+ periodSeconds: 5
+ timeoutSeconds: 1
+ successThreshold: 1
+ failureThreshold: 3
+ volumeMounts:
+ - mountPath: /tmp/k8s-webhook-server/serving-certs
+ name: webhook-certs
+ readOnly: true
+ securityContext:
+ allowPrivilegeEscalation: false
+ capabilities:
+ drop:
+ - ALL
+ privileged: false
+ readOnlyRootFilesystem: false
+ runAsNonRoot: true
+ runAsUser: 1001
+ resources:
+ requests:
+ cpu: 10m
+ memory: 10Mi
+ initContainers:
+ - name: webhook-init
+ image: quay.io/triliodata/operator-webhook-init:5.0.2
+ imagePullPolicy: "Always"
+ securityContext:
+ allowPrivilegeEscalation: false
+ capabilities:
+ drop:
+ - ALL
+ privileged: false
+ readOnlyRootFilesystem: false
+ runAsNonRoot: true
+ runAsUser: 1001
+ env:
+ - name: WEBHOOK_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ - name: MASTER_ENCRYPTION_KEY_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ - name: MASTER_ENCRYPTION_KEY_NAME
+ value: triliovault-master-encryption-key
+ serviceAccountName: k8s-triliovault-operator-service-account
+ affinity:
+ nodeAffinity:
+ requiredDuringSchedulingIgnoredDuringExecution:
+ nodeSelectorTerms:
+ - matchExpressions:
+ - key: kubernetes.io/arch
+ operator: In
+ values:
+ - amd64
+ - ppc64le
+ volumes:
+ - name: webhook-certs
+ secret:
+ defaultMode: 420
+ secretName: k8s-triliovault-operator-webhook-certs
+ clusterPermissions:
+ - rules:
+ - apiGroups:
+ - console.openshift.io
+ resources:
+ - consoleplugins
+ - consolelinks
+ verbs:
+ - create
+ - update
+ - delete
+ - patch
+ - apiGroups:
+ - monitoring.coreos.com
+ resources:
+ - servicemonitors
+ verbs:
+ - create
+ - update
+ - delete
+ - patch
+ - apiGroups:
+ - security.openshift.io
+ resources:
+ - securitycontextconstraints
+ resourceNames:
+ - privileged
+ verbs:
+ - use
+ - apiGroups:
+ - '*'
+ resources:
+ - '*'
+ verbs:
+ - get
+ - list
+ - watch
+ - apiGroups:
+ - apiextensions.k8s.io
+ resources:
+ - customresourcedefinitions
+ verbs:
+ - create
+ - update
+ - delete
+ - patch
+ - apiGroups:
+ - ""
+ resources:
+ - serviceaccounts
+ - services
+ - services/finalizers
+ - secrets
+ - events
+ - pods
+ - endpoints
+ - configmaps
+ verbs:
+ - create
+ - update
+ - delete
+ - patch
+ - apiGroups:
+ - admissionregistration.k8s.io
+ resources:
+ - validatingwebhookconfigurations
+ - mutatingwebhookconfigurations
+ verbs:
+ - create
+ - update
+ - delete
+ - patch
+ - apiGroups:
+ - apps
+ resources:
+ - deployments
+ verbs:
+ - create
+ - update
+ - delete
+ - patch
+ - apiGroups:
+ - authorization.openshift.io
+ resources:
+ - clusterroles
+ verbs:
+ - delete
+ - apiGroups:
+ - rbac.authorization.k8s.io
+ resources:
+ - clusterroles
+ - clusterrolebindings
+ - roles
+ - rolebindings
+ verbs:
+ - create
+ - update
+ - delete
+ - patch
+ - bind
+ - escalate
+ - apiGroups:
+ - triliovault.trilio.io
+ resources:
+ - '*'
+ verbs:
+ - '*'
+ - apiGroups:
+ - ""
+ resources:
+ - namespaces
+ - namespaces/finalizers
+ verbs:
+ - update
+ - apiGroups:
+ - batch
+ resources:
+ - cronjobs
+ verbs:
+ - create
+ - update
+ - patch
+ - delete
+ - apiGroups:
+ - batch
+ resources:
+ - jobs
+ verbs:
+ - create
+ - delete
+ - apiGroups:
+ - policy
+ resources:
+ - poddisruptionbudgets
+ verbs:
+ - create
+ - update
+ - patch
+ - delete
+ - apiGroups:
+ - networking.k8s.io
+ resources:
+ - ingresses
+ - ingressclasses
+ verbs:
+ - create
+ - patch
+ - update
+ - delete
+ - apiGroups:
+ - networking.k8s.io
+ resources:
+ - ingresses/status
+ verbs:
+ - update
+ serviceAccountName: k8s-triliovault-operator-service-account
+ strategy: deployment
+ installModes:
+ - supported: false
+ type: OwnNamespace
+ - supported: false
+ type: SingleNamespace
+ - supported: false
+ type: MultiNamespace
+ - supported: true
+ type: AllNamespaces
+ keywords: ['backup', 'restore', 'data protection', 'disaster recovery', 'protect', 'recover', 'migrate', 'migration', 'DR','Storage']
+ maturity: stable
+ icon:
+ - base64data: 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
+ mediatype: image/jpeg
+ minKubeVersion: 1.20.0
+ provider:
+ name: 'Trilio'
+ maintainers:
+ - name: 'Trilio'
+ email: 'info@trilio.io'
+ links:
+ - name: Trilio Homepage
+ url: https://trilio.io/
+ - name: Tutorials
+ url: https://trilio.io/products/trilio-for-red-hat-openshift/
+ - name: Documentation page
+ url: https://docs.trilio.io/kubernetes/getting-started-3/red-hat-openshift
+ version: 5.0.2
diff --git a/operators/k8s-triliovault/5.0.2/manifests/mutation.yaml b/operators/k8s-triliovault/5.0.2/manifests/mutation.yaml
new file mode 100644
index 000000000000..85efd148c950
--- /dev/null
+++ b/operators/k8s-triliovault/5.0.2/manifests/mutation.yaml
@@ -0,0 +1,30 @@
+apiVersion: admissionregistration.k8s.io/v1
+kind: MutatingWebhookConfiguration
+metadata:
+ name: tvm-mutating-webhook-configuration
+ labels:
+ app.kubernetes.io/part-of: k8s-triliovault-operator
+ app.kubernetes.io/name: k8s-triliovault-operator
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/instance: k8s-triliovault-operator-mutating-webhook-configuration
+webhooks:
+ - clientConfig:
+ service:
+ name: k8s-triliovault-operator-webhook-service
+ namespace: trilio-system
+ path: /mutate-triliovault-trilio-io-v1-triliovaultmanager
+ failurePolicy: Fail
+ name: v1-tvm-mutation.trilio.io
+ rules:
+ - apiGroups:
+ - triliovault.trilio.io
+ apiVersions:
+ - v1
+ operations:
+ - CREATE
+ - UPDATE
+ resources:
+ - triliovaultmanagers
+ sideEffects: None
+ admissionReviewVersions:
+ - v1
diff --git a/operators/k8s-triliovault/5.0.2/manifests/triliovault.trilio.io_triliovaultmanagers.yaml b/operators/k8s-triliovault/5.0.2/manifests/triliovault.trilio.io_triliovaultmanagers.yaml
new file mode 100644
index 000000000000..26ebc28eb2a0
--- /dev/null
+++ b/operators/k8s-triliovault/5.0.2/manifests/triliovault.trilio.io_triliovaultmanagers.yaml
@@ -0,0 +1,1231 @@
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.10.0
+ creationTimestamp: null
+ name: triliovaultmanagers.triliovault.trilio.io
+spec:
+ group: triliovault.trilio.io
+ names:
+ kind: TrilioVaultManager
+ listKind: TrilioVaultManagerList
+ plural: triliovaultmanagers
+ shortNames:
+ - tvm
+ singular: triliovaultmanager
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .status.releaseVersion
+ name: TrilioVault-Version
+ type: string
+ - jsonPath: .spec.applicationScope
+ name: Scope
+ type: string
+ - jsonPath: .status.status
+ name: Status
+ type: string
+ name: v1
+ schema:
+ openAPIV3Schema:
+ description: TrilioVaultManager is the Schema for the triliovaultmanagers
+ 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: TrilioVaultManagerSpec defines the desired state of TrilioVaultManager
+ properties:
+ affinity:
+ description: The scheduling constraints on application pods.
+ 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
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ 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
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ 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
+ 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
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ 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
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ type: object
+ x-kubernetes-map-type: atomic
+ type: array
+ 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.
+ 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
+ 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
+ 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
+ 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
+ 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
+ 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
+ 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.
+ 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
+ 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
+ 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
+ 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
+ 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
+ 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.
+ 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
+ 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
+ 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
+ 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
+ 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
+ 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
+ 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.
+ 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
+ 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
+ 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
+ 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
+ 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
+ type: object
+ type: object
+ applicationScope:
+ description: Scope for the application which will be installed in
+ the cluster NamespaceScope or ClusterScope
+ enum:
+ - Cluster
+ - Namespaced
+ type: string
+ componentConfiguration:
+ description: ComponentConfiguration holds all the field related to
+ the TVK deployments.
+ properties:
+ admission-webhook:
+ description: AdmissionWebhook holds all configuration for the
+ admission-webhook deployment
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ control-plane:
+ description: ControlPlane holds all configuration for the control-plane
+ deployment
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ exporter:
+ description: Exporter holds all configuration for the exporter
+ deployment.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ ingress-controller:
+ description: IngressController holds all configuration for the
+ ingress-controller deployment
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ web:
+ description: Web holds all configuration for the web deployment
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ web-backend:
+ description: WebBackend holds all configuration for the web-backend
+ deployment
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ csiConfig:
+ description: CSIConfig is the configuration for the CSI drivers which
+ doesn't support snapshot functionality
+ properties:
+ exclude:
+ description: Exclude denotes the list of CSI drivers to be excluded
+ from the non-snapshot functionality category
+ items:
+ type: string
+ type: array
+ include:
+ description: Include denotes the list of CSI drivers to be included
+ in the non-snapshot functionality category
+ items:
+ type: string
+ type: array
+ type: object
+ dataJobLimits:
+ 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: 'Deprecated: DataJobLimits are the resource limits for
+ all the data processing jobs.'
+ type: object
+ dataJobResources:
+ description: DataJobResources is the resource limits & requests for
+ all the data processing jobs.
+ properties:
+ 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. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ datamoverLogLevel:
+ description: DatamoverLogLevel is a log level used in datamover i.e.
+ data upload/restore part of the TVK.
+ enum:
+ - Panic
+ - Fatal
+ - Error
+ - Warn
+ - Info
+ - Debug
+ - Trace
+ type: string
+ deploymentLimits:
+ 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: 'Deprecated: DeploymentLimits are the resource limits
+ for all the deployments.'
+ type: object
+ helmValues:
+ description: HelmValues holds all the additional fields in the values.yaml
+ of TVK helm chart.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ helmVersion:
+ description: 'Deprecated: Helm Version'
+ properties:
+ tillerNamespace:
+ type: string
+ version:
+ enum:
+ - v3
+ type: string
+ required:
+ - version
+ type: object
+ ingressConfig:
+ description: IngressConfig holds field related to ingress resource
+ to access the TVK UI.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ host:
+ type: string
+ ingressClass:
+ type: string
+ tlsSecretName:
+ type: string
+ type: object
+ logLevel:
+ description: LogLevel is a level used in TVK logging.
+ enum:
+ - Panic
+ - Fatal
+ - Error
+ - Warn
+ - Info
+ - Debug
+ - Trace
+ type: string
+ metadataJobLimits:
+ 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: 'Deprecated: MetadataJobLimits are the resource limits
+ for all the meta processing jobs.'
+ type: object
+ metadataJobResources:
+ description: MetadataJobResources is the resource limits & requests
+ for all the meta processing jobs.
+ properties:
+ 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. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ nodeSelector:
+ additionalProperties:
+ type: string
+ description: NodeSelector specifies a map of key-value pairs. For
+ the pod to be eligible to run on a node, the node must have each
+ of the indicated key-value pairs as labels.
+ type: object
+ pauseSchedule:
+ description: PauseSchedule is flag to pause schedule backups or snapshot
+ for all the backupplan/clusterbackupplan.
+ type: boolean
+ resources:
+ description: 'Deprecated: Resources are the resource requirements
+ for the containers.'
+ properties:
+ 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. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ type: object
+ type: object
+ restoreNamespaces:
+ description: 'Deprecated: RestoreNamespaces are the namespace where
+ you want to restore your applications. Restore Namespaces depends
+ on your k8s RBAC'
+ items:
+ type: string
+ type: array
+ tolerations:
+ description: The toleration of application against the specific taints
+ on the nodes
+ items:
+ description: The pod this Toleration is attached to tolerates any
+ taint that matches the triple using the matching
+ 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
+ trilioVaultAppVersion:
+ description: 'Deprecated: TrilioVaultAppVersion Helm Chart version'
+ type: string
+ tvkInstanceName:
+ description: TVKInstanceName is a TVK installation name to be displayed
+ on UI.
+ type: string
+ required:
+ - applicationScope
+ type: object
+ status:
+ description: TrilioVaultManagerStatus defines the observed state of TrilioVaultManager
+ properties:
+ conditions:
+ items:
+ properties:
+ lastTransitionTime:
+ format: date-time
+ nullable: true
+ type: string
+ message:
+ minLength: 0
+ type: string
+ reason:
+ enum:
+ - InstallSuccessful
+ - UpdateSuccessful
+ - UninstallSuccessful
+ - InstallError
+ - UpdateError
+ - ReconcileError
+ - UninstallError
+ type: string
+ status:
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ enum:
+ - Initialized
+ - Deployed
+ - Updated
+ - ReleaseFailed
+ - Irreconcilable
+ type: string
+ type: object
+ type: array
+ dashboard:
+ type: string
+ deployedRelease:
+ properties:
+ manifest:
+ type: string
+ name:
+ type: string
+ type: object
+ helmRevision:
+ type: integer
+ releaseVersion:
+ type: string
+ status:
+ type: string
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
diff --git a/operators/k8s-triliovault/5.0.2/manifests/validation.yaml b/operators/k8s-triliovault/5.0.2/manifests/validation.yaml
new file mode 100644
index 000000000000..26d03928f7f0
--- /dev/null
+++ b/operators/k8s-triliovault/5.0.2/manifests/validation.yaml
@@ -0,0 +1,80 @@
+apiVersion: admissionregistration.k8s.io/v1
+kind: ValidatingWebhookConfiguration
+metadata:
+ name: tvm-validating-webhook-configuration
+ labels:
+ app.kubernetes.io/part-of: k8s-triliovault-operator
+ app.kubernetes.io/name: k8s-triliovault-operator
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/instance: k8s-triliovault-operator-validating-webhook-configuration
+webhooks:
+ - clientConfig:
+ service:
+ name: k8s-triliovault-operator-webhook-service
+ namespace: trilio-system
+ path: /validate-triliovault-trilio-io-v1-triliovaultmanager
+ failurePolicy: Fail
+ name: v1-tvm-validation.trilio.io
+ rules:
+ - apiGroups:
+ - triliovault.trilio.io
+ apiVersions:
+ - v1
+ operations:
+ - CREATE
+ - UPDATE
+ resources:
+ - triliovaultmanagers
+ sideEffects: None
+ admissionReviewVersions:
+ - v1
+ - clientConfig:
+ service:
+ name: k8s-triliovault-operator-webhook-service
+ namespace: trilio-system
+ path: /validate-core-v1-secret
+ failurePolicy: Fail
+ name: v1-encryption-secret-validation.trilio.io
+ objectSelector:
+ matchExpressions:
+ - key: triliovault.trilio.io/master-secret
+ operator: Exists
+ rules:
+ - apiGroups:
+ - "*"
+ apiVersions:
+ - v1
+ operations:
+ - DELETE
+ - UPDATE
+ resources:
+ - secrets
+ sideEffects: None
+ admissionReviewVersions:
+ - v1
+ - clientConfig:
+ service:
+ name: k8s-triliovault-operator-webhook-service
+ namespace: trilio-system
+ path: /validate-core-v1-namespace
+ failurePolicy: Fail
+ name: v1-tvm-ns-validation.trilio.io
+ namespaceSelector:
+ matchExpressions:
+ - key: trilio-operator-label
+ operator: In
+ values:
+ - trilio-system
+ rules:
+ - apiGroups:
+ - ""
+ apiVersions:
+ - v1
+ operations:
+ - DELETE
+ resources:
+ - namespaces
+ scope: '*'
+ sideEffects: None
+ admissionReviewVersions:
+ - v1
diff --git a/operators/k8s-triliovault/5.0.2/metadata/annotations.yaml b/operators/k8s-triliovault/5.0.2/metadata/annotations.yaml
new file mode 100644
index 000000000000..c55b25db9f2c
--- /dev/null
+++ b/operators/k8s-triliovault/5.0.2/metadata/annotations.yaml
@@ -0,0 +1,10 @@
+annotations:
+ operators.operatorframework.io.bundle.channel.default.v1: 5.0.x
+ operators.operatorframework.io.bundle.channels.v1: 5.0.x
+ operators.operatorframework.io.bundle.manifests.v1: manifests/
+ operators.operatorframework.io.bundle.mediatype.v1: registry+v1
+ operators.operatorframework.io.bundle.metadata.v1: metadata/
+ operators.operatorframework.io.bundle.package.v1: k8s-triliovault
+
+ # OpenShift annotations.
+ com.redhat.openshift.versions: v4.8
diff --git a/operators/k8s-triliovault/5.0.2/tests/scorecard/config.yaml b/operators/k8s-triliovault/5.0.2/tests/scorecard/config.yaml
new file mode 100644
index 000000000000..235643aad572
--- /dev/null
+++ b/operators/k8s-triliovault/5.0.2/tests/scorecard/config.yaml
@@ -0,0 +1,22 @@
+---
+kind: Configuration
+apiversion: scorecard.operatorframework.io/v1alpha3
+metadata:
+ name: config
+stages:
+ - parallel: true
+ tests:
+ - image: quay.io/operator-framework/scorecard-test:latest
+ entrypoint:
+ - scorecard-test
+ - basic-check-spec
+ labels:
+ suite: basic
+ test: basic-check-spec-test
+ - image: quay.io/operator-framework/scorecard-test:latest
+ entrypoint:
+ - scorecard-test
+ - olm-bundle-validation
+ labels:
+ suite: olm
+ test: olm-bundle-validation-test