From c204cf2c3a27fd96dc631a646e1def4dae846ffb Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Sun, 19 May 2024 14:55:25 +0000 Subject: [PATCH] Commit new Chart releases for TrueCharts Signed-off-by: TrueCharts-Bot --- system/volsync/1.0.8/.helmignore | 32 + system/volsync/1.0.8/CHANGELOG.md | 3 + system/volsync/1.0.8/Chart.yaml | 40 + system/volsync/1.0.8/README.md | 56 + system/volsync/1.0.8/app-changelog.md | 9 + system/volsync/1.0.8/app-readme.md | 8 + system/volsync/1.0.8/charts/common-23.0.0.tgz | Bin 0 -> 96822 bytes system/volsync/1.0.8/icon.webp | Bin 0 -> 86376 bytes system/volsync/1.0.8/ix_values.yaml | 456 ++++ system/volsync/1.0.8/questions.yaml | 1853 +++++++++++++++++ system/volsync/1.0.8/templates/NOTES.txt | 1 + system/volsync/1.0.8/templates/common.yaml | 9 + ...lsync.backube_replicationdestinations.yaml | 881 ++++++++ .../volsync.backube_replicationsources.yaml | 1098 ++++++++++ system/volsync/1.0.8/values.yaml | 0 system/volsync/item.yaml | 4 + 16 files changed, 4450 insertions(+) create mode 100644 system/volsync/1.0.8/.helmignore create mode 100644 system/volsync/1.0.8/CHANGELOG.md create mode 100644 system/volsync/1.0.8/Chart.yaml create mode 100644 system/volsync/1.0.8/README.md create mode 100644 system/volsync/1.0.8/app-changelog.md create mode 100644 system/volsync/1.0.8/app-readme.md create mode 100644 system/volsync/1.0.8/charts/common-23.0.0.tgz create mode 100644 system/volsync/1.0.8/icon.webp create mode 100644 system/volsync/1.0.8/ix_values.yaml create mode 100755 system/volsync/1.0.8/questions.yaml create mode 100644 system/volsync/1.0.8/templates/NOTES.txt create mode 100644 system/volsync/1.0.8/templates/common.yaml create mode 100644 system/volsync/1.0.8/templates/volsync.backube_replicationdestinations.yaml create mode 100644 system/volsync/1.0.8/templates/volsync.backube_replicationsources.yaml create mode 100644 system/volsync/1.0.8/values.yaml create mode 100644 system/volsync/item.yaml diff --git a/system/volsync/1.0.8/.helmignore b/system/volsync/1.0.8/.helmignore new file mode 100644 index 00000000000..feb7464da6f --- /dev/null +++ b/system/volsync/1.0.8/.helmignore @@ -0,0 +1,32 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl +# docs folder +/docs +# icon +icon.png +icon.webp +icon-small.webp diff --git a/system/volsync/1.0.8/CHANGELOG.md b/system/volsync/1.0.8/CHANGELOG.md new file mode 100644 index 00000000000..941abb8a218 --- /dev/null +++ b/system/volsync/1.0.8/CHANGELOG.md @@ -0,0 +1,3 @@ +*for the complete changelog, please refer to the website* + +**Important:** \ No newline at end of file diff --git a/system/volsync/1.0.8/Chart.yaml b/system/volsync/1.0.8/Chart.yaml new file mode 100644 index 00000000000..7d0d5bf74bb --- /dev/null +++ b/system/volsync/1.0.8/Chart.yaml @@ -0,0 +1,40 @@ +annotations: + max_scale_version: 24.04.1 + min_scale_version: 24.04.0 + truecharts.org/SCALE-support: "true" + truecharts.org/category: network + truecharts.org/max_helm_version: "3.14" + truecharts.org/min_helm_version: "3.11" + truecharts.org/train: incubator +apiVersion: v2 +appVersion: 0.9.1 +dependencies: + - name: common + version: 23.0.0 + repository: oci://tccr.io/truecharts + condition: "" + alias: "" + tags: [] + import-values: [] +deprecated: false +description: volsync is a storage backup and synchronisation tool. +home: https://truecharts.org/charts/incubator/volsync +icon: https://truecharts.org/img/hotlink-ok/chart-icons/volsync.webp +keywords: + - volsync + - ingress +kubeVersion: ">=1.24.0-0" +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: https://truecharts.org +name: volsync +sources: + - https://github.com/volsync/volsync + - https://github.com/volsync/volsync-helm-chart + - https://volsync.readthedocs.io/ + - https://github.com/truecharts/charts/tree/master/charts/incubator/volsync + - https://quay.io/brancz/kube-rbac-proxy + - https://quay.io/backube/volsync +type: application +version: 1.0.8 diff --git a/system/volsync/1.0.8/README.md b/system/volsync/1.0.8/README.md new file mode 100644 index 00000000000..e0de25845e4 --- /dev/null +++ b/system/volsync/1.0.8/README.md @@ -0,0 +1,56 @@ +--- +title: README +--- + +## General Info + +TrueCharts can be installed as both _normal_ Helm Charts or as TrueNAS SCALE Apps. +Both solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible + +For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/incubator/volsync) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + +## Installation + +### Helm-Chart installation + +To install TrueCharts Helm charts using Helm, you can use our OCI Repository. + +`helm install mychart oci://tccr.io/truecharts/CHARTNAME` + +For more information on how to install TrueCharts Helm charts, checkout the instructions on the website: https://truecharts.org/helm/ + + +### TrueNAS SCALE Apps + +For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the [quick-start guides for TrueNAS SCALE](https://truecharts.org/scale/guides/scale-intro). + +## Configuration Options + +To view the chart specific options, please view Values.yaml included in the chart. + +All our Charts use a shared "common" library chart that contains most of the templating and options. +For the complete overview of all available options, please checkout the documentation for them on the website: https://truecharts.org/common/ + +## Chart Specific Guides and information + +All our charts have dedicated documentation pages. +The documentation for this chart can be found here: +https://truecharts.org/charts/incubator/volsync + +## Support + + +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/general/sponsor) or contributing back to the project any way you can! + +_All Rights Reserved - The TrueCharts Project_ diff --git a/system/volsync/1.0.8/app-changelog.md b/system/volsync/1.0.8/app-changelog.md new file mode 100644 index 00000000000..5555b32b674 --- /dev/null +++ b/system/volsync/1.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [volsync-1.0.8]volsync-1.0.8 (2024-05-19) + +### Chore + + + +- move to system train ([#22245](https://github.com/truecharts/charts/issues/22245)) \ No newline at end of file diff --git a/system/volsync/1.0.8/app-readme.md b/system/volsync/1.0.8/app-readme.md new file mode 100644 index 00000000000..6d1e0661a2c --- /dev/null +++ b/system/volsync/1.0.8/app-readme.md @@ -0,0 +1,8 @@ +volsync is a storage backup and synchronisation tool. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/system/volsync](https://truecharts.org/charts/system/volsync) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/system/volsync/1.0.8/charts/common-23.0.0.tgz b/system/volsync/1.0.8/charts/common-23.0.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..0622a806d94b2598dfdd18d54aff29c4facf2e3e GIT binary patch literal 96822 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 literal 0 HcmV?d00001 diff --git a/system/volsync/1.0.8/icon.webp b/system/volsync/1.0.8/icon.webp new file mode 100644 index 0000000000000000000000000000000000000000..bfe282a01a507f418b5ef6d673fa1a97540ff4d1 GIT binary patch literal 86376 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://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true + diff --git a/system/volsync/1.0.8/templates/NOTES.txt b/system/volsync/1.0.8/templates/NOTES.txt new file mode 100644 index 00000000000..efcb74cb772 --- /dev/null +++ b/system/volsync/1.0.8/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/system/volsync/1.0.8/templates/common.yaml b/system/volsync/1.0.8/templates/common.yaml new file mode 100644 index 00000000000..63bd6ffa80e --- /dev/null +++ b/system/volsync/1.0.8/templates/common.yaml @@ -0,0 +1,9 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.v1.common.loader.init" . }} + +{{- if or .Values.credentials .Values.credentialsList }} +{{- fail "Don't try to add credenatials to VolSync, add them to the individual charts using VolSync" }} +{{- end }} + +{{/* Render the templates */}} +{{ include "tc.v1.common.loader.apply" . }} diff --git a/system/volsync/1.0.8/templates/volsync.backube_replicationdestinations.yaml b/system/volsync/1.0.8/templates/volsync.backube_replicationdestinations.yaml new file mode 100644 index 00000000000..3f433add6c7 --- /dev/null +++ b/system/volsync/1.0.8/templates/volsync.backube_replicationdestinations.yaml @@ -0,0 +1,881 @@ +{{- if .Values.manageCRDs }} +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + helm.sh/resource-policy: keep + name: replicationdestinations.volsync.backube +spec: + group: volsync.backube + names: + kind: ReplicationDestination + listKind: ReplicationDestinationList + plural: replicationdestinations + singular: replicationdestination + scope: Namespaced + versions: + - additionalPrinterColumns: + - format: date-time + jsonPath: .status.lastSyncTime + name: Last sync + type: string + - jsonPath: .status.lastSyncDuration + name: Duration + type: string + - format: date-time + jsonPath: .status.nextSyncTime + name: Next sync + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: ReplicationDestination defines the destination for a replicated volume + 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: spec is the desired state of the ReplicationDestination, including the replication method to use and its configuration. + properties: + external: + description: external defines the configuration when using an external replication provider. + properties: + parameters: + additionalProperties: + type: string + description: parameters are provider-specific key/value configuration parameters. For more information, please see the documentation of the specific replication provider being used. + type: object + provider: + description: 'provider is the name of the external replication provider. The name should be of the form: domain.com/provider.' + type: string + type: object + paused: + description: paused can be used to temporarily stop replication. Defaults to "false". + type: boolean + rclone: + description: rclone defines the configuration when using Rclone-based replication. + properties: + accessModes: + description: accessModes specifies the access modes for the destination volume. + items: + type: string + minItems: 1 + type: array + capacity: + anyOf: + - type: integer + - type: string + description: capacity is the size of the destination volume to create. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + copyMethod: + description: copyMethod describes how a point-in-time (PiT) image of the destination volume should be created. + enum: + - Direct + - None + - Clone + - Snapshot + type: string + customCA: + description: customCA is a custom CA that will be used to verify the remote + properties: + configMapName: + description: The name of a ConfigMap that contains the custom CA certificate If ConfigMapName is used then SecretName should not be set + type: string + key: + description: The key within the Secret or ConfigMap containing the CA certificate + type: string + secretName: + description: The name of a Secret that contains the custom CA certificate If SecretName is used then ConfigMapName should not be set + type: string + type: object + destinationPVC: + description: destinationPVC is a PVC to use as the transfer destination instead of automatically provisioning one. Either this field or both capacity and accessModes must be specified. + type: string + moverPodLabels: + additionalProperties: + type: string + description: Labels that should be added to data mover pods These will be in addition to any labels that VolSync may add + type: object + moverResources: + description: 'Resources represents compute resources required by the data mover container. Immutable. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ This should only be used by advanced users as this can result in a mover pod being unschedulable or crashing due to limited resources.' + properties: + claims: + description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n 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 + 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 + moverSecurityContext: + description: MoverSecurityContext allows specifying the PodSecurityContext that will be used by the data mover + properties: + fsGroup: + description: "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: \n 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- \n If unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows." + format: int64 + type: integer + fsGroupChangePolicy: + description: 'fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used. Note that this field cannot be set when spec.os.name is windows.' + type: string + runAsGroup: + description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + properties: + level: + description: Level is SELinux level label that applies to the container. + type: string + role: + description: Role is a SELinux role label that applies to the container. + type: string + type: + description: Type is a SELinux type label that applies to the container. + type: string + user: + description: User is a SELinux user label that applies to the container. + type: string + type: object + seccompProfile: + description: The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows. + properties: + localhostProfile: + description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must be set if type is "Localhost". Must NOT be set for any other type. + type: string + type: + description: "type indicates which kind of seccomp profile will be applied. Valid options are: \n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied." + type: string + required: + - type + type: object + supplementalGroups: + description: A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows. + items: + format: int64 + type: integer + type: array + sysctls: + description: Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows. + items: + description: Sysctl defines a kernel parameter to be set + properties: + name: + description: Name of a property to set + type: string + value: + description: Value of a property to set + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + description: The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA credential spec to use. + type: string + hostProcess: + description: HostProcess determines if a container should be run as a 'Host Process' container. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true. + type: boolean + runAsUserName: + description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: string + type: object + type: object + moverServiceAccount: + description: MoverServiceAccount allows specifying the name of the service account that will be used by the data mover. This should only be used by advanced users who want to override the service account normally used by the mover. The service account needs to exist in the same namespace as this CR. + type: string + rcloneConfig: + description: RcloneConfig is the rclone secret name + type: string + rcloneConfigSection: + description: RcloneConfigSection is the section in rclone_config file to use for the current job. + type: string + rcloneDestPath: + description: RcloneDestPath is the remote path to sync to. + type: string + storageClassName: + description: storageClassName can be used to specify the StorageClass of the destination volume. If not set, the default StorageClass will be used. + type: string + volumeSnapshotClassName: + description: volumeSnapshotClassName can be used to specify the VSC to be used if copyMethod is Snapshot. If not set, the default VSC is used. + type: string + type: object + restic: + description: restic defines the configuration when using Restic-based replication. + properties: + accessModes: + description: accessModes specifies the access modes for the destination volume. + items: + type: string + minItems: 1 + type: array + cacheAccessModes: + description: accessModes can be used to set the accessModes of restic metadata cache volume + items: + type: string + type: array + cacheCapacity: + anyOf: + - type: integer + - type: string + description: cacheCapacity can be used to set the size of the restic metadata cache volume + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + cacheStorageClassName: + description: cacheStorageClassName can be used to set the StorageClass of the restic metadata cache volume + type: string + capacity: + anyOf: + - type: integer + - type: string + description: capacity is the size of the destination volume to create. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + copyMethod: + description: copyMethod describes how a point-in-time (PiT) image of the destination volume should be created. + enum: + - Direct + - None + - Clone + - Snapshot + type: string + customCA: + description: customCA is a custom CA that will be used to verify the remote + properties: + configMapName: + description: The name of a ConfigMap that contains the custom CA certificate If ConfigMapName is used then SecretName should not be set + type: string + key: + description: The key within the Secret or ConfigMap containing the CA certificate + type: string + secretName: + description: The name of a Secret that contains the custom CA certificate If SecretName is used then ConfigMapName should not be set + type: string + type: object + destinationPVC: + description: destinationPVC is a PVC to use as the transfer destination instead of automatically provisioning one. Either this field or both capacity and accessModes must be specified. + type: string + moverPodLabels: + additionalProperties: + type: string + description: Labels that should be added to data mover pods These will be in addition to any labels that VolSync may add + type: object + moverResources: + description: 'Resources represents compute resources required by the data mover container. Immutable. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ This should only be used by advanced users as this can result in a mover pod being unschedulable or crashing due to limited resources.' + properties: + claims: + description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n 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 + 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 + moverSecurityContext: + description: MoverSecurityContext allows specifying the PodSecurityContext that will be used by the data mover + properties: + fsGroup: + description: "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: \n 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- \n If unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows." + format: int64 + type: integer + fsGroupChangePolicy: + description: 'fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used. Note that this field cannot be set when spec.os.name is windows.' + type: string + runAsGroup: + description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + properties: + level: + description: Level is SELinux level label that applies to the container. + type: string + role: + description: Role is a SELinux role label that applies to the container. + type: string + type: + description: Type is a SELinux type label that applies to the container. + type: string + user: + description: User is a SELinux user label that applies to the container. + type: string + type: object + seccompProfile: + description: The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows. + properties: + localhostProfile: + description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must be set if type is "Localhost". Must NOT be set for any other type. + type: string + type: + description: "type indicates which kind of seccomp profile will be applied. Valid options are: \n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied." + type: string + required: + - type + type: object + supplementalGroups: + description: A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows. + items: + format: int64 + type: integer + type: array + sysctls: + description: Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows. + items: + description: Sysctl defines a kernel parameter to be set + properties: + name: + description: Name of a property to set + type: string + value: + description: Value of a property to set + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + description: The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA credential spec to use. + type: string + hostProcess: + description: HostProcess determines if a container should be run as a 'Host Process' container. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true. + type: boolean + runAsUserName: + description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: string + type: object + type: object + moverServiceAccount: + description: MoverServiceAccount allows specifying the name of the service account that will be used by the data mover. This should only be used by advanced users who want to override the service account normally used by the mover. The service account needs to exist in the same namespace as this CR. + type: string + previous: + description: Previous specifies the number of image to skip before selecting one to restore from + format: int32 + type: integer + repository: + description: Repository is the secret name containing repository info + type: string + restoreAsOf: + description: RestoreAsOf refers to the backup that is most recent as of that time. + format: date-time + type: string + storageClassName: + description: storageClassName can be used to specify the StorageClass of the destination volume. If not set, the default StorageClass will be used. + type: string + volumeSnapshotClassName: + description: volumeSnapshotClassName can be used to specify the VSC to be used if copyMethod is Snapshot. If not set, the default VSC is used. + type: string + type: object + rsync: + description: rsync defines the configuration when using Rsync-based replication. + properties: + accessModes: + description: accessModes specifies the access modes for the destination volume. + items: + type: string + minItems: 1 + type: array + address: + description: address is the remote address to connect to for replication. + type: string + capacity: + anyOf: + - type: integer + - type: string + description: capacity is the size of the destination volume to create. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + copyMethod: + description: copyMethod describes how a point-in-time (PiT) image of the destination volume should be created. + enum: + - Direct + - None + - Clone + - Snapshot + type: string + destinationPVC: + description: destinationPVC is a PVC to use as the transfer destination instead of automatically provisioning one. Either this field or both capacity and accessModes must be specified. + type: string + moverPodLabels: + additionalProperties: + type: string + description: Labels that should be added to data mover pods These will be in addition to any labels that VolSync may add + type: object + moverResources: + description: 'Resources represents compute resources required by the data mover container. Immutable. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ This should only be used by advanced users as this can result in a mover pod being unschedulable or crashing due to limited resources.' + properties: + claims: + description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n 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 + 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 + moverServiceAccount: + description: MoverServiceAccount allows specifying the name of the service account that will be used by the data mover. This should only be used by advanced users who want to override the service account normally used by the mover. The service account needs to exist in the same namespace as the ReplicationDestination. + type: string + path: + description: path is the remote path to rsync from. Defaults to "/" + type: string + port: + description: port is the SSH port to connect to for replication. Defaults to 22. + format: int32 + maximum: 65535 + minimum: 0 + type: integer + serviceAnnotations: + additionalProperties: + type: string + description: serviceAnnotations defines annotations that will be added to the service created for incoming SSH connections. If set, these annotations will be used instead of any VolSync default values. + type: object + serviceType: + description: serviceType determines the Service type that will be created for incoming SSH connections. + type: string + sshKeys: + description: sshKeys is the name of a Secret that contains the SSH keys to be used for authentication. If not provided, the keys will be generated. + type: string + sshUser: + description: sshUser is the username for outgoing SSH connections. Defaults to "root". + type: string + storageClassName: + description: storageClassName can be used to specify the StorageClass of the destination volume. If not set, the default StorageClass will be used. + type: string + volumeSnapshotClassName: + description: volumeSnapshotClassName can be used to specify the VSC to be used if copyMethod is Snapshot. If not set, the default VSC is used. + type: string + type: object + rsyncTLS: + description: rsyncTLS defines the configuration when using Rsync-based replication over TLS. + properties: + accessModes: + description: accessModes specifies the access modes for the destination volume. + items: + type: string + minItems: 1 + type: array + capacity: + anyOf: + - type: integer + - type: string + description: capacity is the size of the destination volume to create. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + copyMethod: + description: copyMethod describes how a point-in-time (PiT) image of the destination volume should be created. + enum: + - Direct + - None + - Clone + - Snapshot + type: string + destinationPVC: + description: destinationPVC is a PVC to use as the transfer destination instead of automatically provisioning one. Either this field or both capacity and accessModes must be specified. + type: string + keySecret: + description: keySecret is the name of a Secret that contains the TLS pre-shared key to be used for authentication. If not provided, the key will be generated. + type: string + moverPodLabels: + additionalProperties: + type: string + description: Labels that should be added to data mover pods These will be in addition to any labels that VolSync may add + type: object + moverResources: + description: 'Resources represents compute resources required by the data mover container. Immutable. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ This should only be used by advanced users as this can result in a mover pod being unschedulable or crashing due to limited resources.' + properties: + claims: + description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n 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 + 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 + moverSecurityContext: + description: MoverSecurityContext allows specifying the PodSecurityContext that will be used by the data mover + properties: + fsGroup: + description: "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: \n 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- \n If unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows." + format: int64 + type: integer + fsGroupChangePolicy: + description: 'fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used. Note that this field cannot be set when spec.os.name is windows.' + type: string + runAsGroup: + description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + properties: + level: + description: Level is SELinux level label that applies to the container. + type: string + role: + description: Role is a SELinux role label that applies to the container. + type: string + type: + description: Type is a SELinux type label that applies to the container. + type: string + user: + description: User is a SELinux user label that applies to the container. + type: string + type: object + seccompProfile: + description: The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows. + properties: + localhostProfile: + description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must be set if type is "Localhost". Must NOT be set for any other type. + type: string + type: + description: "type indicates which kind of seccomp profile will be applied. Valid options are: \n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied." + type: string + required: + - type + type: object + supplementalGroups: + description: A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows. + items: + format: int64 + type: integer + type: array + sysctls: + description: Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows. + items: + description: Sysctl defines a kernel parameter to be set + properties: + name: + description: Name of a property to set + type: string + value: + description: Value of a property to set + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + description: The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA credential spec to use. + type: string + hostProcess: + description: HostProcess determines if a container should be run as a 'Host Process' container. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true. + type: boolean + runAsUserName: + description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: string + type: object + type: object + moverServiceAccount: + description: MoverServiceAccount allows specifying the name of the service account that will be used by the data mover. This should only be used by advanced users who want to override the service account normally used by the mover. The service account needs to exist in the same namespace as this CR. + type: string + serviceAnnotations: + additionalProperties: + type: string + description: serviceAnnotations defines annotations that will be added to the service created for incoming SSH connections. If set, these annotations will be used instead of any VolSync default values. + type: object + serviceType: + description: serviceType determines the Service type that will be created for incoming TLS connections. + type: string + storageClassName: + description: storageClassName can be used to specify the StorageClass of the destination volume. If not set, the default StorageClass will be used. + type: string + volumeSnapshotClassName: + description: volumeSnapshotClassName can be used to specify the VSC to be used if copyMethod is Snapshot. If not set, the default VSC is used. + type: string + type: object + trigger: + description: trigger determines if/when the destination should attempt to synchronize data with the source. + properties: + manual: + description: manual is a string value that schedules a manual trigger. Once a sync completes then status.lastManualSync is set to the same string value. A consumer of a manual trigger should set spec.trigger.manual to a known value and then wait for lastManualSync to be updated by the operator to the same value, which means that the manual trigger will then pause and wait for further updates to the trigger. + type: string + schedule: + description: schedule is a cronspec (https://en.wikipedia.org/wiki/Cron#Overview) that can be used to schedule replication to occur at regular, time-based intervals. nolint:lll + pattern: ^(@(annually|yearly|monthly|weekly|daily|hourly))|((((\d+,)*\d+|(\d+(\/|-)\d+)|\*(\/\d+)?)\s?){5})$ + type: string + type: object + type: object + status: + description: status is the observed state of the ReplicationDestination as determined by the controller. + properties: + conditions: + description: conditions represent the latest available observations of the destination's state. + items: + description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, \n type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + 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 may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "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. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + external: + additionalProperties: + type: string + description: external contains provider-specific status information. For more details, please see the documentation of the specific replication provider being used. + type: object + lastManualSync: + description: lastManualSync is set to the last spec.trigger.manual when the manual sync is done. + type: string + lastSyncDuration: + description: lastSyncDuration is the amount of time required to send the most recent update. + type: string + lastSyncStartTime: + description: lastSyncStartTime is the time the most recent synchronization started. + format: date-time + type: string + lastSyncTime: + description: lastSyncTime is the time of the most recent successful synchronization. + format: date-time + type: string + latestImage: + description: latestImage in the object holding the most recent consistent replicated image. + properties: + apiGroup: + description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + type: string + kind: + description: Kind is the type of resource being referenced + type: string + name: + description: Name is the name of resource being referenced + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + latestMoverStatus: + description: Logs/Summary from latest mover job + properties: + logs: + type: string + result: + type: string + type: object + nextSyncTime: + description: nextSyncTime is the time when the next volume synchronization is scheduled to start (for schedule-based synchronization). + format: date-time + type: string + rsync: + description: rsync contains status information for Rsync-based replication. + properties: + address: + description: address is the address to connect to for incoming SSH replication connections. + type: string + port: + description: port is the SSH port to connect to for incoming SSH replication connections. + format: int32 + type: integer + sshKeys: + description: sshKeys is the name of a Secret that contains the SSH keys to be used for authentication. If not provided in .spec.rsync.sshKeys, SSH keys will be generated and the appropriate keys for the remote side will be placed here. + type: string + type: object + rsyncTLS: + description: rsyncTLS contains status information for Rsync-based replication over TLS. + properties: + address: + description: address is the address to connect to for incoming TLS connections. + type: string + keySecret: + description: keySecret is the name of a Secret that contains the TLS pre-shared key to be used for authentication. If not provided in .spec.rsyncTLS.keySecret, the key Secret will be generated and named here. + type: string + port: + description: port is the port to connect to for incoming replication connections. + format: int32 + type: integer + type: object + type: object + type: object + served: true + storage: true + subresources: + status: {} +{{- end }} diff --git a/system/volsync/1.0.8/templates/volsync.backube_replicationsources.yaml b/system/volsync/1.0.8/templates/volsync.backube_replicationsources.yaml new file mode 100644 index 00000000000..3cf24890b88 --- /dev/null +++ b/system/volsync/1.0.8/templates/volsync.backube_replicationsources.yaml @@ -0,0 +1,1098 @@ +{{- if .Values.manageCRDs }} +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.13.0 + helm.sh/resource-policy: keep + name: replicationsources.volsync.backube +spec: + group: volsync.backube + names: + kind: ReplicationSource + listKind: ReplicationSourceList + plural: replicationsources + singular: replicationsource + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.sourcePVC + name: Source + type: string + - format: date-time + jsonPath: .status.lastSyncTime + name: Last sync + type: string + - jsonPath: .status.lastSyncDuration + name: Duration + type: string + - format: date-time + jsonPath: .status.nextSyncTime + name: Next sync + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: ReplicationSource defines the source for a replicated volume + 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: spec is the desired state of the ReplicationSource, including the replication method to use and its configuration. + properties: + external: + description: external defines the configuration when using an external replication provider. + properties: + parameters: + additionalProperties: + type: string + description: parameters are provider-specific key/value configuration parameters. For more information, please see the documentation of the specific replication provider being used. + type: object + provider: + description: 'provider is the name of the external replication provider. The name should be of the form: domain.com/provider.' + type: string + type: object + paused: + description: paused can be used to temporarily stop replication. Defaults to "false". + type: boolean + rclone: + description: rclone defines the configuration when using Rclone-based replication. + properties: + accessModes: + description: accessModes can be used to override the accessModes of the PiT image. + items: + type: string + minItems: 1 + type: array + capacity: + anyOf: + - type: integer + - type: string + description: capacity can be used to override the capacity of the PiT image. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + copyMethod: + description: copyMethod describes how a point-in-time (PiT) image of the source volume should be created. + enum: + - Direct + - None + - Clone + - Snapshot + type: string + customCA: + description: customCA is a custom CA that will be used to verify the remote + properties: + configMapName: + description: The name of a ConfigMap that contains the custom CA certificate If ConfigMapName is used then SecretName should not be set + type: string + key: + description: The key within the Secret or ConfigMap containing the CA certificate + type: string + secretName: + description: The name of a Secret that contains the custom CA certificate If SecretName is used then ConfigMapName should not be set + type: string + type: object + moverPodLabels: + additionalProperties: + type: string + description: Labels that should be added to data mover pods These will be in addition to any labels that VolSync may add + type: object + moverResources: + description: 'Resources represents compute resources required by the data mover container. Immutable. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ This should only be used by advanced users as this can result in a mover pod being unschedulable or crashing due to limited resources.' + properties: + claims: + description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n 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 + 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 + moverSecurityContext: + description: MoverSecurityContext allows specifying the PodSecurityContext that will be used by the data mover + properties: + fsGroup: + description: "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: \n 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- \n If unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows." + format: int64 + type: integer + fsGroupChangePolicy: + description: 'fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used. Note that this field cannot be set when spec.os.name is windows.' + type: string + runAsGroup: + description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + properties: + level: + description: Level is SELinux level label that applies to the container. + type: string + role: + description: Role is a SELinux role label that applies to the container. + type: string + type: + description: Type is a SELinux type label that applies to the container. + type: string + user: + description: User is a SELinux user label that applies to the container. + type: string + type: object + seccompProfile: + description: The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows. + properties: + localhostProfile: + description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must be set if type is "Localhost". Must NOT be set for any other type. + type: string + type: + description: "type indicates which kind of seccomp profile will be applied. Valid options are: \n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied." + type: string + required: + - type + type: object + supplementalGroups: + description: A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows. + items: + format: int64 + type: integer + type: array + sysctls: + description: Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows. + items: + description: Sysctl defines a kernel parameter to be set + properties: + name: + description: Name of a property to set + type: string + value: + description: Value of a property to set + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + description: The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA credential spec to use. + type: string + hostProcess: + description: HostProcess determines if a container should be run as a 'Host Process' container. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true. + type: boolean + runAsUserName: + description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: string + type: object + type: object + moverServiceAccount: + description: MoverServiceAccount allows specifying the name of the service account that will be used by the data mover. This should only be used by advanced users who want to override the service account normally used by the mover. The service account needs to exist in the same namespace as this CR. + type: string + rcloneConfig: + description: RcloneConfig is the rclone secret name + type: string + rcloneConfigSection: + description: RcloneConfigSection is the section in rclone_config file to use for the current job. + type: string + rcloneDestPath: + description: RcloneDestPath is the remote path to sync to. + type: string + storageClassName: + description: storageClassName can be used to override the StorageClass of the PiT image. + type: string + volumeSnapshotClassName: + description: volumeSnapshotClassName can be used to specify the VSC to be used if copyMethod is Snapshot. If not set, the default VSC is used. + type: string + type: object + restic: + description: restic defines the configuration when using Restic-based replication. + properties: + accessModes: + description: accessModes can be used to override the accessModes of the PiT image. + items: + type: string + minItems: 1 + type: array + cacheAccessModes: + description: CacheAccessModes can be used to set the accessModes of restic metadata cache volume + items: + type: string + type: array + cacheCapacity: + anyOf: + - type: integer + - type: string + description: cacheCapacity can be used to set the size of the restic metadata cache volume + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + cacheStorageClassName: + description: cacheStorageClassName can be used to set the StorageClass of the restic metadata cache volume + type: string + capacity: + anyOf: + - type: integer + - type: string + description: capacity can be used to override the capacity of the PiT image. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + copyMethod: + description: copyMethod describes how a point-in-time (PiT) image of the source volume should be created. + enum: + - Direct + - None + - Clone + - Snapshot + type: string + customCA: + description: customCA is a custom CA that will be used to verify the remote + properties: + configMapName: + description: The name of a ConfigMap that contains the custom CA certificate If ConfigMapName is used then SecretName should not be set + type: string + key: + description: The key within the Secret or ConfigMap containing the CA certificate + type: string + secretName: + description: The name of a Secret that contains the custom CA certificate If SecretName is used then ConfigMapName should not be set + type: string + type: object + moverPodLabels: + additionalProperties: + type: string + description: Labels that should be added to data mover pods These will be in addition to any labels that VolSync may add + type: object + moverResources: + description: 'Resources represents compute resources required by the data mover container. Immutable. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ This should only be used by advanced users as this can result in a mover pod being unschedulable or crashing due to limited resources.' + properties: + claims: + description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n 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 + 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 + moverSecurityContext: + description: MoverSecurityContext allows specifying the PodSecurityContext that will be used by the data mover + properties: + fsGroup: + description: "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: \n 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- \n If unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows." + format: int64 + type: integer + fsGroupChangePolicy: + description: 'fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used. Note that this field cannot be set when spec.os.name is windows.' + type: string + runAsGroup: + description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + properties: + level: + description: Level is SELinux level label that applies to the container. + type: string + role: + description: Role is a SELinux role label that applies to the container. + type: string + type: + description: Type is a SELinux type label that applies to the container. + type: string + user: + description: User is a SELinux user label that applies to the container. + type: string + type: object + seccompProfile: + description: The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows. + properties: + localhostProfile: + description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must be set if type is "Localhost". Must NOT be set for any other type. + type: string + type: + description: "type indicates which kind of seccomp profile will be applied. Valid options are: \n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied." + type: string + required: + - type + type: object + supplementalGroups: + description: A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows. + items: + format: int64 + type: integer + type: array + sysctls: + description: Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows. + items: + description: Sysctl defines a kernel parameter to be set + properties: + name: + description: Name of a property to set + type: string + value: + description: Value of a property to set + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + description: The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA credential spec to use. + type: string + hostProcess: + description: HostProcess determines if a container should be run as a 'Host Process' container. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true. + type: boolean + runAsUserName: + description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: string + type: object + type: object + moverServiceAccount: + description: MoverServiceAccount allows specifying the name of the service account that will be used by the data mover. This should only be used by advanced users who want to override the service account normally used by the mover. The service account needs to exist in the same namespace as this CR. + type: string + pruneIntervalDays: + description: PruneIntervalDays define how often to prune the repository + format: int32 + type: integer + repository: + description: Repository is the secret name containing repository info + type: string + retain: + description: ResticRetainPolicy define the retain policy + properties: + daily: + description: Daily defines the number of snapshots to be kept daily + format: int32 + type: integer + hourly: + description: Hourly defines the number of snapshots to be kept hourly + format: int32 + type: integer + last: + description: Last defines the number of snapshots to be kept + type: string + monthly: + description: Monthly defines the number of snapshots to be kept monthly + format: int32 + type: integer + weekly: + description: Weekly defines the number of snapshots to be kept weekly + format: int32 + type: integer + within: + description: Within defines the number of snapshots to be kept Within the given time period + type: string + yearly: + description: Yearly defines the number of snapshots to be kept yearly + format: int32 + type: integer + type: object + storageClassName: + description: storageClassName can be used to override the StorageClass of the PiT image. + type: string + unlock: + description: unlock is a string value that schedules an unlock on the restic repository during the next sync operation. Once a sync completes then status.restic.lastUnlocked is set to the same string value. To unlock a repository, set spec.restic.unlock to a known value and then wait for lastUnlocked to be updated by the operator to the same value, which means that the sync unlocked the repository by running a restic unlock command and then ran a backup. Unlock will not be run again unless spec.restic.unlock is set to a different value. + type: string + volumeSnapshotClassName: + description: volumeSnapshotClassName can be used to specify the VSC to be used if copyMethod is Snapshot. If not set, the default VSC is used. + type: string + type: object + rsync: + description: rsync defines the configuration when using Rsync-based replication. + properties: + accessModes: + description: accessModes can be used to override the accessModes of the PiT image. + items: + type: string + minItems: 1 + type: array + address: + description: address is the remote address to connect to for replication. + type: string + capacity: + anyOf: + - type: integer + - type: string + description: capacity can be used to override the capacity of the PiT image. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + copyMethod: + description: copyMethod describes how a point-in-time (PiT) image of the source volume should be created. + enum: + - Direct + - None + - Clone + - Snapshot + type: string + moverPodLabels: + additionalProperties: + type: string + description: Labels that should be added to data mover pods These will be in addition to any labels that VolSync may add + type: object + moverResources: + description: 'Resources represents compute resources required by the data mover container. Immutable. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ This should only be used by advanced users as this can result in a mover pod being unschedulable or crashing due to limited resources.' + properties: + claims: + description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n 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 + 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 + moverServiceAccount: + description: MoverServiceAccount allows specifying the name of the service account that will be used by the data mover. This should only be used by advanced users who want to override the service account normally used by the mover. The service account needs to exist in the same namespace as the ReplicationSource. + type: string + path: + description: path is the remote path to rsync to. Defaults to "/" + type: string + port: + description: port is the SSH port to connect to for replication. Defaults to 22. + format: int32 + maximum: 65535 + minimum: 0 + type: integer + serviceType: + description: serviceType determines the Service type that will be created for incoming SSH connections. + type: string + sshKeys: + description: sshKeys is the name of a Secret that contains the SSH keys to be used for authentication. If not provided, the keys will be generated. + type: string + sshUser: + description: sshUser is the username for outgoing SSH connections. Defaults to "root". + type: string + storageClassName: + description: storageClassName can be used to override the StorageClass of the PiT image. + type: string + volumeSnapshotClassName: + description: volumeSnapshotClassName can be used to specify the VSC to be used if copyMethod is Snapshot. If not set, the default VSC is used. + type: string + type: object + rsyncTLS: + description: rsyncTLS defines the configuration when using Rsync-based replication over TLS. + properties: + accessModes: + description: accessModes can be used to override the accessModes of the PiT image. + items: + type: string + minItems: 1 + type: array + address: + description: address is the remote address to connect to for replication. + type: string + capacity: + anyOf: + - type: integer + - type: string + description: capacity can be used to override the capacity of the PiT image. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + copyMethod: + description: copyMethod describes how a point-in-time (PiT) image of the source volume should be created. + enum: + - Direct + - None + - Clone + - Snapshot + type: string + keySecret: + description: keySecret is the name of a Secret that contains the TLS pre-shared key to be used for authentication. If not provided, the key will be generated. + type: string + moverPodLabels: + additionalProperties: + type: string + description: Labels that should be added to data mover pods These will be in addition to any labels that VolSync may add + type: object + moverResources: + description: 'Resources represents compute resources required by the data mover container. Immutable. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ This should only be used by advanced users as this can result in a mover pod being unschedulable or crashing due to limited resources.' + properties: + claims: + description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n 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 + 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 + moverSecurityContext: + description: MoverSecurityContext allows specifying the PodSecurityContext that will be used by the data mover + properties: + fsGroup: + description: "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: \n 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- \n If unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows." + format: int64 + type: integer + fsGroupChangePolicy: + description: 'fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used. Note that this field cannot be set when spec.os.name is windows.' + type: string + runAsGroup: + description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + properties: + level: + description: Level is SELinux level label that applies to the container. + type: string + role: + description: Role is a SELinux role label that applies to the container. + type: string + type: + description: Type is a SELinux type label that applies to the container. + type: string + user: + description: User is a SELinux user label that applies to the container. + type: string + type: object + seccompProfile: + description: The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows. + properties: + localhostProfile: + description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must be set if type is "Localhost". Must NOT be set for any other type. + type: string + type: + description: "type indicates which kind of seccomp profile will be applied. Valid options are: \n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied." + type: string + required: + - type + type: object + supplementalGroups: + description: A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows. + items: + format: int64 + type: integer + type: array + sysctls: + description: Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows. + items: + description: Sysctl defines a kernel parameter to be set + properties: + name: + description: Name of a property to set + type: string + value: + description: Value of a property to set + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + description: The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA credential spec to use. + type: string + hostProcess: + description: HostProcess determines if a container should be run as a 'Host Process' container. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true. + type: boolean + runAsUserName: + description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: string + type: object + type: object + moverServiceAccount: + description: MoverServiceAccount allows specifying the name of the service account that will be used by the data mover. This should only be used by advanced users who want to override the service account normally used by the mover. The service account needs to exist in the same namespace as this CR. + type: string + port: + description: port is the port to connect to for replication. Defaults to 8000. + format: int32 + maximum: 65535 + minimum: 0 + type: integer + storageClassName: + description: storageClassName can be used to override the StorageClass of the PiT image. + type: string + volumeSnapshotClassName: + description: volumeSnapshotClassName can be used to specify the VSC to be used if copyMethod is Snapshot. If not set, the default VSC is used. + type: string + type: object + sourcePVC: + description: sourcePVC is the name of the PersistentVolumeClaim (PVC) to replicate. + type: string + syncthing: + description: syncthing defines the configuration when using Syncthing-based replication. + properties: + configAccessModes: + description: Used to set the accessModes of Syncthing config volume. + items: + type: string + type: array + configCapacity: + anyOf: + - type: integer + - type: string + description: Used to set the size of the Syncthing config volume. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + configStorageClassName: + description: Used to set the StorageClass of the Syncthing config volume. + type: string + moverPodLabels: + additionalProperties: + type: string + description: Labels that should be added to data mover pods These will be in addition to any labels that VolSync may add + type: object + moverResources: + description: 'Resources represents compute resources required by the data mover container. Immutable. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ This should only be used by advanced users as this can result in a mover pod being unschedulable or crashing due to limited resources.' + properties: + claims: + description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n 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 + 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 + moverSecurityContext: + description: MoverSecurityContext allows specifying the PodSecurityContext that will be used by the data mover + properties: + fsGroup: + description: "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: \n 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- \n If unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows." + format: int64 + type: integer + fsGroupChangePolicy: + description: 'fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used. Note that this field cannot be set when spec.os.name is windows.' + type: string + runAsGroup: + description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + properties: + level: + description: Level is SELinux level label that applies to the container. + type: string + role: + description: Role is a SELinux role label that applies to the container. + type: string + type: + description: Type is a SELinux type label that applies to the container. + type: string + user: + description: User is a SELinux user label that applies to the container. + type: string + type: object + seccompProfile: + description: The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows. + properties: + localhostProfile: + description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must be set if type is "Localhost". Must NOT be set for any other type. + type: string + type: + description: "type indicates which kind of seccomp profile will be applied. Valid options are: \n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied." + type: string + required: + - type + type: object + supplementalGroups: + description: A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows. + items: + format: int64 + type: integer + type: array + sysctls: + description: Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows. + items: + description: Sysctl defines a kernel parameter to be set + properties: + name: + description: Name of a property to set + type: string + value: + description: Value of a property to set + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + description: The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA credential spec to use. + type: string + hostProcess: + description: HostProcess determines if a container should be run as a 'Host Process' container. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true. + type: boolean + runAsUserName: + description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + type: string + type: object + type: object + moverServiceAccount: + description: MoverServiceAccount allows specifying the name of the service account that will be used by the data mover. This should only be used by advanced users who want to override the service account normally used by the mover. The service account needs to exist in the same namespace as this CR. + type: string + peers: + description: List of Syncthing peers to be connected for syncing + items: + description: SyncthingPeer Defines the necessary information needed by VolSync to configure a given peer with the running Syncthing instance. + properties: + ID: + description: The peer's Syncthing ID. + type: string + address: + description: The peer's address that our Syncthing node will connect to. + type: string + introducer: + description: A flag that determines whether this peer should introduce us to other peers sharing this volume. It is HIGHLY recommended that two Syncthing peers do NOT set each other as introducers as you will have a difficult time disconnecting the two. + type: boolean + required: + - ID + - address + - introducer + type: object + type: array + serviceType: + description: Type of service to be used when exposing the Syncthing peer + type: string + type: object + trigger: + description: trigger determines when the latest state of the volume will be captured (and potentially replicated to the destination). + properties: + manual: + description: manual is a string value that schedules a manual trigger. Once a sync completes then status.lastManualSync is set to the same string value. A consumer of a manual trigger should set spec.trigger.manual to a known value and then wait for lastManualSync to be updated by the operator to the same value, which means that the manual trigger will then pause and wait for further updates to the trigger. + type: string + schedule: + description: schedule is a cronspec (https://en.wikipedia.org/wiki/Cron#Overview) that can be used to schedule replication to occur at regular, time-based intervals. nolint:lll + pattern: ^(@(annually|yearly|monthly|weekly|daily|hourly))|((((\d+,)*\d+|(\d+(\/|-)\d+)|\*(\/\d+)?)\s?){5})$ + type: string + type: object + type: object + status: + description: status is the observed state of the ReplicationSource as determined by the controller. + properties: + conditions: + description: conditions represent the latest available observations of the source's state. + items: + description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, \n type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + 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 may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "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. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + external: + additionalProperties: + type: string + description: external contains provider-specific status information. For more details, please see the documentation of the specific replication provider being used. + type: object + lastManualSync: + description: lastManualSync is set to the last spec.trigger.manual when the manual sync is done. + type: string + lastSyncDuration: + description: lastSyncDuration is the amount of time required to send the most recent update. + type: string + lastSyncStartTime: + description: lastSyncStartTime is the time the most recent synchronization started. + format: date-time + type: string + lastSyncTime: + description: lastSyncTime is the time of the most recent successful synchronization. + format: date-time + type: string + latestMoverStatus: + description: Logs/Summary from latest mover job + properties: + logs: + type: string + result: + type: string + type: object + nextSyncTime: + description: nextSyncTime is the time when the next volume synchronization is scheduled to start (for schedule-based synchronization). + format: date-time + type: string + restic: + description: restic contains status information for Restic-based replication. + properties: + lastPruned: + description: lastPruned in the object holding the time of last pruned + format: date-time + type: string + lastUnlocked: + description: lastUnlocked is set to the last spec.restic.unlock when a sync is done that unlocks the restic repository. + type: string + type: object + rsync: + description: rsync contains status information for Rsync-based replication. + properties: + address: + description: address is the address to connect to for incoming SSH replication connections. + type: string + port: + description: port is the SSH port to connect to for incoming SSH replication connections. + format: int32 + type: integer + sshKeys: + description: sshKeys is the name of a Secret that contains the SSH keys to be used for authentication. If not provided in .spec.rsync.sshKeys, SSH keys will be generated and the appropriate keys for the remote side will be placed here. + type: string + type: object + rsyncTLS: + description: rsyncTLS contains status information for Rsync-based replication over TLS. + properties: + keySecret: + description: keySecret is the name of a Secret that contains the TLS pre-shared key to be used for authentication. If not provided in .spec.rsyncTLS.keySecret, the key Secret will be generated and named here. + type: string + type: object + syncthing: + description: contains status information when Syncthing-based replication is used. + properties: + ID: + description: Device ID of the current syncthing device + type: string + address: + description: Service address where Syncthing is exposed to the rest of the world + type: string + peers: + description: List of the Syncthing nodes we are currently connected to. + items: + description: SyncthingPeerStatus Is a struct that contains information pertaining to the status of a given Syncthing peer. + properties: + ID: + description: ID Is the peer's Syncthing ID. + type: string + address: + description: The address of the Syncthing peer. + type: string + connected: + description: Flag indicating whether peer is currently connected. + type: boolean + introducedBy: + description: The ID of the Syncthing peer that this one was introduced by. + type: string + name: + description: A friendly name to associate the given device. + type: string + required: + - ID + - address + - connected + type: object + type: array + type: object + type: object + type: object + served: true + storage: true + subresources: + status: {} +{{- end }} diff --git a/system/volsync/1.0.8/values.yaml b/system/volsync/1.0.8/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/system/volsync/item.yaml b/system/volsync/item.yaml new file mode 100644 index 00000000000..2729919c8ff --- /dev/null +++ b/system/volsync/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/volsync.webp +categories: + - network +screenshots: []