Documentation ¶
Overview ¶
Package v1 is the v1 version of the API. +groupName=ark.heptio.com
Index ¶
- Constants
- Variables
- func Resource(resource string) schema.GroupResource
- type AWSConfig
- type AzureConfig
- type Backup
- type BackupList
- type BackupPhase
- type BackupSpec
- type BackupStatus
- type CloudProviderConfig
- type Config
- type ConfigList
- type DownloadRequest
- type DownloadRequestList
- type DownloadRequestPhase
- type DownloadRequestSpec
- type DownloadRequestStatus
- type DownloadTarget
- type DownloadTargetKind
- type GCPConfig
- type ObjectStorageProviderConfig
- type Restore
- type RestoreList
- type RestorePhase
- type RestoreResult
- type RestoreSpec
- type RestoreStatus
- type Schedule
- type ScheduleList
- type SchedulePhase
- type ScheduleSpec
- type ScheduleStatus
- type VolumeBackupInfo
Constants ¶
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" )
const GroupName = "ark.heptio.com"
GroupName is the group name for the Ark API
Variables ¶
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 )
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"` KMSKeyID string `json:"kmsKeyId"` }
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 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. Optional. 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 DownloadRequest ¶ added in v0.4.0
type DownloadRequest struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata"` Spec DownloadRequestSpec `json:"spec"` Status DownloadRequestStatus `json:"status,omitempty"` }
DownloadRequest is a request to download an artifact from backup object storage, such as a backup log file.
type DownloadRequestList ¶ added in v0.4.0
type DownloadRequestList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata"` Items []DownloadRequest `json:"items"` }
DownloadRequestList is a list of DownloadRequests.
type DownloadRequestPhase ¶ added in v0.4.0
type DownloadRequestPhase string
DownloadRequestPhase represents the lifecycle phase of a DownloadRequest.
const ( // DownloadRequestPhaseNew means the DownloadRequest has not been processed by the // DownloadRequestController yet. DownloadRequestPhaseNew DownloadRequestPhase = "New" // DownloadRequestPhaseProcessed means the DownloadRequest has been processed by the // DownloadRequestController. DownloadRequestPhaseProcessed DownloadRequestPhase = "Processed" )
type DownloadRequestSpec ¶ added in v0.4.0
type DownloadRequestSpec struct { // Target is what to download (e.g. logs for a backup). Target DownloadTarget `json:"target"` }
DownloadRequestSpec is the specification for a download request.
type DownloadRequestStatus ¶ added in v0.4.0
type DownloadRequestStatus struct { // Phase is the current state of the DownloadRequest. Phase DownloadRequestPhase `json:"phase"` // DownloadURL contains the pre-signed URL for the target file. DownloadURL string `json:"downloadURL"` // Expiration is when this DownloadRequest expires and can be deleted by the system. Expiration metav1.Time `json:"expiration"` }
DownloadRequestStatus is the current status of a DownloadRequest.
type DownloadTarget ¶ added in v0.4.0
type DownloadTarget struct { // Kind is the type of file to download. Kind DownloadTargetKind `json:"kind"` // Name is the name of the kubernetes resource with which the file is associated. Name string `json:"name"` }
DownloadTarget is the specification for what kind of file to download, and the name of the resource with which it's associated.
type DownloadTargetKind ¶ added in v0.4.0
type DownloadTargetKind string
DownloadTargetKind represents what type of file to download.
const ( DownloadTargetKindBackupLog DownloadTargetKind = "BackupLog" DownloadTargetKindBackupContents DownloadTargetKind = "BackupContents" DownloadTargetKindRestoreLog DownloadTargetKind = "RestoreLog" )
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"` // 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 restore. ExcludedNamespaces []string `json:"excludedNamespaces"` // IncludedResources is a slice of resource names to include // in the restore. If empty, all resources in the backup are included. IncludedResources []string `json:"includedResources"` // ExcludedResources is a slice of resource names that are not // included in the restore. ExcludedResources []string `json:"excludedResources"` // 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 specifies whether to restore all included // PVs from snapshot (via the cloudprovider). 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 *int64 `json:"iops,omitempty"` }
VolumeBackupInfo captures the required information about a PersistentVolume at backup time to be able to restore it later.