Generate CRDs with structural schema (#1885)
* generating CRDs with controller-tools and embedding in binary Signed-off-by: Adnan Abdulhussein <aadnan@vmware.com>pull/1907/head
parent
dc11e2a829
commit
5e22f9c1c8
|
@ -739,10 +739,11 @@
|
||||||
version = "kubernetes-1.15.3"
|
version = "kubernetes-1.15.3"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
digest = "1:668bafb576081b9dd26c0cac69296549ad65e3e3af789a8ad1d9b9114b2f55c1"
|
digest = "1:d26e3d9d22801d0a4de9b20264eba64f962e637952c937b1afb745ecbe69b4cb"
|
||||||
name = "k8s.io/apiextensions-apiserver"
|
name = "k8s.io/apiextensions-apiserver"
|
||||||
packages = [
|
packages = [
|
||||||
"pkg/apis/apiextensions",
|
"pkg/apis/apiextensions",
|
||||||
|
"pkg/apis/apiextensions/install",
|
||||||
"pkg/apis/apiextensions/v1beta1",
|
"pkg/apis/apiextensions/v1beta1",
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
|
@ -1112,6 +1113,7 @@
|
||||||
"k8s.io/api/rbac/v1",
|
"k8s.io/api/rbac/v1",
|
||||||
"k8s.io/api/rbac/v1beta1",
|
"k8s.io/api/rbac/v1beta1",
|
||||||
"k8s.io/api/storage/v1",
|
"k8s.io/api/storage/v1",
|
||||||
|
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install",
|
||||||
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1",
|
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1",
|
||||||
"k8s.io/apimachinery/pkg/api/equality",
|
"k8s.io/apimachinery/pkg/api/equality",
|
||||||
"k8s.io/apimachinery/pkg/api/errors",
|
"k8s.io/apimachinery/pkg/api/errors",
|
||||||
|
|
|
@ -21,6 +21,8 @@ RUN mkdir -p /go/src/k8s.io && \
|
||||||
git clone -b kubernetes-1.15.3 https://github.com/kubernetes/apimachinery && \
|
git clone -b kubernetes-1.15.3 https://github.com/kubernetes/apimachinery && \
|
||||||
# vendor code-generator go modules to be compatible with pre-1.15
|
# vendor code-generator go modules to be compatible with pre-1.15
|
||||||
cd /go/src/k8s.io/code-generator && GO111MODULE=on go mod vendor && \
|
cd /go/src/k8s.io/code-generator && GO111MODULE=on go mod vendor && \
|
||||||
|
go get -d sigs.k8s.io/controller-tools/cmd/controller-gen && \
|
||||||
|
cd /go/src/sigs.k8s.io/controller-tools && GO111MODULE=on go mod vendor && \
|
||||||
go get golang.org/x/tools/cmd/goimports && \
|
go get golang.org/x/tools/cmd/goimports && \
|
||||||
cd /go/src/golang.org/x/tools && \
|
cd /go/src/golang.org/x/tools && \
|
||||||
git checkout 40a48ad93fbe707101afb2099b738471f70594ec && \
|
git checkout 40a48ad93fbe707101afb2099b738471f70594ec && \
|
||||||
|
|
|
@ -0,0 +1,136 @@
|
||||||
|
/*
|
||||||
|
Copyright 2019 the Velero contributors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// This code embeds the CRD manifests in pkg/generated/crds/manifests in
|
||||||
|
// pkg/generated/crds/crds.go.
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"compress/gzip"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"io/ioutil"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"text/template"
|
||||||
|
)
|
||||||
|
|
||||||
|
// This is relative to pkg/generated/crds
|
||||||
|
const goHeaderFile = "../../../hack/boilerplate.go.txt"
|
||||||
|
|
||||||
|
const tpl = `{{.GoHeader}}
|
||||||
|
// Code generated by crds_generate.go; DO NOT EDIT.
|
||||||
|
|
||||||
|
package crds
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"compress/gzip"
|
||||||
|
"io/ioutil"
|
||||||
|
|
||||||
|
apiextinstall "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install"
|
||||||
|
apiextv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
|
||||||
|
"k8s.io/client-go/kubernetes/scheme"
|
||||||
|
)
|
||||||
|
|
||||||
|
var rawCRDs = [][]byte{
|
||||||
|
{{- range .RawCRDs }}
|
||||||
|
[]byte({{ . }}),
|
||||||
|
{{- end }}
|
||||||
|
}
|
||||||
|
|
||||||
|
var CRDs = crds()
|
||||||
|
|
||||||
|
func crds() []*apiextv1beta1.CustomResourceDefinition {
|
||||||
|
apiextinstall.Install(scheme.Scheme)
|
||||||
|
decode := scheme.Codecs.UniversalDeserializer().Decode
|
||||||
|
var objs []*apiextv1beta1.CustomResourceDefinition
|
||||||
|
for _, crd := range rawCRDs {
|
||||||
|
gzr, err := gzip.NewReader(bytes.NewReader(crd))
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
bytes, err := ioutil.ReadAll(gzr)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
gzr.Close()
|
||||||
|
|
||||||
|
obj, _, err := decode(bytes, nil, nil)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
objs = append(objs, obj.(*apiextv1beta1.CustomResourceDefinition))
|
||||||
|
}
|
||||||
|
return objs
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
type templateData struct {
|
||||||
|
GoHeader string
|
||||||
|
RawCRDs []string
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
headerBytes, err := ioutil.ReadFile(goHeaderFile)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalln(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
data := templateData{
|
||||||
|
GoHeader: string(headerBytes),
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is relative to pkg/generated/crds
|
||||||
|
manifests, err := ioutil.ReadDir("manifests")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalln(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, crd := range manifests {
|
||||||
|
file, err := os.Open("manifests/" + crd.Name())
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalln(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// gzip compress manifest
|
||||||
|
var buf bytes.Buffer
|
||||||
|
gzw := gzip.NewWriter(&buf)
|
||||||
|
if _, err := io.Copy(gzw, file); err != nil {
|
||||||
|
log.Fatalln(err)
|
||||||
|
}
|
||||||
|
file.Close()
|
||||||
|
gzw.Close()
|
||||||
|
|
||||||
|
data.RawCRDs = append(data.RawCRDs, fmt.Sprintf("%q", buf.Bytes()))
|
||||||
|
}
|
||||||
|
|
||||||
|
t, err := template.New("crds").Parse(tpl)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalln(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
out, err := os.Create("crds.go")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalln(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := t.Execute(out, data); err != nil {
|
||||||
|
log.Fatalln(err)
|
||||||
|
}
|
||||||
|
}
|
|
@ -28,12 +28,27 @@ if [[ ! -d "${GOPATH}/src/k8s.io/code-generator" ]]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd ${GOPATH}/src/k8s.io/code-generator
|
if [[ ! -d "${GOPATH}/src/sigs.k8s.io/controller-tools" ]]; then
|
||||||
|
echo "sigs.k8s.io/controller-tools missing from GOPATH"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
./generate-groups.sh \
|
${GOPATH}/src/k8s.io/code-generator/generate-groups.sh \
|
||||||
all \
|
all \
|
||||||
github.com/heptio/velero/pkg/generated \
|
github.com/heptio/velero/pkg/generated \
|
||||||
github.com/heptio/velero/pkg/apis \
|
github.com/heptio/velero/pkg/apis \
|
||||||
"velero:v1" \
|
"velero:v1" \
|
||||||
--go-header-file ${GOPATH}/src/github.com/heptio/velero/hack/boilerplate.go.txt \
|
--go-header-file ${GOPATH}/src/github.com/heptio/velero/hack/boilerplate.go.txt \
|
||||||
$@
|
$@
|
||||||
|
|
||||||
|
if [[ "$@" == "--verify-only" ]]; then
|
||||||
|
# skip generating CRD manifests
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
go run ${GOPATH}/src/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go \
|
||||||
|
crd \
|
||||||
|
output:dir=pkg/generated/crds/manifests \
|
||||||
|
paths=./pkg/apis/velero/v1/...
|
||||||
|
|
||||||
|
go generate ./pkg/generated/crds
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,4 @@
|
||||||
|
// Package crds embeds the controller-tools generated CRD manifests
|
||||||
|
package crds
|
||||||
|
|
||||||
|
//go:generate go run ../../../hack/crd-gen/main.go
|
|
@ -0,0 +1,397 @@
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: backups.velero.io
|
||||||
|
spec:
|
||||||
|
group: velero.io
|
||||||
|
names:
|
||||||
|
kind: Backup
|
||||||
|
listKind: BackupList
|
||||||
|
plural: backups
|
||||||
|
singular: backup
|
||||||
|
scope: ""
|
||||||
|
validation:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: Backup is a Velero resource that respresents the capture of Kubernetes
|
||||||
|
cluster state at a point in time (API objects and associated volume state).
|
||||||
|
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/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/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: BackupSpec defines the specification for a Velero backup.
|
||||||
|
properties:
|
||||||
|
excludedNamespaces:
|
||||||
|
description: ExcludedNamespaces contains a list of namespaces that are
|
||||||
|
not included in the backup.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
excludedResources:
|
||||||
|
description: ExcludedResources is a slice of resource names that are
|
||||||
|
not included in the backup.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
hooks:
|
||||||
|
description: Hooks represent custom behaviors that should be executed
|
||||||
|
at different phases of the backup.
|
||||||
|
properties:
|
||||||
|
resources:
|
||||||
|
description: Resources are hooks that should be executed when backing
|
||||||
|
up individual instances of a resource.
|
||||||
|
items:
|
||||||
|
description: BackupResourceHookSpec defines one or more BackupResourceHooks
|
||||||
|
that should be executed based on the rules defined for namespaces,
|
||||||
|
resources, and label selector.
|
||||||
|
properties:
|
||||||
|
excludedNamespaces:
|
||||||
|
description: ExcludedNamespaces specifies the namespaces to
|
||||||
|
which this hook spec does not apply.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
excludedResources:
|
||||||
|
description: ExcludedResources specifies the resources to
|
||||||
|
which this hook spec does not apply.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
includedNamespaces:
|
||||||
|
description: IncludedNamespaces specifies the namespaces to
|
||||||
|
which this hook spec applies. If empty, it applies to all
|
||||||
|
namespaces.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
includedResources:
|
||||||
|
description: IncludedResources specifies the resources to
|
||||||
|
which this hook spec applies. If empty, it applies to all
|
||||||
|
resources.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
labelSelector:
|
||||||
|
description: LabelSelector, if specified, filters the resources
|
||||||
|
to which this hook spec applies.
|
||||||
|
properties:
|
||||||
|
matchExpressions:
|
||||||
|
description: matchExpressions is a list of label selector
|
||||||
|
requirements. The requirements are ANDed.
|
||||||
|
items:
|
||||||
|
description: A label selector requirement is a selector
|
||||||
|
that contains values, a key, and an operator that
|
||||||
|
relates the key and values.
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: key is the label key that the selector
|
||||||
|
applies to.
|
||||||
|
type: string
|
||||||
|
operator:
|
||||||
|
description: operator represents a key's relationship
|
||||||
|
to a set of values. Valid operators are In, NotIn,
|
||||||
|
Exists and DoesNotExist.
|
||||||
|
type: string
|
||||||
|
values:
|
||||||
|
description: values is an array of string values.
|
||||||
|
If the operator is In or NotIn, the values array
|
||||||
|
must be non-empty. If the operator is Exists or
|
||||||
|
DoesNotExist, the values array must be empty.
|
||||||
|
This array is replaced during a strategic merge
|
||||||
|
patch.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
- operator
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
matchLabels:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: matchLabels is a map of {key,value} pairs.
|
||||||
|
A single {key,value} in the matchLabels map is equivalent
|
||||||
|
to an element of matchExpressions, whose key field is
|
||||||
|
"key", the operator is "In", and the values array contains
|
||||||
|
only "value". The requirements are ANDed.
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
name:
|
||||||
|
description: Name is the name of this hook.
|
||||||
|
type: string
|
||||||
|
post:
|
||||||
|
description: PostHooks is a list of BackupResourceHooks to
|
||||||
|
execute after storing the item in the backup. These are
|
||||||
|
executed after all "additional items" from item actions
|
||||||
|
are processed.
|
||||||
|
items:
|
||||||
|
description: BackupResourceHook defines a hook for a resource.
|
||||||
|
properties:
|
||||||
|
exec:
|
||||||
|
description: Exec defines an exec hook.
|
||||||
|
properties:
|
||||||
|
command:
|
||||||
|
description: Command is the command and arguments
|
||||||
|
to execute.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
container:
|
||||||
|
description: Container is the container in the pod
|
||||||
|
where the command should be executed. If not specified,
|
||||||
|
the pod's first container is used.
|
||||||
|
type: string
|
||||||
|
onError:
|
||||||
|
description: OnError specifies how Velero should
|
||||||
|
behave if it encounters an error executing this
|
||||||
|
hook.
|
||||||
|
type: string
|
||||||
|
timeout:
|
||||||
|
description: Timeout defines the maximum amount
|
||||||
|
of time Velero should wait for the hook to complete
|
||||||
|
before considering the execution a failure.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- command
|
||||||
|
- container
|
||||||
|
- onError
|
||||||
|
- timeout
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- exec
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
pre:
|
||||||
|
description: PreHooks is a list of BackupResourceHooks to
|
||||||
|
execute prior to storing the item in the backup. These are
|
||||||
|
executed before any "additional items" from item actions
|
||||||
|
are processed.
|
||||||
|
items:
|
||||||
|
description: BackupResourceHook defines a hook for a resource.
|
||||||
|
properties:
|
||||||
|
exec:
|
||||||
|
description: Exec defines an exec hook.
|
||||||
|
properties:
|
||||||
|
command:
|
||||||
|
description: Command is the command and arguments
|
||||||
|
to execute.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
container:
|
||||||
|
description: Container is the container in the pod
|
||||||
|
where the command should be executed. If not specified,
|
||||||
|
the pod's first container is used.
|
||||||
|
type: string
|
||||||
|
onError:
|
||||||
|
description: OnError specifies how Velero should
|
||||||
|
behave if it encounters an error executing this
|
||||||
|
hook.
|
||||||
|
type: string
|
||||||
|
timeout:
|
||||||
|
description: Timeout defines the maximum amount
|
||||||
|
of time Velero should wait for the hook to complete
|
||||||
|
before considering the execution a failure.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- command
|
||||||
|
- container
|
||||||
|
- onError
|
||||||
|
- timeout
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- exec
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- excludedNamespaces
|
||||||
|
- excludedResources
|
||||||
|
- includedNamespaces
|
||||||
|
- includedResources
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- resources
|
||||||
|
type: object
|
||||||
|
includeClusterResources:
|
||||||
|
description: IncludeClusterResources specifies whether cluster-scoped
|
||||||
|
resources should be included for consideration in the backup.
|
||||||
|
type: boolean
|
||||||
|
includedNamespaces:
|
||||||
|
description: IncludedNamespaces is a slice of namespace names to include
|
||||||
|
objects from. If empty, all namespaces are included.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
includedResources:
|
||||||
|
description: IncludedResources is a slice of resource names to include
|
||||||
|
in the backup. If empty, all resources are included.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
labelSelector:
|
||||||
|
description: LabelSelector is a metav1.LabelSelector to filter with
|
||||||
|
when adding individual objects to the backup. If empty or nil, all
|
||||||
|
objects are included. Optional.
|
||||||
|
properties:
|
||||||
|
matchExpressions:
|
||||||
|
description: matchExpressions is a list of label selector requirements.
|
||||||
|
The requirements are ANDed.
|
||||||
|
items:
|
||||||
|
description: A label selector requirement is a selector that contains
|
||||||
|
values, a key, and an operator that relates the key and values.
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: key is the label key that the selector applies
|
||||||
|
to.
|
||||||
|
type: string
|
||||||
|
operator:
|
||||||
|
description: operator represents a key's relationship to a
|
||||||
|
set of values. Valid operators are In, NotIn, Exists and
|
||||||
|
DoesNotExist.
|
||||||
|
type: string
|
||||||
|
values:
|
||||||
|
description: values is an array of string values. If the operator
|
||||||
|
is In or NotIn, the values array must be non-empty. If the
|
||||||
|
operator is Exists or DoesNotExist, the values array must
|
||||||
|
be empty. This array is replaced during a strategic merge
|
||||||
|
patch.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
- operator
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
matchLabels:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: matchLabels is a map of {key,value} pairs. A single
|
||||||
|
{key,value} in the matchLabels map is equivalent to an element
|
||||||
|
of matchExpressions, whose key field is "key", the operator is
|
||||||
|
"In", and the values array contains only "value". The requirements
|
||||||
|
are ANDed.
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
snapshotVolumes:
|
||||||
|
description: SnapshotVolumes specifies whether to take cloud snapshots
|
||||||
|
of any PV's referenced in the set of objects included in the Backup.
|
||||||
|
type: boolean
|
||||||
|
storageLocation:
|
||||||
|
description: StorageLocation is a string containing the name of a BackupStorageLocation
|
||||||
|
where the backup should be stored.
|
||||||
|
type: string
|
||||||
|
ttl:
|
||||||
|
description: TTL is a time.Duration-parseable string describing how
|
||||||
|
long the Backup should be retained for.
|
||||||
|
type: string
|
||||||
|
volumeSnapshotLocations:
|
||||||
|
description: VolumeSnapshotLocations is a list containing names of VolumeSnapshotLocations
|
||||||
|
associated with this backup.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- excludedNamespaces
|
||||||
|
- excludedResources
|
||||||
|
- hooks
|
||||||
|
- includeClusterResources
|
||||||
|
- includedNamespaces
|
||||||
|
- includedResources
|
||||||
|
- labelSelector
|
||||||
|
- storageLocation
|
||||||
|
- ttl
|
||||||
|
- volumeSnapshotLocations
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: BackupStatus captures the current status of a Velero backup.
|
||||||
|
properties:
|
||||||
|
completionTimestamp:
|
||||||
|
description: CompletionTimestamp records the time a backup was completed.
|
||||||
|
Completion time is recorded even on failed backups. Completion time
|
||||||
|
is recorded before uploading the backup object. The server's time
|
||||||
|
is used for CompletionTimestamps
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
errors:
|
||||||
|
description: Errors is a count of all error messages that were generated
|
||||||
|
during execution of the backup. The actual errors are in the backup's
|
||||||
|
log file in object storage.
|
||||||
|
type: integer
|
||||||
|
expiration:
|
||||||
|
description: Expiration is when this Backup is eligible for garbage-collection.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
phase:
|
||||||
|
description: Phase is the current state of the Backup.
|
||||||
|
type: string
|
||||||
|
startTimestamp:
|
||||||
|
description: StartTimestamp records the time a backup was started. Separate
|
||||||
|
from CreationTimestamp, since that value changes on restores. The
|
||||||
|
server's time is used for StartTimestamps
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
validationErrors:
|
||||||
|
description: ValidationErrors is a slice of all validation errors (if
|
||||||
|
applicable).
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
version:
|
||||||
|
description: Version is the backup format version.
|
||||||
|
type: integer
|
||||||
|
volumeSnapshotsAttempted:
|
||||||
|
description: VolumeSnapshotsAttempted is the total number of attempted
|
||||||
|
volume snapshots for this backup.
|
||||||
|
type: integer
|
||||||
|
volumeSnapshotsCompleted:
|
||||||
|
description: VolumeSnapshotsCompleted is the total number of successfully
|
||||||
|
completed volume snapshots for this backup.
|
||||||
|
type: integer
|
||||||
|
warnings:
|
||||||
|
description: Warnings is a count of all warning messages that were generated
|
||||||
|
during execution of the backup. The actual warnings are in the backup's
|
||||||
|
log file in object storage.
|
||||||
|
type: integer
|
||||||
|
required:
|
||||||
|
- completionTimestamp
|
||||||
|
- errors
|
||||||
|
- expiration
|
||||||
|
- phase
|
||||||
|
- startTimestamp
|
||||||
|
- validationErrors
|
||||||
|
- version
|
||||||
|
- volumeSnapshotsAttempted
|
||||||
|
- volumeSnapshotsCompleted
|
||||||
|
- warnings
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- metadata
|
||||||
|
- spec
|
||||||
|
type: object
|
||||||
|
version: v1
|
||||||
|
versions:
|
||||||
|
- name: v1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
status:
|
||||||
|
acceptedNames:
|
||||||
|
kind: ""
|
||||||
|
plural: ""
|
||||||
|
conditions: []
|
||||||
|
storedVersions: []
|
|
@ -0,0 +1,106 @@
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: backupstoragelocations.velero.io
|
||||||
|
spec:
|
||||||
|
group: velero.io
|
||||||
|
names:
|
||||||
|
kind: BackupStorageLocation
|
||||||
|
listKind: BackupStorageLocationList
|
||||||
|
plural: backupstoragelocations
|
||||||
|
singular: backupstoragelocation
|
||||||
|
scope: ""
|
||||||
|
validation:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: BackupStorageLocation is a location where Velero stores backup
|
||||||
|
objects.
|
||||||
|
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/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/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: BackupStorageLocationSpec defines the specification for a Velero
|
||||||
|
BackupStorageLocation.
|
||||||
|
properties:
|
||||||
|
accessMode:
|
||||||
|
description: AccessMode defines the permissions for the backup storage
|
||||||
|
location.
|
||||||
|
type: string
|
||||||
|
config:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: Config is for provider-specific configuration fields.
|
||||||
|
type: object
|
||||||
|
objectStorage:
|
||||||
|
description: ObjectStorageLocation specifies the settings necessary
|
||||||
|
to connect to a provider's object storage.
|
||||||
|
properties:
|
||||||
|
bucket:
|
||||||
|
description: Bucket is the bucket to use for object storage.
|
||||||
|
type: string
|
||||||
|
prefix:
|
||||||
|
description: Prefix is the path inside a bucket to use for Velero
|
||||||
|
storage. Optional.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- bucket
|
||||||
|
- prefix
|
||||||
|
type: object
|
||||||
|
provider:
|
||||||
|
description: Provider is the provider of the backup storage.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- config
|
||||||
|
- provider
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: BackupStorageLocationStatus describes the current status of
|
||||||
|
a Velero BackupStorageLocation.
|
||||||
|
properties:
|
||||||
|
accessMode:
|
||||||
|
description: "AccessMode is an unused field. \n Deprecated: there is
|
||||||
|
now an AccessMode field on the Spec and this field will be removed
|
||||||
|
entirely as of v2.0."
|
||||||
|
type: string
|
||||||
|
lastSyncedRevision:
|
||||||
|
description: UID is a type that holds unique ID values, including UUIDs. Because
|
||||||
|
we don't ONLY use UUIDs, this is an alias to string. Being a type
|
||||||
|
captures intent and helps make sure that UIDs and names do not get
|
||||||
|
conflated.
|
||||||
|
type: string
|
||||||
|
lastSyncedTime:
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
phase:
|
||||||
|
description: BackupStorageLocationPhase is the lifecyle phase of a Velero
|
||||||
|
BackupStorageLocation.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- metadata
|
||||||
|
- spec
|
||||||
|
- status
|
||||||
|
type: object
|
||||||
|
version: v1
|
||||||
|
versions:
|
||||||
|
- name: v1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
status:
|
||||||
|
acceptedNames:
|
||||||
|
kind: ""
|
||||||
|
plural: ""
|
||||||
|
conditions: []
|
||||||
|
storedVersions: []
|
|
@ -0,0 +1,71 @@
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: deletebackuprequests.velero.io
|
||||||
|
spec:
|
||||||
|
group: velero.io
|
||||||
|
names:
|
||||||
|
kind: DeleteBackupRequest
|
||||||
|
listKind: DeleteBackupRequestList
|
||||||
|
plural: deletebackuprequests
|
||||||
|
singular: deletebackuprequest
|
||||||
|
scope: ""
|
||||||
|
validation:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: DeleteBackupRequest is a request to delete one or more backups.
|
||||||
|
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/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/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: DeleteBackupRequestSpec is the specification for which backups
|
||||||
|
to delete.
|
||||||
|
properties:
|
||||||
|
backupName:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- backupName
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: DeleteBackupRequestStatus is the current status of a DeleteBackupRequest.
|
||||||
|
properties:
|
||||||
|
errors:
|
||||||
|
description: Errors contains any errors that were encountered during
|
||||||
|
the deletion process.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
phase:
|
||||||
|
description: Phase is the current state of the DeleteBackupRequest.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- errors
|
||||||
|
- phase
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- metadata
|
||||||
|
- spec
|
||||||
|
type: object
|
||||||
|
version: v1
|
||||||
|
versions:
|
||||||
|
- name: v1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
status:
|
||||||
|
acceptedNames:
|
||||||
|
kind: ""
|
||||||
|
plural: ""
|
||||||
|
conditions: []
|
||||||
|
storedVersions: []
|
|
@ -0,0 +1,87 @@
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: downloadrequests.velero.io
|
||||||
|
spec:
|
||||||
|
group: velero.io
|
||||||
|
names:
|
||||||
|
kind: DownloadRequest
|
||||||
|
listKind: DownloadRequestList
|
||||||
|
plural: downloadrequests
|
||||||
|
singular: downloadrequest
|
||||||
|
scope: ""
|
||||||
|
validation:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: DownloadRequest is a request to download an artifact from backup
|
||||||
|
object storage, such as a backup log file.
|
||||||
|
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/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/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: DownloadRequestSpec is the specification for a download request.
|
||||||
|
properties:
|
||||||
|
target:
|
||||||
|
description: Target is what to download (e.g. logs for a backup).
|
||||||
|
properties:
|
||||||
|
kind:
|
||||||
|
description: Kind is the type of file to download.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: Name is the name of the kubernetes resource with which
|
||||||
|
the file is associated.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- kind
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- target
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: DownloadRequestStatus is the current status of a DownloadRequest.
|
||||||
|
properties:
|
||||||
|
downloadURL:
|
||||||
|
description: DownloadURL contains the pre-signed URL for the target
|
||||||
|
file.
|
||||||
|
type: string
|
||||||
|
expiration:
|
||||||
|
description: Expiration is when this DownloadRequest expires and can
|
||||||
|
be deleted by the system.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
phase:
|
||||||
|
description: Phase is the current state of the DownloadRequest.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- downloadURL
|
||||||
|
- expiration
|
||||||
|
- phase
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- metadata
|
||||||
|
- spec
|
||||||
|
type: object
|
||||||
|
version: v1
|
||||||
|
versions:
|
||||||
|
- name: v1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
status:
|
||||||
|
acceptedNames:
|
||||||
|
kind: ""
|
||||||
|
plural: ""
|
||||||
|
conditions: []
|
||||||
|
storedVersions: []
|
|
@ -0,0 +1,167 @@
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: podvolumebackups.velero.io
|
||||||
|
spec:
|
||||||
|
group: velero.io
|
||||||
|
names:
|
||||||
|
kind: PodVolumeBackup
|
||||||
|
listKind: PodVolumeBackupList
|
||||||
|
plural: podvolumebackups
|
||||||
|
singular: podvolumebackup
|
||||||
|
scope: ""
|
||||||
|
validation:
|
||||||
|
openAPIV3Schema:
|
||||||
|
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/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/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: PodVolumeBackupSpec is the specification for a PodVolumeBackup.
|
||||||
|
properties:
|
||||||
|
backupStorageLocation:
|
||||||
|
description: BackupStorageLocation is the name of the backup storage
|
||||||
|
location where the restic repository is stored.
|
||||||
|
type: string
|
||||||
|
node:
|
||||||
|
description: Node is the name of the node that the Pod is running on.
|
||||||
|
type: string
|
||||||
|
pod:
|
||||||
|
description: Pod is a reference to the pod containing the volume to
|
||||||
|
be backed up.
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: API version of the referent.
|
||||||
|
type: string
|
||||||
|
fieldPath:
|
||||||
|
description: 'If referring to a piece of an object instead of an
|
||||||
|
entire object, this string should contain a valid JSON/Go field
|
||||||
|
access statement, such as desiredState.manifest.containers[2].
|
||||||
|
For example, if the object reference is to a container within
|
||||||
|
a pod, this would take on a value like: "spec.containers{name}"
|
||||||
|
(where "name" refers to the name of the container that triggered
|
||||||
|
the event) or if no container name is specified "spec.containers[2]"
|
||||||
|
(container with index 2 in this pod). This syntax is chosen only
|
||||||
|
to have some well-defined way of referencing a part of an object.
|
||||||
|
TODO: this design is not final and this field is subject to change
|
||||||
|
in the future.'
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
|
||||||
|
type: string
|
||||||
|
namespace:
|
||||||
|
description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
|
||||||
|
type: string
|
||||||
|
resourceVersion:
|
||||||
|
description: 'Specific resourceVersion to which this reference is
|
||||||
|
made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency'
|
||||||
|
type: string
|
||||||
|
uid:
|
||||||
|
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
repoIdentifier:
|
||||||
|
description: RepoIdentifier is the restic repository identifier.
|
||||||
|
type: string
|
||||||
|
tags:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: Tags are a map of key-value pairs that should be applied
|
||||||
|
to the volume backup as tags.
|
||||||
|
type: object
|
||||||
|
volume:
|
||||||
|
description: Volume is the name of the volume within the Pod to be backed
|
||||||
|
up.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- backupStorageLocation
|
||||||
|
- node
|
||||||
|
- pod
|
||||||
|
- repoIdentifier
|
||||||
|
- tags
|
||||||
|
- volume
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: PodVolumeBackupStatus is the current status of a PodVolumeBackup.
|
||||||
|
properties:
|
||||||
|
completionTimestamp:
|
||||||
|
description: CompletionTimestamp records the time a backup was completed.
|
||||||
|
Completion time is recorded even on failed backups. Completion time
|
||||||
|
is recorded before uploading the backup object. The server's time
|
||||||
|
is used for CompletionTimestamps
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: Message is a message about the pod volume backup's status.
|
||||||
|
type: string
|
||||||
|
path:
|
||||||
|
description: Path is the full path within the controller pod being backed
|
||||||
|
up.
|
||||||
|
type: string
|
||||||
|
phase:
|
||||||
|
description: Phase is the current state of the PodVolumeBackup.
|
||||||
|
type: string
|
||||||
|
progress:
|
||||||
|
description: Progress holds the total number of bytes of the volume
|
||||||
|
and the current number of backed up bytes. This can be used to display
|
||||||
|
progress information about the backup operation.
|
||||||
|
properties:
|
||||||
|
bytesDone:
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
totalBytes:
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
required:
|
||||||
|
- bytesDone
|
||||||
|
- totalBytes
|
||||||
|
type: object
|
||||||
|
snapshotID:
|
||||||
|
description: SnapshotID is the identifier for the snapshot of the pod
|
||||||
|
volume.
|
||||||
|
type: string
|
||||||
|
startTimestamp:
|
||||||
|
description: StartTimestamp records the time a backup was started. Separate
|
||||||
|
from CreationTimestamp, since that value changes on restores. The
|
||||||
|
server's time is used for StartTimestamps
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- completionTimestamp
|
||||||
|
- message
|
||||||
|
- path
|
||||||
|
- phase
|
||||||
|
- progress
|
||||||
|
- snapshotID
|
||||||
|
- startTimestamp
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- metadata
|
||||||
|
- spec
|
||||||
|
type: object
|
||||||
|
version: v1
|
||||||
|
versions:
|
||||||
|
- name: v1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
status:
|
||||||
|
acceptedNames:
|
||||||
|
kind: ""
|
||||||
|
plural: ""
|
||||||
|
conditions: []
|
||||||
|
storedVersions: []
|
|
@ -0,0 +1,131 @@
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: podvolumerestores.velero.io
|
||||||
|
spec:
|
||||||
|
group: velero.io
|
||||||
|
names:
|
||||||
|
kind: PodVolumeRestore
|
||||||
|
listKind: PodVolumeRestoreList
|
||||||
|
plural: podvolumerestores
|
||||||
|
singular: podvolumerestore
|
||||||
|
scope: ""
|
||||||
|
validation:
|
||||||
|
openAPIV3Schema:
|
||||||
|
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/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/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: PodVolumeRestoreSpec is the specification for a PodVolumeRestore.
|
||||||
|
properties:
|
||||||
|
backupStorageLocation:
|
||||||
|
description: BackupStorageLocation is the name of the backup storage
|
||||||
|
location where the restic repository is stored.
|
||||||
|
type: string
|
||||||
|
pod:
|
||||||
|
description: Pod is a reference to the pod containing the volume to
|
||||||
|
be restored.
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: API version of the referent.
|
||||||
|
type: string
|
||||||
|
fieldPath:
|
||||||
|
description: 'If referring to a piece of an object instead of an
|
||||||
|
entire object, this string should contain a valid JSON/Go field
|
||||||
|
access statement, such as desiredState.manifest.containers[2].
|
||||||
|
For example, if the object reference is to a container within
|
||||||
|
a pod, this would take on a value like: "spec.containers{name}"
|
||||||
|
(where "name" refers to the name of the container that triggered
|
||||||
|
the event) or if no container name is specified "spec.containers[2]"
|
||||||
|
(container with index 2 in this pod). This syntax is chosen only
|
||||||
|
to have some well-defined way of referencing a part of an object.
|
||||||
|
TODO: this design is not final and this field is subject to change
|
||||||
|
in the future.'
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
|
||||||
|
type: string
|
||||||
|
namespace:
|
||||||
|
description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
|
||||||
|
type: string
|
||||||
|
resourceVersion:
|
||||||
|
description: 'Specific resourceVersion to which this reference is
|
||||||
|
made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency'
|
||||||
|
type: string
|
||||||
|
uid:
|
||||||
|
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
repoIdentifier:
|
||||||
|
description: RepoIdentifier is the restic repository identifier.
|
||||||
|
type: string
|
||||||
|
snapshotID:
|
||||||
|
description: SnapshotID is the ID of the volume snapshot to be restored.
|
||||||
|
type: string
|
||||||
|
volume:
|
||||||
|
description: Volume is the name of the volume within the Pod to be restored.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- backupStorageLocation
|
||||||
|
- pod
|
||||||
|
- repoIdentifier
|
||||||
|
- snapshotID
|
||||||
|
- volume
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: PodVolumeRestoreStatus is the current status of a PodVolumeRestore.
|
||||||
|
properties:
|
||||||
|
completionTimestamp:
|
||||||
|
description: CompletionTimestamp records the time a restore was completed.
|
||||||
|
Completion time is recorded even on failed restores. The server's
|
||||||
|
time is used for CompletionTimestamps
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: Message is a message about the pod volume restore's status.
|
||||||
|
type: string
|
||||||
|
phase:
|
||||||
|
description: Phase is the current state of the PodVolumeRestore.
|
||||||
|
type: string
|
||||||
|
startTimestamp:
|
||||||
|
description: StartTimestamp records the time a restore was started.
|
||||||
|
The server's time is used for StartTimestamps
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- completionTimestamp
|
||||||
|
- message
|
||||||
|
- phase
|
||||||
|
- startTimestamp
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- metadata
|
||||||
|
- spec
|
||||||
|
type: object
|
||||||
|
version: v1
|
||||||
|
versions:
|
||||||
|
- name: v1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
status:
|
||||||
|
acceptedNames:
|
||||||
|
kind: ""
|
||||||
|
plural: ""
|
||||||
|
conditions: []
|
||||||
|
storedVersions: []
|
|
@ -0,0 +1,88 @@
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: resticrepositories.velero.io
|
||||||
|
spec:
|
||||||
|
group: velero.io
|
||||||
|
names:
|
||||||
|
kind: ResticRepository
|
||||||
|
listKind: ResticRepositoryList
|
||||||
|
plural: resticrepositories
|
||||||
|
singular: resticrepository
|
||||||
|
scope: ""
|
||||||
|
validation:
|
||||||
|
openAPIV3Schema:
|
||||||
|
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/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/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: ResticRepositorySpec is the specification for a ResticRepository.
|
||||||
|
properties:
|
||||||
|
backupStorageLocation:
|
||||||
|
description: BackupStorageLocation is the name of the BackupStorageLocation
|
||||||
|
that should contain this repository.
|
||||||
|
type: string
|
||||||
|
maintenanceFrequency:
|
||||||
|
description: MaintenanceFrequency is how often maintenance should be
|
||||||
|
run.
|
||||||
|
type: string
|
||||||
|
resticIdentifier:
|
||||||
|
description: ResticIdentifier is the full restic-compatible string for
|
||||||
|
identifying this repository.
|
||||||
|
type: string
|
||||||
|
volumeNamespace:
|
||||||
|
description: VolumeNamespace is the namespace this restic repository
|
||||||
|
contains pod volume backups for.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- backupStorageLocation
|
||||||
|
- maintenanceFrequency
|
||||||
|
- resticIdentifier
|
||||||
|
- volumeNamespace
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: ResticRepositoryStatus is the current status of a ResticRepository.
|
||||||
|
properties:
|
||||||
|
lastMaintenanceTime:
|
||||||
|
description: LastMaintenanceTime is the last time maintenance was run.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: Message is a message about the current status of the ResticRepository.
|
||||||
|
type: string
|
||||||
|
phase:
|
||||||
|
description: Phase is the current state of the ResticRepository.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- lastMaintenanceTime
|
||||||
|
- message
|
||||||
|
- phase
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- metadata
|
||||||
|
- spec
|
||||||
|
type: object
|
||||||
|
version: v1
|
||||||
|
versions:
|
||||||
|
- name: v1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
status:
|
||||||
|
acceptedNames:
|
||||||
|
kind: ""
|
||||||
|
plural: ""
|
||||||
|
conditions: []
|
||||||
|
storedVersions: []
|
|
@ -0,0 +1,185 @@
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: restores.velero.io
|
||||||
|
spec:
|
||||||
|
group: velero.io
|
||||||
|
names:
|
||||||
|
kind: Restore
|
||||||
|
listKind: RestoreList
|
||||||
|
plural: restores
|
||||||
|
singular: restore
|
||||||
|
scope: ""
|
||||||
|
validation:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: Restore is a Velero resource that represents the application of
|
||||||
|
resources from a Velero backup to a target Kubernetes cluster.
|
||||||
|
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/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/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: RestoreSpec defines the specification for a Velero restore.
|
||||||
|
properties:
|
||||||
|
backupName:
|
||||||
|
description: BackupName is the unique name of the Velero backup to restore
|
||||||
|
from.
|
||||||
|
type: string
|
||||||
|
excludedNamespaces:
|
||||||
|
description: ExcludedNamespaces contains a list of namespaces that are
|
||||||
|
not included in the restore.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
excludedResources:
|
||||||
|
description: ExcludedResources is a slice of resource names that are
|
||||||
|
not included in the restore.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
includeClusterResources:
|
||||||
|
description: IncludeClusterResources specifies whether cluster-scoped
|
||||||
|
resources should be included for consideration in the restore. If
|
||||||
|
null, defaults to true.
|
||||||
|
type: boolean
|
||||||
|
includedNamespaces:
|
||||||
|
description: IncludedNamespaces is a slice of namespace names to include
|
||||||
|
objects from. If empty, all namespaces are included.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
includedResources:
|
||||||
|
description: IncludedResources is a slice of resource names to include
|
||||||
|
in the restore. If empty, all resources in the backup are included.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
labelSelector:
|
||||||
|
description: LabelSelector is a metav1.LabelSelector to filter with
|
||||||
|
when restoring individual objects from the backup. If empty or nil,
|
||||||
|
all objects are included. Optional.
|
||||||
|
properties:
|
||||||
|
matchExpressions:
|
||||||
|
description: matchExpressions is a list of label selector requirements.
|
||||||
|
The requirements are ANDed.
|
||||||
|
items:
|
||||||
|
description: A label selector requirement is a selector that contains
|
||||||
|
values, a key, and an operator that relates the key and values.
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: key is the label key that the selector applies
|
||||||
|
to.
|
||||||
|
type: string
|
||||||
|
operator:
|
||||||
|
description: operator represents a key's relationship to a
|
||||||
|
set of values. Valid operators are In, NotIn, Exists and
|
||||||
|
DoesNotExist.
|
||||||
|
type: string
|
||||||
|
values:
|
||||||
|
description: values is an array of string values. If the operator
|
||||||
|
is In or NotIn, the values array must be non-empty. If the
|
||||||
|
operator is Exists or DoesNotExist, the values array must
|
||||||
|
be empty. This array is replaced during a strategic merge
|
||||||
|
patch.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
- operator
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
matchLabels:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: matchLabels is a map of {key,value} pairs. A single
|
||||||
|
{key,value} in the matchLabels map is equivalent to an element
|
||||||
|
of matchExpressions, whose key field is "key", the operator is
|
||||||
|
"In", and the values array contains only "value". The requirements
|
||||||
|
are ANDed.
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
namespaceMapping:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: NamespaceMapping is a map of source namespace names to
|
||||||
|
target namespace names to restore into. Any source namespaces not
|
||||||
|
included in the map will be restored into namespaces of the same name.
|
||||||
|
type: object
|
||||||
|
restorePVs:
|
||||||
|
description: RestorePVs specifies whether to restore all included PVs
|
||||||
|
from snapshot (via the cloudprovider).
|
||||||
|
type: boolean
|
||||||
|
scheduleName:
|
||||||
|
description: ScheduleName is the unique name of the Velero schedule
|
||||||
|
to restore from. If specified, and BackupName is empty, Velero will
|
||||||
|
restore from the most recent successful backup created from this schedule.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- backupName
|
||||||
|
- excludedNamespaces
|
||||||
|
- excludedResources
|
||||||
|
- includedNamespaces
|
||||||
|
- includedResources
|
||||||
|
- namespaceMapping
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: RestoreStatus captures the current status of a Velero restore
|
||||||
|
properties:
|
||||||
|
errors:
|
||||||
|
description: Errors is a count of all error messages that were generated
|
||||||
|
during execution of the restore. The actual errors are stored in object
|
||||||
|
storage.
|
||||||
|
type: integer
|
||||||
|
failureReason:
|
||||||
|
description: FailureReason is an error that caused the entire restore
|
||||||
|
to fail.
|
||||||
|
type: string
|
||||||
|
phase:
|
||||||
|
description: Phase is the current state of the Restore
|
||||||
|
type: string
|
||||||
|
validationErrors:
|
||||||
|
description: ValidationErrors is a slice of all validation errors (if
|
||||||
|
applicable)
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
warnings:
|
||||||
|
description: Warnings is a count of all warning messages that were generated
|
||||||
|
during execution of the restore. The actual warnings are stored in
|
||||||
|
object storage.
|
||||||
|
type: integer
|
||||||
|
required:
|
||||||
|
- errors
|
||||||
|
- failureReason
|
||||||
|
- phase
|
||||||
|
- validationErrors
|
||||||
|
- warnings
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- metadata
|
||||||
|
- spec
|
||||||
|
type: object
|
||||||
|
version: v1
|
||||||
|
versions:
|
||||||
|
- name: v1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
status:
|
||||||
|
acceptedNames:
|
||||||
|
kind: ""
|
||||||
|
plural: ""
|
||||||
|
conditions: []
|
||||||
|
storedVersions: []
|
|
@ -0,0 +1,376 @@
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: schedules.velero.io
|
||||||
|
spec:
|
||||||
|
group: velero.io
|
||||||
|
names:
|
||||||
|
kind: Schedule
|
||||||
|
listKind: ScheduleList
|
||||||
|
plural: schedules
|
||||||
|
singular: schedule
|
||||||
|
scope: ""
|
||||||
|
validation:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: Schedule is a Velero resource that represents a pre-scheduled or
|
||||||
|
periodic Backup that should be run.
|
||||||
|
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/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/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: ScheduleSpec defines the specification for a Velero schedule
|
||||||
|
properties:
|
||||||
|
schedule:
|
||||||
|
description: Schedule is a Cron expression defining when to run the
|
||||||
|
Backup.
|
||||||
|
type: string
|
||||||
|
template:
|
||||||
|
description: Template is the definition of the Backup to be run on the
|
||||||
|
provided schedule
|
||||||
|
properties:
|
||||||
|
excludedNamespaces:
|
||||||
|
description: ExcludedNamespaces contains a list of namespaces that
|
||||||
|
are not included in the backup.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
excludedResources:
|
||||||
|
description: ExcludedResources is a slice of resource names that
|
||||||
|
are not included in the backup.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
hooks:
|
||||||
|
description: Hooks represent custom behaviors that should be executed
|
||||||
|
at different phases of the backup.
|
||||||
|
properties:
|
||||||
|
resources:
|
||||||
|
description: Resources are hooks that should be executed when
|
||||||
|
backing up individual instances of a resource.
|
||||||
|
items:
|
||||||
|
description: BackupResourceHookSpec defines one or more BackupResourceHooks
|
||||||
|
that should be executed based on the rules defined for namespaces,
|
||||||
|
resources, and label selector.
|
||||||
|
properties:
|
||||||
|
excludedNamespaces:
|
||||||
|
description: ExcludedNamespaces specifies the namespaces
|
||||||
|
to which this hook spec does not apply.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
excludedResources:
|
||||||
|
description: ExcludedResources specifies the resources
|
||||||
|
to which this hook spec does not apply.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
includedNamespaces:
|
||||||
|
description: IncludedNamespaces specifies the namespaces
|
||||||
|
to which this hook spec applies. If empty, it applies
|
||||||
|
to all namespaces.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
includedResources:
|
||||||
|
description: IncludedResources specifies the resources
|
||||||
|
to which this hook spec applies. If empty, it applies
|
||||||
|
to all resources.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
labelSelector:
|
||||||
|
description: LabelSelector, if specified, filters the
|
||||||
|
resources to which this hook spec applies.
|
||||||
|
properties:
|
||||||
|
matchExpressions:
|
||||||
|
description: matchExpressions is a list of label selector
|
||||||
|
requirements. The requirements are ANDed.
|
||||||
|
items:
|
||||||
|
description: A label selector requirement is a selector
|
||||||
|
that contains values, a key, and an operator that
|
||||||
|
relates the key and values.
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: key is the label key that the selector
|
||||||
|
applies to.
|
||||||
|
type: string
|
||||||
|
operator:
|
||||||
|
description: operator represents a key's relationship
|
||||||
|
to a set of values. Valid operators are In,
|
||||||
|
NotIn, Exists and DoesNotExist.
|
||||||
|
type: string
|
||||||
|
values:
|
||||||
|
description: values is an array of string values.
|
||||||
|
If the operator is In or NotIn, the values
|
||||||
|
array must be non-empty. If the operator is
|
||||||
|
Exists or DoesNotExist, the values array must
|
||||||
|
be empty. This array is replaced during a
|
||||||
|
strategic merge patch.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
- operator
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
matchLabels:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: matchLabels is a map of {key,value} pairs.
|
||||||
|
A single {key,value} in the matchLabels map is equivalent
|
||||||
|
to an element of matchExpressions, whose key field
|
||||||
|
is "key", the operator is "In", and the values array
|
||||||
|
contains only "value". The requirements are ANDed.
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
name:
|
||||||
|
description: Name is the name of this hook.
|
||||||
|
type: string
|
||||||
|
post:
|
||||||
|
description: PostHooks is a list of BackupResourceHooks
|
||||||
|
to execute after storing the item in the backup. These
|
||||||
|
are executed after all "additional items" from item
|
||||||
|
actions are processed.
|
||||||
|
items:
|
||||||
|
description: BackupResourceHook defines a hook for a
|
||||||
|
resource.
|
||||||
|
properties:
|
||||||
|
exec:
|
||||||
|
description: Exec defines an exec hook.
|
||||||
|
properties:
|
||||||
|
command:
|
||||||
|
description: Command is the command and arguments
|
||||||
|
to execute.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
container:
|
||||||
|
description: Container is the container in the
|
||||||
|
pod where the command should be executed.
|
||||||
|
If not specified, the pod's first container
|
||||||
|
is used.
|
||||||
|
type: string
|
||||||
|
onError:
|
||||||
|
description: OnError specifies how Velero should
|
||||||
|
behave if it encounters an error executing
|
||||||
|
this hook.
|
||||||
|
type: string
|
||||||
|
timeout:
|
||||||
|
description: Timeout defines the maximum amount
|
||||||
|
of time Velero should wait for the hook to
|
||||||
|
complete before considering the execution
|
||||||
|
a failure.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- command
|
||||||
|
- container
|
||||||
|
- onError
|
||||||
|
- timeout
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- exec
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
pre:
|
||||||
|
description: PreHooks is a list of BackupResourceHooks
|
||||||
|
to execute prior to storing the item in the backup.
|
||||||
|
These are executed before any "additional items" from
|
||||||
|
item actions are processed.
|
||||||
|
items:
|
||||||
|
description: BackupResourceHook defines a hook for a
|
||||||
|
resource.
|
||||||
|
properties:
|
||||||
|
exec:
|
||||||
|
description: Exec defines an exec hook.
|
||||||
|
properties:
|
||||||
|
command:
|
||||||
|
description: Command is the command and arguments
|
||||||
|
to execute.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
container:
|
||||||
|
description: Container is the container in the
|
||||||
|
pod where the command should be executed.
|
||||||
|
If not specified, the pod's first container
|
||||||
|
is used.
|
||||||
|
type: string
|
||||||
|
onError:
|
||||||
|
description: OnError specifies how Velero should
|
||||||
|
behave if it encounters an error executing
|
||||||
|
this hook.
|
||||||
|
type: string
|
||||||
|
timeout:
|
||||||
|
description: Timeout defines the maximum amount
|
||||||
|
of time Velero should wait for the hook to
|
||||||
|
complete before considering the execution
|
||||||
|
a failure.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- command
|
||||||
|
- container
|
||||||
|
- onError
|
||||||
|
- timeout
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- exec
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- excludedNamespaces
|
||||||
|
- excludedResources
|
||||||
|
- includedNamespaces
|
||||||
|
- includedResources
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- resources
|
||||||
|
type: object
|
||||||
|
includeClusterResources:
|
||||||
|
description: IncludeClusterResources specifies whether cluster-scoped
|
||||||
|
resources should be included for consideration in the backup.
|
||||||
|
type: boolean
|
||||||
|
includedNamespaces:
|
||||||
|
description: IncludedNamespaces is a slice of namespace names to
|
||||||
|
include objects from. If empty, all namespaces are included.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
includedResources:
|
||||||
|
description: IncludedResources is a slice of resource names to include
|
||||||
|
in the backup. If empty, all resources are included.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
labelSelector:
|
||||||
|
description: LabelSelector is a metav1.LabelSelector to filter with
|
||||||
|
when adding individual objects to the backup. If empty or nil,
|
||||||
|
all objects are included. Optional.
|
||||||
|
properties:
|
||||||
|
matchExpressions:
|
||||||
|
description: matchExpressions is a list of label selector requirements.
|
||||||
|
The requirements are ANDed.
|
||||||
|
items:
|
||||||
|
description: A label selector requirement is a selector that
|
||||||
|
contains values, a key, and an operator that relates the
|
||||||
|
key and values.
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
description: key is the label key that the selector applies
|
||||||
|
to.
|
||||||
|
type: string
|
||||||
|
operator:
|
||||||
|
description: operator represents a key's relationship
|
||||||
|
to a set of values. Valid operators are In, NotIn, Exists
|
||||||
|
and DoesNotExist.
|
||||||
|
type: string
|
||||||
|
values:
|
||||||
|
description: values is an array of string values. If the
|
||||||
|
operator is In or NotIn, the values array must be non-empty.
|
||||||
|
If the operator is Exists or DoesNotExist, the values
|
||||||
|
array must be empty. This array is replaced during a
|
||||||
|
strategic merge patch.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- key
|
||||||
|
- operator
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
matchLabels:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: matchLabels is a map of {key,value} pairs. A single
|
||||||
|
{key,value} in the matchLabels map is equivalent to an element
|
||||||
|
of matchExpressions, whose key field is "key", the operator
|
||||||
|
is "In", and the values array contains only "value". The requirements
|
||||||
|
are ANDed.
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
snapshotVolumes:
|
||||||
|
description: SnapshotVolumes specifies whether to take cloud snapshots
|
||||||
|
of any PV's referenced in the set of objects included in the Backup.
|
||||||
|
type: boolean
|
||||||
|
storageLocation:
|
||||||
|
description: StorageLocation is a string containing the name of
|
||||||
|
a BackupStorageLocation where the backup should be stored.
|
||||||
|
type: string
|
||||||
|
ttl:
|
||||||
|
description: TTL is a time.Duration-parseable string describing
|
||||||
|
how long the Backup should be retained for.
|
||||||
|
type: string
|
||||||
|
volumeSnapshotLocations:
|
||||||
|
description: VolumeSnapshotLocations is a list containing names
|
||||||
|
of VolumeSnapshotLocations associated with this backup.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- excludedNamespaces
|
||||||
|
- excludedResources
|
||||||
|
- hooks
|
||||||
|
- includeClusterResources
|
||||||
|
- includedNamespaces
|
||||||
|
- includedResources
|
||||||
|
- labelSelector
|
||||||
|
- storageLocation
|
||||||
|
- ttl
|
||||||
|
- volumeSnapshotLocations
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- schedule
|
||||||
|
- template
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: ScheduleStatus captures the current state of a Velero schedule
|
||||||
|
properties:
|
||||||
|
lastBackup:
|
||||||
|
description: LastBackup is the last time a Backup was run for this Schedule
|
||||||
|
schedule
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
phase:
|
||||||
|
description: Phase is the current phase of the Schedule
|
||||||
|
type: string
|
||||||
|
validationErrors:
|
||||||
|
description: ValidationErrors is a slice of all validation errors (if
|
||||||
|
applicable)
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- lastBackup
|
||||||
|
- phase
|
||||||
|
- validationErrors
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- metadata
|
||||||
|
- spec
|
||||||
|
type: object
|
||||||
|
version: v1
|
||||||
|
versions:
|
||||||
|
- name: v1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
status:
|
||||||
|
acceptedNames:
|
||||||
|
kind: ""
|
||||||
|
plural: ""
|
||||||
|
conditions: []
|
||||||
|
storedVersions: []
|
|
@ -0,0 +1,85 @@
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: serverstatusrequests.velero.io
|
||||||
|
spec:
|
||||||
|
group: velero.io
|
||||||
|
names:
|
||||||
|
kind: ServerStatusRequest
|
||||||
|
listKind: ServerStatusRequestList
|
||||||
|
plural: serverstatusrequests
|
||||||
|
singular: serverstatusrequest
|
||||||
|
scope: ""
|
||||||
|
validation:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: ServerStatusRequest is a request to access current status information
|
||||||
|
about the Velero server.
|
||||||
|
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/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/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: ServerStatusRequestSpec is the specification for a ServerStatusRequest.
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: ServerStatusRequestStatus is the current status of a ServerStatusRequest.
|
||||||
|
properties:
|
||||||
|
phase:
|
||||||
|
description: Phase is the current lifecycle phase of the ServerStatusRequest.
|
||||||
|
type: string
|
||||||
|
plugins:
|
||||||
|
description: Plugins list information about the plugins running on the
|
||||||
|
Velero server
|
||||||
|
items:
|
||||||
|
description: PluginInfo contains attributes of a Velero plugin
|
||||||
|
properties:
|
||||||
|
kind:
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- kind
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
processedTimestamp:
|
||||||
|
description: ProcessedTimestamp is when the ServerStatusRequest was
|
||||||
|
processed by the ServerStatusRequestController.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
serverVersion:
|
||||||
|
description: ServerVersion is the Velero server version.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- phase
|
||||||
|
- plugins
|
||||||
|
- processedTimestamp
|
||||||
|
- serverVersion
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- metadata
|
||||||
|
- spec
|
||||||
|
type: object
|
||||||
|
version: v1
|
||||||
|
versions:
|
||||||
|
- name: v1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
status:
|
||||||
|
acceptedNames:
|
||||||
|
kind: ""
|
||||||
|
plural: ""
|
||||||
|
conditions: []
|
||||||
|
storedVersions: []
|
|
@ -0,0 +1,73 @@
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
creationTimestamp: null
|
||||||
|
name: volumesnapshotlocations.velero.io
|
||||||
|
spec:
|
||||||
|
group: velero.io
|
||||||
|
names:
|
||||||
|
kind: VolumeSnapshotLocation
|
||||||
|
listKind: VolumeSnapshotLocationList
|
||||||
|
plural: volumesnapshotlocations
|
||||||
|
singular: volumesnapshotlocation
|
||||||
|
scope: ""
|
||||||
|
validation:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: VolumeSnapshotLocation is a location where Velero stores volume
|
||||||
|
snapshots.
|
||||||
|
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/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/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: VolumeSnapshotLocationSpec defines the specification for a
|
||||||
|
Velero VolumeSnapshotLocation.
|
||||||
|
properties:
|
||||||
|
config:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: Config is for provider-specific configuration fields.
|
||||||
|
type: object
|
||||||
|
provider:
|
||||||
|
description: Provider is the provider of the volume storage.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- config
|
||||||
|
- provider
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: VolumeSnapshotLocationStatus describes the current status of
|
||||||
|
a Velero VolumeSnapshotLocation.
|
||||||
|
properties:
|
||||||
|
phase:
|
||||||
|
description: VolumeSnapshotLocationPhase is the lifecyle phase of a
|
||||||
|
Velero VolumeSnapshotLocation.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- metadata
|
||||||
|
- spec
|
||||||
|
- status
|
||||||
|
type: object
|
||||||
|
version: v1
|
||||||
|
versions:
|
||||||
|
- name: v1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
status:
|
||||||
|
acceptedNames:
|
||||||
|
kind: ""
|
||||||
|
plural: ""
|
||||||
|
conditions: []
|
||||||
|
storedVersions: []
|
31
vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install/install.go
generated
vendored
Normal file
31
vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install/install.go
generated
vendored
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
/*
|
||||||
|
Copyright 2017 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package install
|
||||||
|
|
||||||
|
import (
|
||||||
|
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
|
||||||
|
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
|
||||||
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Install registers the API group and adds types to a scheme
|
||||||
|
func Install(scheme *runtime.Scheme) {
|
||||||
|
utilruntime.Must(apiextensions.AddToScheme(scheme))
|
||||||
|
utilruntime.Must(v1beta1.AddToScheme(scheme))
|
||||||
|
utilruntime.Must(scheme.SetVersionPriority(v1beta1.SchemeGroupVersion))
|
||||||
|
}
|
Loading…
Reference in New Issue