mirror of
https://github.com/vmware-tanzu/velero.git
synced 2026-09-04 15:16:58 +00:00
Support pre and post hooks.
Signed-off-by: Andy Goldstein <andy.goldstein@gmail.com>
This commit is contained in:
@@ -88,8 +88,12 @@ spec:
|
||||
matchLabels:
|
||||
app: ark
|
||||
component: server
|
||||
# An array of hooks to run. Currently only "exec" hooks are supported.
|
||||
# An array of hooks to run before executing custom actions. Currently only "exec" hooks are supported.
|
||||
# DEPRECATED. Use pre instead.
|
||||
hooks:
|
||||
# Same content as pre below.
|
||||
# An array of hooks to run before executing custom actions. Currently only "exec" hooks are supported.
|
||||
pre:
|
||||
-
|
||||
# The type of hook. This must be "exec".
|
||||
exec:
|
||||
@@ -105,6 +109,10 @@ spec:
|
||||
onError: Fail
|
||||
# How long to wait for the command to finish executing. Defaults to 30 seconds. Optional.
|
||||
timeout: 10s
|
||||
# An array of hooks to run after all custom actions and additional items have been
|
||||
# processed. Currently only "exec" hooks are supported.
|
||||
post:
|
||||
# Same content as pre above.
|
||||
# Status about the Backup. Users should not set any data here.
|
||||
status:
|
||||
# The date and time when the Backup is eligible for garbage collection.
|
||||
|
||||
+33
-6
@@ -5,19 +5,46 @@ Heptio Ark currently supports executing commands in containers in pods during a
|
||||
## Backup Hooks
|
||||
|
||||
When performing a backup, you can specify one or more commands to execute in a container in a pod
|
||||
when that pod is being backed up. There are two ways to specify hooks: annotations on the pod
|
||||
itself, and in the Backup spec.
|
||||
when that pod is being backed up.
|
||||
|
||||
Ark versions prior to v0.7.0 only support hooks that execute prior to any custom action processing
|
||||
("pre" hooks).
|
||||
|
||||
As of version v0.7.0, Ark also supports "post" hooks - these execute after all custom actions have
|
||||
completed, as well as after all the additional items specified by custom actions have been backed
|
||||
up.
|
||||
|
||||
An example of when you might use both pre and post hooks is freezing a file system. If you want to
|
||||
ensure that all pending disk I/O operations have completed prior to taking a snapshot, you could use
|
||||
a pre hook to run `fsfreeze --freeze`. Next, Ark would take a snapshot of the disk. Finally, you
|
||||
could use a post hook to run `fsfreeze --unfreeze`.
|
||||
|
||||
There are two ways to specify hooks: annotations on the pod itself, and in the Backup spec.
|
||||
|
||||
### Specifying Hooks As Pod Annotations
|
||||
|
||||
You can use the following annotations on a pod to make Ark execute a hook when backing up the pod:
|
||||
|
||||
#### Pre hooks
|
||||
|
||||
| Annotation Name | Description |
|
||||
| --- | --- |
|
||||
| `hook.backup.ark.heptio.com/container` | The container where the command should be executed. Defaults to the first container in the pod. Optional. |
|
||||
| `hook.backup.ark.heptio.com/command` | The command to execute. If you need multiple arguments, specify the command as a JSON array, such as `["/usr/bin/uname", "-a"]` |
|
||||
| `hook.backup.ark.heptio.com/on-error` | What to do if the command returns a non-zero exit code. Defaults to Fail. Valid values are Fail and Continue. Optional. |
|
||||
| `hook.backup.ark.heptio.com/timeout` | How long to wait for the command to execute. The hook is considered in error if the command exceeds the timeout. Defaults to 30s. Optional. |
|
||||
| `pre.hook.backup.ark.heptio.com/container` | The container where the command should be executed. Defaults to the first container in the pod. Optional. |
|
||||
| `pre.hook.backup.ark.heptio.com/command` | The command to execute. If you need multiple arguments, specify the command as a JSON array, such as `["/usr/bin/uname", "-a"]` |
|
||||
| `pre.hook.backup.ark.heptio.com/on-error` | What to do if the command returns a non-zero exit code. Defaults to Fail. Valid values are Fail and Continue. Optional. |
|
||||
| `pre.hook.backup.ark.heptio.com/timeout` | How long to wait for the command to execute. The hook is considered in error if the command exceeds the timeout. Defaults to 30s. Optional. |
|
||||
|
||||
Ark v0.7.0+ continues to support the original (deprecated) way to specify pre hooks - without the
|
||||
`pre.` prefix in the annotation names (e.g. `hook.backup.ark.heptio.com/container`).
|
||||
|
||||
#### Post hooks (v0.7.0+)
|
||||
|
||||
| Annotation Name | Description |
|
||||
| --- | --- |
|
||||
| `post.hook.backup.ark.heptio.com/container` | The container where the command should be executed. Defaults to the first container in the pod. Optional. |
|
||||
| `post.hook.backup.ark.heptio.com/command` | The command to execute. If you need multiple arguments, specify the command as a JSON array, such as `["/usr/bin/uname", "-a"]` |
|
||||
| `post.hook.backup.ark.heptio.com/on-error` | What to do if the command returns a non-zero exit code. Defaults to Fail. Valid values are Fail and Continue. Optional. |
|
||||
| `post.hook.backup.ark.heptio.com/timeout` | How long to wait for the command to execute. The hook is considered in error if the command exceeds the timeout. Defaults to 30s. Optional. |
|
||||
|
||||
### Specifying Hooks in the Backup Spec
|
||||
|
||||
|
||||
Reference in New Issue
Block a user