v1

package
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 2, 2017 License: Apache-2.0 Imports: 3 Imported by: 0

Documentation

Overview

Package v1 is the v1 version of the API. +groupName=ark.heptio.com

Index

Constants

View Source
const (
	// DefaultNamespace is the Kubernetes namespace that is used by default for
	// the Ark server and API objects.
	DefaultNamespace = "heptio-ark"

	// RestoreLabelKey is the label key that's applied to all resources that
	// are created during a restore. This is applied for ease of identification
	// of restored resources. The value will be the restore's name.
	RestoreLabelKey = "ark-restore"

	// ClusterScopedDir is the name of the directory containing cluster-scoped
	// resources within an Ark backup.
	ClusterScopedDir = "cluster"

	// NamespaceScopedDir is the name of the directory containing namespace-scoped
	// resource within an Ark backup.
	NamespaceScopedDir = "namespaces"
)
View Source
const GroupName = "ark.heptio.com"

GroupName is the group name for the Ark API

Variables

View Source
var (
	// SchemeBuilder collects the scheme builder functions for the Ark API
	SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)

	// AddToScheme applies the SchemeBuilder functions to a specified scheme
	AddToScheme = SchemeBuilder.AddToScheme
)
View Source
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"}

SchemeGroupVersion is the GroupVersion for the Ark API

Functions

func Resource

func Resource(resource string) schema.GroupResource

Resource gets an Ark GroupResource for a specified resource

Types

type AWSConfig

type AWSConfig struct {
	Region           string `json:"region"`
	AvailabilityZone string `json:"availabilityZone"`
	DisableSSL       bool   `json:"disableSSL"`
	S3ForcePathStyle bool   `json:"s3ForcePathStyle"`
	S3Url            string `json:"s3Url"`
}

AWSConfig is configuration information for connecting to AWS.

type AzureConfig

type AzureConfig struct {
	Location   string          `json:"location"`
	APITimeout metav1.Duration `json:"apiTimeout"`
}

AzureConfig is configuration information for connecting to Azure.

type Backup

type Backup struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata"`

	Spec   BackupSpec   `json:"spec"`
	Status BackupStatus `json:"status,omitempty"`
}

Backup is an Ark resource that respresents the capture of Kubernetes cluster state at a point in time (API objects and associated volume state).

type BackupList

