5.3. Sauvegarde et restauration d'etcd sur un cluster hébergé
Si vous utilisez des plans de contrôle hébergés sur OpenShift Container Platform, le processus de sauvegarde et de restauration d'etcd est différent du processus de sauvegarde habituel d'etcd.
Les plans de contrôle hébergés sont une fonctionnalité d'aperçu technologique uniquement. Les fonctionnalités de l'aperçu technologique ne sont pas prises en charge par les accords de niveau de service (SLA) de production de Red Hat et peuvent ne pas être complètes sur le plan fonctionnel. Red Hat ne recommande pas de les utiliser en production. Ces fonctionnalités offrent un accès anticipé aux fonctionnalités des produits à venir, ce qui permet aux clients de tester les fonctionnalités et de fournir un retour d'information pendant le processus de développement.
Pour plus d'informations sur la portée de l'assistance des fonctionnalités de l'aperçu technologique de Red Hat, voir Portée de l'assistance des fonctionnalités de l'aperçu technologique.
5.3.1. Prendre un instantané d'etcd sur un cluster hébergé
Dans le cadre du processus de sauvegarde d'etcd pour un cluster hébergé, vous prenez un instantané d'etcd. Après avoir pris l'instantané, vous pouvez le restaurer, par exemple, dans le cadre d'une opération de reprise après sinistre.
Cette procédure nécessite un temps d'arrêt de l'API.
Procédure
Interrompez la réconciliation du cluster hébergé en entrant cette commande :
$ oc patch -n clusters hostedclusters/${CLUSTER_NAME} -p '{"spec":{"pausedUntil":"'${PAUSED_UNTIL}'"}}' --type=merge
Arrêtez tous les déploiements d'etcd-writer en entrant cette commande :
$ oc scale deployment -n ${HOSTED_CLUSTER_NAMESPACE} --replicas=0 kube-apiserver openshift-apiserver openshift-oauth-apiserver
Prenez un instantané etcd en utilisant la commande
exec
dans chaque conteneur etcd :$ oc exec -it etcd-0 -n ${HOSTED_CLUSTER_NAMESPACE} -- env ETCDCTL_API=3 /usr/bin/etcdctl --cacert /etc/etcd/tls/client/etcd-client-ca.crt --cert /etc/etcd/tls/client/etcd-client.crt --key /etc/etcd/tls/client/etcd-client.key --endpoints=localhost:2379 snapshot save /var/lib/data/snapshot.db $ oc exec -it etcd-0 -n ${HOSTED_CLUSTER_NAMESPACE} -- env ETCDCTL_API=3 /usr/bin/etcdctl -w table snapshot status /var/lib/data/snapshot.db
Copiez les données de l'instantané vers un emplacement où vous pourrez les récupérer ultérieurement, tel qu'un seau S3, comme indiqué dans l'exemple suivant.
NoteL'exemple suivant utilise la version 2 de la signature. Si vous vous trouvez dans une région qui prend en charge la version 4 de la signature, comme la région us-east-2, utilisez la version 4 de la signature. Dans le cas contraire, si vous utilisez la version 2 de la signature pour copier l'instantané dans un seau S3, le téléchargement échoue et la version 2 de la signature est obsolète.
Exemple
BUCKET_NAME=somebucket FILEPATH="/${BUCKET_NAME}/${CLUSTER_NAME}-snapshot.db" CONTENT_TYPE="application/x-compressed-tar" DATE_VALUE=`date -R` SIGNATURE_STRING="PUT\n\n${CONTENT_TYPE}\n${DATE_VALUE}\n${FILEPATH}" ACCESS_KEY=accesskey SECRET_KEY=secret SIGNATURE_HASH=`echo -en ${SIGNATURE_STRING} | openssl sha1 -hmac ${SECRET_KEY} -binary | base64` oc exec -it etcd-0 -n ${HOSTED_CLUSTER_NAMESPACE} -- curl -X PUT -T "/var/lib/data/snapshot.db" \ -H "Host: ${BUCKET_NAME}.s3.amazonaws.com" \ -H "Date: ${DATE_VALUE}" \ -H "Content-Type: ${CONTENT_TYPE}" \ -H "Authorization: AWS ${ACCESS_KEY}:${SIGNATURE_HASH}" \ https://${BUCKET_NAME}.s3.amazonaws.com/${CLUSTER_NAME}-snapshot.db
Si vous souhaitez pouvoir restaurer ultérieurement l'instantané sur un nouveau cluster, enregistrez le secret de chiffrement auquel le cluster hébergé fait référence, comme indiqué dans cet exemple :
Exemple
oc get hostedcluster $CLUSTER_NAME -o=jsonpath='{.spec.secretEncryption.aescbc}' {"activeKey":{"name":"CLUSTER_NAME-etcd-encryption-key"}} # Save this secret, or the key it contains so the etcd data can later be decrypted oc get secret ${CLUSTER_NAME}-etcd-encryption-key -o=jsonpath='{.data.key}'
Prochaines étapes
Restaurer l'instantané etcd.
5.3.2. Restauration d'un snapshot etcd sur un cluster hébergé
Si vous avez un instantané d'etcd de votre cluster hébergé, vous pouvez le restaurer. Actuellement, vous ne pouvez restaurer un instantané etcd que lors de la création d'un cluster.
Pour restaurer un instantané etcd, vous modifiez la sortie de la commande create cluster --render
et définissez une valeur restoreSnapshotURL
dans la section etcd de la spécification HostedCluster
.
Conditions préalables
Vous avez pris un instantané etcd sur un cluster hébergé.
Procédure
Sur l'interface de ligne de commande (CLI)
aws
, créez une URL pré-signée afin de pouvoir télécharger votre instantané etcd depuis S3 sans transmettre d'informations d'identification au déploiement etcd :ETCD_SNAPSHOT=${ETCD_SNAPSHOT:-"s3://${BUCKET_NAME}/${CLUSTER_NAME}-snapshot.db"} ETCD_SNAPSHOT_URL=$(aws s3 presign ${ETCD_SNAPSHOT})
Modifier la spécification
HostedCluster
pour faire référence à l'URL :spec: etcd: managed: storage: persistentVolume: size: 4Gi type: PersistentVolume restoreSnapshotURL: - "${ETCD_SNAPSHOT_URL}" managementType: Managed
-
Assurez-vous que le secret que vous avez référencé à partir de la valeur
spec.secretEncryption.aescbc
contient la même clé AES que celle que vous avez enregistrée dans les étapes précédentes.