OCP ETCD Plugin
The plugin helps the user to perform ETCD backup and restore of OCP clusters.
Introduction to ETCD
ETCD is the persistent data store for Kubernetes. It is a distributed key-value store that records the state of all resources in a Kubernetes cluster and it is simple, fast and secure. It acts like a backend service discovery and database. It runs on different servers in Kubernetes clusters at the same time, which enables it to monitor changes in clusters and store state/configuration data that are to be accessed by a Kubernetes master or clusters.
OCP Cluster Backup & Disaster Recovery (DR)
ETCD data must be backed up before shutting down a cluster. ETCD is the key-value store for OpenShift Container Platform, which persists the state of all resource objects. Subsequently, ETCD backup plays a crucial role in disaster recovery. There are several situations where OpenShift Container Platform does not work as expected, such as:
You have a cluster that is not functional following a restart because of unexpected conditions, such as node failure, or network connectivity issues.
You have deleted something critical in the cluster by mistake.
You have lost the majority of your control plane hosts, leading to ETCD quorum loss.
In disaster situations like above, you can always recover by restoring your cluster to its previous state using the saved ETCD snapshots. Some important considerations to keep in mind about OCP Cluster Backups and DR:
Disaster recovery/Restore requires you to have at least one healthy control plane host (also known as the master host). User should run this plugin on bastion node if user wants to perform restore.[Bastion host is the host which is created using same network as the cluster and can ping the nodes of cluster.] More information around bastion node - https://docs.openshift.com/container-platform/4.7/networking/accessing-hosts.html
User has to only create bastion node which should be accessed using ssh. This plugin will itself create ssh connectivity from bastion to cluster nodes.
Source of information - https://access.redhat.com/documentation/en-us/openshift_container_platform/4.6/html-single/backup_and_restore/index
ETCD Backup and Restore Using ocp-etcd-backup-restore Plugin
The plugin helps the user to perform ETCD backup and restore of OCP clusters. If a user has lost some crucial cluster information, then they can restore from the snapshot saved using this plugin. If the user has lost nodes, they must recreate all the non-recovery control plane machines and then run '-p' option from this plugin to redeploy ETCD. Some important considerations to keep in mind about the plugin:
The plugin supports s3 as backup target
Restore functionality will only work on same cluster from where the backup was taken
Please do not switch of any node in cluster while restore is in progress and do not abort restore task in between, else you may loose cluster accessibility
Plugin Prerequisites
Installation, Upgrade, Removal of Plugins :
Action | Command |
---|---|
Add the T4K custom plugin index of krew |
|
Perform the installation |
|
Upgrade the plugin |
|
Uninstall the plugin |
|
Usage
Flags:
Flag | Argument Details |
---|---|
-backup | Flag to notify the plugin to perform a backup. |
-restore | Flag to notify the plugin to perform a restore. |
--target-name | The name of a single datastore on which ETCD backup is to be stored. The target should be s3 and created in same namespace in which T4K resides and it should be available. This argument is mandatory if -backup flag is provided. |
--target-namespace | Namespace name where the target resides or T4K is installed. This argument is mandatory if -backup flag is provided. |
--api-server-url | Api server URL to login cluster. It follows this format: |
--ocp-cluster-user | Username to access/login the OCP cluster. This is mandatory. |
--ocp-cluster-pass | Password for the --ocp-cluster-user to access/login the OCP cluster. This is mandatory. |
-p | Denotes or notify plugin to perform post restore tasks. |
--log-location | Log file name along with path where the logs should be saved. Default: /tmp/etcd-ocp-backup.log |
Examples:
A user may specify more than one option with each command execution. For example, to create a backup with a configured target name and associated namespace, and to set the cluster API URL with the associated username and password, execute the following single command:
Then, to restore from the same cluster API URL with the associated username and password, execute the following single command:
Restoring to a previous cluster state is a destructive and destabilizing action to take on a running cluster. This procedure should only be used as a last resort.
Important Additional Information
If restoring the backup which is a different T4K version than the one you are currently using, the operation fails and cluster accessibility is lost. The workaround is to delete the current T4K and then re-try restoring.
As per official Red Hat documentation, "Restoring to a previous cluster state is a destructive and destabilizing action to take on a running cluster. This should only be used as a last resort." If you are able to retrieve data using the Kubernetes API server, then ETCD is available and you should not restore using an ETCD backup.
Supported GLIBC version: ≥ 2.27 Plugin is tested on OCP versions: 4.8 and 4.9
Please refer to Red Hat's Backing up and restoring your OpenShift Container Platform Cluster for more information.