type BackupList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`
	Items           []Backup `json:"items"`
}

BackupList is a list of Backups.

type BackupPhase

type BackupPhase string

BackupPhase is a string representation of the lifecycle phase of an Ark backup.

const (
	// BackupPhaseNew means the backup has been created but not
	// yet processed by the BackupController.
	BackupPhaseNew BackupPhase = "New"

	// BackupPhaseFailedValidation means the backup has failed
	// the controller's validations and therefore will not run.
	BackupPhaseFailedValidation BackupPhase = "FailedValidation"

	// BackupPhaseInProgress means the backup is currently executing.
	BackupPhaseInProgress BackupPhase = "InProgress"

	// BackupPhaseCompleted means the backup has run successfully without
	// errors.
	BackupPhaseCompleted BackupPhase = "Completed"

	// BackupPhaseFailed mean the backup ran but encountered an error that
	// prevented it from completing successfully.
	BackupPhaseFailed BackupPhase = "Failed"
)

type BackupSpec

type BackupSpec struct {
	// IncludedNamespaces is a slice of namespace names to include objects
	// from. If empty, all namespaces are included.
	IncludedNamespaces []string `json:"includedNamespaces"`

	// ExcludedNamespaces contains a list of namespaces that are not
	// included in the backup.
	ExcludedNamespaces []string `json:"excludedNamespaces"`

	// IncludedResources is a slice of resource names to include
	// in the backup. If empty, all resources are included.
	IncludedResources []string `json:"includedResources"`

	// ExcludedResources is a slice of resource names that are not
	// included in the backup.
	ExcludedResources []string `json:"excludedResources"`

	// LabelSelector is a metav1.LabelSelector to filter with
	// when adding individual objects to the backup. If empty
	// or nil, all objects are included. Optional.
	LabelSelector *metav1.LabelSelector `json:"labelSelector"`

	// SnapshotVolumes is a bool which specifies whether to take
	// cloud snapshots of any PV's referenced in the set of objects
	// included in the Backup.
	SnapshotVolumes bool `json:"snapshotVolumes"`

	// TTL is a time.Duration-parseable string describing how long
	// the Backup should be retained for.
	TTL metav1.Duration `json:"ttl"`
}

BackupSpec defines the specification for an Ark backup.

type BackupStatus

type BackupStatus struct {
	// Version is the backup format version.
	Version int `json:"version"`

	// Expiration is when this Backup is eligible for garbage-collection.
	Expiration metav1.Time `json:"expiration"`

	// Phase is the current state of the Backup.
	Phase BackupPhase `json:"phase"`

	// VolumeBackups is a map of PersistentVolume names to
	// information about the backed-up volume in the cloud
	// provider API.
	VolumeBackups map[string]*VolumeBackupInfo `json:"volumeBackups"`

	// ValidationErrors is a slice of all validation errors (if
	// applicable).
	ValidationErrors []string `json:"validationErrors"`
}

BackupStatus captures the current status of an Ark backup.

type CloudProviderConfig

type CloudProviderConfig struct {
	// AWS is configuration information for connecting to AWS.
	AWS *AWSConfig `json:"aws"`

	// GCP is configuration information for connecting to GCP.
	GCP *GCPConfig `json:"gcp"`

	// Azure is configuration information for connecting to Azure.
	Azure *AzureConfig `json:"azure"`
}

CloudProviderConfig is configuration information about how to connect to a particular cloud. Only one of the members (AWS, GCP, Azure) may be present.

type Config

type Config struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata"`

	// PersistentVolumeProvider is the configuration information for the cloud where
	// the cluster is running and has PersistentVolumes to snapshot or restore.
	PersistentVolumeProvider CloudProviderConfig `json:"persistentVolumeProvider"`

	// BackupStorageProvider is the configuration information for the cloud where
	// Ark backups are stored in object storage. This may be a different cloud than
	// where the cluster is running.
	BackupStorageProvider ObjectStorageProviderConfig `json:"backupStorageProvider"`

	// BackupSyncPeriod is how often the BackupSyncController runs to ensure all
	// Ark backups in object storage exist as Backup API objects in the cluster.
	BackupSyncPeriod metav1.Duration `json:"backupSyncPeriod"`

	// GCSyncPeriod is how often the GCController runs to delete expired backup
	// API objects and corresponding backup files in object storage.
	GCSyncPeriod metav1.Duration `json:"gcSyncPeriod"`

	// ScheduleSyncPeriod is how often the ScheduleController runs to check for
	// new backups that should be triggered based on schedules.
	ScheduleSyncPeriod metav1.Duration `json:"scheduleSyncPeriod"`

	// ResourcePriorities is an ordered slice of resources specifying the desired
	// order of resource restores. Any resources not in the list will be restored
	// alphabetically after the prioritized resources.
	ResourcePriorities []string `json:"resourcePriorities"`

	// RestoreOnlyMode is whether Ark should run in a mode where only restores
	// are allowed; backups, schedules, and garbage-collection are all disabled.
	RestoreOnlyMode bool `json:"restoreOnlyMode"`
}

Config is an Ark resource that captures configuration information to be used for running the Ark server.

type ConfigList

type ConfigList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`

	Items []Config `json:"items"`
}

ConfigList is a list of Configs.

type GCPConfig

type GCPConfig struct {
	Project string `json:"project"`
	Zone    string `json:"zone"`
}

GCPConfig is configuration information for connecting to GCP.

type ObjectStorageProviderConfig

type ObjectStorageProviderConfig struct {
	// CloudProviderConfig is the configuration information for the cloud where
	// Ark backups are stored in object storage.
	CloudProviderConfig `json:",inline"`

	// Bucket is the name of the bucket in object storage where Ark backups
	// are stored.
	Bucket string `json:"bucket"`
}

ObjectStorageProviderConfig is configuration information for connecting to a particular bucket in object storage to access Ark backups.

type Restore

type Restore struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata"`

	Spec   RestoreSpec   `json:"spec"`
	Status RestoreStatus `json:"status,omitempty"`
}

Restore is an Ark resource that represents the application of resources from an Ark backup to a target Kubernetes cluster.

type RestoreList

