apiVersion: v1 kind: Namespace metadata: name: projectsveltos --- apiVersion: v1 kind: ServiceAccount metadata: name: sveltosctl namespace: projectsveltos --- apiVersion: v1 kind: Service metadata: name: sveltosctl namespace: projectsveltos labels: app: sveltosctl spec: ports: - port: 80 name: web clusterIP: None selector: app.kubernetes.io/name: sveltosctl --- apiVersion: apps/v1 kind: StatefulSet metadata: name: sveltosctl namespace: projectsveltos labels: app.kubernetes.io/name: sveltosctl spec: selector: matchLabels: app.kubernetes.io/name: sveltosctl replicas: 1 serviceName: "sveltosctl" minReadySeconds: 10 template: metadata: labels: app.kubernetes.io/name: sveltosctl spec: serviceAccountName: sveltosctl containers: - name: sveltosctl image: docker.io/projectsveltos/sveltosctl:main imagePullPolicy: IfNotPresent command: - /sveltosctl args: - snapshot - reconciler - v=5 securityContext: allowPrivilegeEscalation: false readOnlyRootFilesystem: true runAsUser: 0 volumeMounts: - mountPath: /collection name: collection - mountPath: /etc/localtime name: tz-config - mountPath: /tmp name: tmp volumes: - emptyDir: {} name: tmp - hostPath: path: /usr/share/zoneinfo/America/Los_Angeles name: tz-config volumeClaimTemplates: - metadata: name: collection spec: accessModes: [ "ReadWriteOnce" ] storageClassName: "standard" resources: requests: storage: 1Gi --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: sveltosctl rules: - apiGroups: [""] resources: - configmaps - secrets - namespaces verbs: - get - list - create - update - apiGroups: ["config.projectsveltos.io"] resources: - clusterconfigurations - clusterreports verbs: - get - list - apiGroups: ["config.projectsveltos.io"] resources: - clusterprofiles - profiles verbs: - get - list - create - update - apiGroups: ["lib.projectsveltos.io"] resources: - classifiers - eventsources - healthchecks - healthcheckreports - eventtriggers verbs: - get - list - update - apiGroups: ["lib.projectsveltos.io"] resources: - sveltosclusters verbs: - get - list - update - watch - apiGroups: ["utils.projectsveltos.io"] resources: - snapshots verbs: - get - list - watch - update - apiGroups: ["utils.projectsveltos.io"] resources: - snapshots/finalizers verbs: - patch - update - apiGroups: ["utils.projectsveltos.io"] resources: - snapshots/status verbs: - '*' - apiGroups: ["cluster.x-k8s.io"] resources: - clusters - machines verbs: - get - list - watch - update - apiGroups: ["lib.projectsveltos.io"] resources: - rolerequests - rolerequests/status verbs: - get - list - watch - update - apiGroups: ["apiextensions.k8s.io"] resources: - customresourcedefinitions verbs: - get - list - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: sveltosctl roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: sveltosctl subjects: - kind: ServiceAccount name: sveltosctl namespace: projectsveltos --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.18.0 name: snapshots.utils.projectsveltos.io spec: group: utils.projectsveltos.io names: kind: Snapshot listKind: SnapshotList plural: snapshots singular: snapshot scope: Cluster versions: - name: v1beta1 schema: openAPIV3Schema: description: Snapshot is the Schema for the snapshot API properties: apiVersion: description: |- APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: description: |- Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: description: SnapshotSpec defines the desired state of Snapshot properties: schedule: description: Schedule in Cron format, see https://en.wikipedia.org/wiki/Cron. type: string startingDeadlineSeconds: description: |- Optional deadline in seconds for starting the job if it misses scheduled time for any reason. Missed jobs executions will be counted as failed ones. format: int64 type: integer storage: description: |- Storage represents directory where snapshots will be stored. It must be an existing directory. Snapshots will be stored in this directory in a subdirectory named with Snapshot instance name. type: string successfulSnapshotLimit: description: |- The number of successful finished snapshots to retains. If specified, only SuccessfulSnapshotLimit will be retained. Once such number is reached, for any new successful snapshots, the oldest one is deleted. format: int32 type: integer required: - schedule - storage type: object status: description: SnapshotStatus defines the observed state of Snapshot properties: failureMessage: description: |- FailureMessage provides more information about the error, if any occurred type: string lastRunStatus: description: Status indicates what happened to last snapshot collection. enum: - Collected - InProgress - Failed type: string lastRunTime: description: Information when was the last time a snapshot was successfully scheduled. format: date-time type: string nextScheduleTime: description: Information when next snapshot is scheduled format: date-time type: string type: object type: object served: true storage: true subresources: status: {} --- ---