Heptio Ark defines its own Config object (a custom resource) for specifying Ark backup and cloud provider settings. When the Ark server is first deployed, it waits until you create a Config--specifically one named default
--in the heptio-ark
namespace.
NOTE: There is an underlying assumption that you're running the Ark server as a Kubernetes deployment. If the
default
Config is modified, the server shuts down gracefully. Once the kubelet restarts the Ark server pod, the server then uses the updated Config values.
A sample YAML Config
looks like the following:
apiVersion: ark.heptio.com/v1
kind: Config
metadata:
namespace: heptio-ark
name: default
persistentVolumeProvider:
name: aws
config:
region: us-west-2
backupStorageProvider:
name: aws
bucket: ark
config:
region: us-west-2
backupSyncPeriod: 60m
gcSyncPeriod: 60m
scheduleSyncPeriod: 1m
restoreOnlyMode: false
The configurable parameters are as follows:
Key | Type | Default | Meaning |
---|---|---|---|
persistentVolumeProvider |
CloudProviderConfig | None (Optional) | The specification for whichever cloud provider the cluster is using for persistent volumes (to be snapshotted), if any. If not specified, Backups and Restores requesting PV snapshots & restores, respectively, are considered invalid. NOTE: For Azure, your Kubernetes cluster needs to be version 1.7.2+ in order to support PV snapshotting of its managed disks. |
persistentVolumeProvider/name |
String (Ark natively supports aws , gcp , and azure . Other providers may be available via external plugins.) |
None (Optional) | The name of the cloud provider the cluster is using for persistent volumes, if any. |
persistentVolumeProvider/config |
map[string]string (See the corresponding AWS, GCP, and Azure-specific configs or your provider's documentation.) |
None (Optional) | Configuration keys/values to be passed to the cloud provider for persistent volumes. |
backupStorageProvider |
CloudProviderConfig | Required Field | The specification for whichever cloud provider will be used to actually store the backups. |
backupStorageProvider/name |
String (Ark natively supports aws , gcp , and azure . Other providers may be available via external plugins.) |
Required Field | The name of the cloud provider that will be used to actually store the backups. |
backupStorageProvider/bucket |
String | Required Field | The storage bucket where backups are to be uploaded. |
backupStorageProvider/config |
map[string]string (See the corresponding AWS, GCP, and Azure-specific configs or your provider's documentation.) |
None (Optional) | Configuration keys/values to be passed to the cloud provider for backup storage. |
backupSyncPeriod |
metav1.Duration | 60m0s | How frequently Ark queries the object storage to make sure that the appropriate Backup resources have been created for existing backup files. |
gcSyncPeriod |
metav1.Duration | 60m0s | How frequently Ark queries the object storage to delete backup files that have passed their TTL. |
scheduleSyncPeriod |
metav1.Duration | 1m0s | How frequently Ark checks its Schedule resource objects to see if a backup needs to be initiated. |
resourcePriorities |
[]string | [namespaces, persistentvolumes, persistentvolumeclaims, secrets, configmaps] |
An ordered list that describes the order in which Kubernetes resource objects should be restored (also specified with the <RESOURCE>.<GROUP> format.If a resource is not in this list, it is restored after all other prioritized resources. |
restoreOnlyMode |
bool | false |
When RestoreOnly mode is on, functionality for backups, schedules, and expired backup deletion is turned off. Restores are made from existing backup files in object storage. |
(Or other S3-compatible storage)
Key | Type | Default | Meaning |
---|---|---|---|
region |
string | Required Field | Example: "us-east-1" See AWS documentation for the full list. |
s3ForcePathStyle |
bool | false |
Set this to true if you are using a local storage service like Minio. |
s3Url |
string | Required field for non-AWS-hosted storage | Example: http://minio:9000 You can specify the AWS S3 URL here for explicitness, but Ark can already generate it from region , and bucket . This field is primarily for local storage services like Minio. |
kmsKeyId |
string | Empty | Example: "502b409c-4da1-419f-a16e-eif453b3i49f" or "alias/<KMS-Key-Alias-Name> "Specify an AWS KMS key id or alias to enable encryption of the backups stored in S3. Only works with AWS S3 and may require explicitly granting key usage rights. |
Key | Type | Default | Meaning |
---|---|---|---|
region |
string | Required Field | Example: "us-east-1" See AWS documentation for the full list. |
No parameters required.
No parameters required.
No parameters required.
Key | Type | Default | Meaning |
---|---|---|---|
apiTimeout |
metav1.Duration | 2m0s | How long to wait for an Azure API request to complete before timeout. |