Skip to content

Commit

Permalink
Add metalctl move documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
SzymonSAP committed Nov 29, 2024
1 parent 0813e50 commit 07ca730
Showing 1 changed file with 53 additions and 0 deletions.
53 changes: 53 additions & 0 deletions docs/usage/metalctl.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# metalctl move

The `metalctl move` command allows to move the metal Custom Resources, like e.g. Endpoint, BMC, Server, etc. from one
cluster to another.


> Warning!:
> Before running `metalctl move`, the user should take care of preparing the target cluster, including also installing
> all the required Custom Resources Definitions.

You can use:

```bash
metalctl move --source-kubeconfig="path-to-source-kubeconfig.yaml" --target-kubeconfig="path-to-target-kubeconfig.yaml"
```

to move the metal Custom Resources existing in all namespaces of the source cluster. In case you want to move the metal
Custom Resources defined in a single namespace, you can use the `--namespace` flag.

Status and ownership of a metal Custom Resource is also moved. If a metal Custom Resource present on the source cluster
exists on the target cluster with identical specification it won't be moved and no ownership of this object will be
set. In case of any errors during the process there will be performed a cleanup and the target cluster will be restored
to its previous state.

> Warning!:
`metalctl move` has been designed and developed around the bootstrap use case described below, and currently this is
the only use case verified by Cluster API E2E tests.
>
>If someone intends to use `metalctl move` outside of this scenario, it's recommended to set up a custom validation
pipeline of it before using the command on a production environment.
>
>Also, it is important to notice that move has not been designed for being used as a backup/restore solution and it has
several limitation for this scenario, like e.g. the implementation assumes the cluster must be stable while doing the
move operation, and possible race conditions happening while the cluster is upgrading, scaling up, remediating etc. has
never been investigated nor addressed.


## Pivot

Pivoting is a process for moving the Custom Resources and install Custom Resource Definitions from a source cluster to
a target cluster.

This can now be achieved with the following procedure:

1. Use `make install` to install the metal Custom Resource Definitions into the target cluster
2. Use `metalctl move` to move the metal Custom Resources from a source cluster to a target cluster


## Dry run

With `--dry-run` option you can dry-run the move action by only printing logs without taking any actual actions. Use
`--verbose` flag to enable verbose logging.

0 comments on commit 07ca730

Please sign in to comment.