type RestoreList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`
	Items           []Restore `json:"items"`
}

RestoreList is a list of Restores.

type RestorePhase

type RestorePhase string

RestorePhase is a string representation of the lifecycle phase of an Ark restore

const (
	// RestorePhaseNew means the restore has been created but not
	// yet processed by the RestoreController
	RestorePhaseNew RestorePhase = "New"

	// RestorePhaseFailedValidation means the restore has failed
	// the controller's validations and therefore will not run.
	RestorePhaseFailedValidation RestorePhase = "FailedValidation"

	// RestorePhaseInProgress means the restore is currently executing.
	RestorePhaseInProgress RestorePhase = "InProgress"

	// RestorePhaseCompleted means the restore has finished executing.
	// Any relevant warnings or errors will be captured in the Status.
	RestorePhaseCompleted RestorePhase = "Completed"
)

type RestoreResult

type RestoreResult struct {
	// Ark is a slice of messages related to the operation of Ark
	// itself (for example, messages related to connecting to the
	// cloud, reading a backup file, etc.)
	Ark []string `json:"ark"`

	// Cluster is a slice of messages related to restoring cluster-
	// scoped resources.
	Cluster []string `json:"cluster"`

	// Namespaces is a map of namespace name to slice of messages
	// related to restoring namespace-scoped resources.
	Namespaces map[string][]string `json:"namespaces"`
}

RestoreResult is a collection of messages that were generated during execution of a restore. This will typically store either warning or error messages.

type RestoreSpec

type RestoreSpec struct {
	// BackupName is the unique name of the Ark backup to restore
	// from.
	BackupName string `json:"backupName"`

	// Namespaces is a slice of namespaces in the Ark backup to restore.
	Namespaces []string `json:"namespaces"`

	// 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.
	NamespaceMapping map[string]string `json:"namespaceMapping"`

	// LabelSelector is a metav1.LabelSelector to filter with
	// when restoring individual objects from the backup. If empty
	// or nil, all objects are included. Optional.
	LabelSelector *metav1.LabelSelector `json:"labelSelector"`

	// RestorePVs is a bool defining whether to restore all included
	// PVs from snapshot (via the cloudprovider). Default false.
	RestorePVs bool `json:"restorePVs"`
}

RestoreSpec defines the specification for an Ark restore.

type RestoreStatus

type RestoreStatus struct {
	// Phase is the current state of the Restore
	Phase RestorePhase `json:"phase"`

	// ValidationErrors is a slice of all validation errors (if
	// applicable)
	ValidationErrors []string `json:"validationErrors"`

	// Warnings is a collection of all warning messages that were
	// generated during execution of the restore
	Warnings RestoreResult `json:"warnings"`

	// Errors is a collection of all error messages that were
	// generated during execution of the restore
	Errors RestoreResult `json:"errors"`
}

RestoreStatus captures the current status of an Ark restore

type Schedule

type Schedule struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata"`

	Spec   ScheduleSpec   `json:"spec"`
	Status ScheduleStatus `json:"status,omitempty"`
}

Schedule is an Ark resource that represents a pre-scheduled or periodic Backup that should be run.

type ScheduleList

type ScheduleList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`
	Items           []Schedule `json:"items"`
}

ScheduleList is a list of Schedules.

type SchedulePhase

type SchedulePhase string

SchedulePhase is a string representation of the lifecycle phase of an Ark schedule

const (
	// SchedulePhaseNew means the schedule has been created but not
	// yet processed by the ScheduleController
	SchedulePhaseNew SchedulePhase = "New"

	// SchedulePhaseEnabled means the schedule has been validated and
	// will now be triggering backups according to the schedule spec.
	SchedulePhaseEnabled SchedulePhase = "Enabled"

	// SchedulePhaseFailedValidation means the schedule has failed
	// the controller's validations and therefore will not trigger backups.
	SchedulePhaseFailedValidation SchedulePhase = "FailedValidation"
)

type ScheduleSpec

type ScheduleSpec struct {
	// Template is the definition of the Backup to be run
	// on the provided schedule
	Template BackupSpec `json:"template"`

	// Schedule is a Cron expression defining when to run
	// the Backup.
	Schedule string `json:"schedule"`
}

ScheduleSpec defines the specification for an Ark schedule

type ScheduleStatus

type ScheduleStatus struct {
	// Phase is the current phase of the Schedule
	Phase SchedulePhase `json:"phase"`

	// LastBackup is the last time a Backup was run for this
	// Schedule schedule
	LastBackup metav1.Time `json:"lastBackup"`

	// ValidationErrors is a slice of all validation errors (if
	// applicable)
	ValidationErrors []string `json:"validationErrors"`
}

ScheduleStatus captures the current state of an Ark schedule

type VolumeBackupInfo

type VolumeBackupInfo struct {
	// SnapshotID is the ID of the snapshot taken in the cloud
	// provider API of this volume.
	SnapshotID string `json:"snapshotID"`

	// Type is the type of the disk/volume in the cloud provider
	// API.
	Type string `json:"type"`

	// Iops is the optional value of provisioned IOPS for the
	// disk/volume in the cloud provider API.
	Iops *int `json:"iops"`
}

VolumeBackupInfo captures the required information about a PersistentVolume at backup time to be able to restore it later.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL