9.4. AWS에서 etcd 백업 및 복원
Amazon Web Services(AWS)에 호스팅된 클러스터에서 etcd를 백업하고 복원하여 오류를 해결할 수 있습니다.
9.4.1. 호스팅된 클러스터에 대한 etcd 스냅샷 찍기 링크 복사링크가 클립보드에 복사되었습니다!
호스팅된 클러스터의 etcd를 백업하려면 etcd의 스냅샷을 만들어야 합니다. 나중에 스냅샷을 사용하여 etcd를 복원할 수 있습니다.
이 절차에는 API 다운타임이 필요합니다.
프로세스
다음 명령을 입력하여 호스팅된 클러스터의 조정을 일시 중지합니다.
oc patch -n clusters hostedclusters/<hosted_cluster_name> \ -p '{"spec":{"pausedUntil":"true"}}' --type=merge
$ oc patch -n clusters hostedclusters/<hosted_cluster_name> \ -p '{"spec":{"pausedUntil":"true"}}' --type=merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 모든 etcd-writer 배포를 중지합니다.
oc scale deployment -n <hosted_cluster_namespace> --replicas=0 \ kube-apiserver openshift-apiserver openshift-oauth-apiserver
$ oc scale deployment -n <hosted_cluster_namespace> --replicas=0 \ kube-apiserver openshift-apiserver openshift-oauth-apiserver
Copy to Clipboard Copied! Toggle word wrap Toggle overflow etcd 스냅샷을 찍으려면 다음 명령을 입력하여 각 etcd 컨테이너에서
exec
명령을 사용합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 스냅샷 상태를 확인하려면 다음 명령을 실행하여 각 etcd 컨테이너에서
exec
명령을 사용합니다.oc exec -it <etcd_pod_name> -n <hosted_cluster_namespace> -- \ env ETCDCTL_API=3 /usr/bin/etcdctl -w table snapshot status \ /var/lib/data/snapshot.db
$ oc exec -it <etcd_pod_name> -n <hosted_cluster_namespace> -- \ env ETCDCTL_API=3 /usr/bin/etcdctl -w table snapshot status \ /var/lib/data/snapshot.db
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 나중에 검색할 수 있는 위치(예: S3 버킷)에 스냅샷 데이터를 복사합니다. 다음 예제를 참조하십시오.
참고다음 예제에서는 서명 버전 2를 사용합니다.
us-east-2
지역과 같이 서명 버전 4를 지원하는 지역에 있는 경우 서명 버전 4를 사용하세요. 그렇지 않으면 스냅샷을 S3 버킷에 복사할 때 업로드가 실패합니다.예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 나중에 새 클러스터에서 스냅샷을 복원하려면 호스팅된 클러스터가 참조하는 암호화 비밀번호를 저장합니다.
다음 명령을 입력하여 비밀 암호화 키를 얻으세요.
oc get hostedcluster <hosted_cluster_name> \ -o=jsonpath='{.spec.secretEncryption.aescbc}'
$ oc get hostedcluster <hosted_cluster_name> \ -o=jsonpath='{.spec.secretEncryption.aescbc}' {"activeKey":{"name":"<hosted_cluster_name>-etcd-encryption-key"}}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 비밀 암호화 키를 저장합니다.
oc get secret <hosted_cluster_name>-etcd-encryption-key \ -o=jsonpath='{.data.key}'
$ oc get secret <hosted_cluster_name>-etcd-encryption-key \ -o=jsonpath='{.data.key}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새 클러스터에서 스냅샷을 복원할 때 이 키를 해독할 수 있습니다.
다음 명령을 입력하여 모든 etcd-writer 배포를 다시 시작합니다.
oc scale deployment -n <control_plane_namespace> --replicas=3 \ kube-apiserver openshift-apiserver openshift-oauth-apiserver
$ oc scale deployment -n <control_plane_namespace> --replicas=3 \ kube-apiserver openshift-apiserver openshift-oauth-apiserver
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 호스팅된 클러스터의 조정을 재개합니다.
oc patch -n <hosted_cluster_namespace> \ -p '[\{"op": "remove", "path": "/spec/pausedUntil"}]' --type=json
$ oc patch -n <hosted_cluster_namespace> \ -p '[\{"op": "remove", "path": "/spec/pausedUntil"}]' --type=json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 단계
etcd 스냅샷을 복원하십시오.
9.4.2. 호스트 클러스터에서 etcd 스냅샷 복원 링크 복사링크가 클립보드에 복사되었습니다!
호스팅된 클러스터에서 etcd 스냅샷이 있는 경우 복원할 수 있습니다. 현재 클러스터 생성 중에만 etcd 스냅샷을 복원할 수 있습니다.
etcd 스냅샷을 복원하려면 create cluster --render
명령에서 출력을 수정하고 HostedCluster
사양의 etcd 섹션에 restoreSnapshotURL
값을 정의합니다.
hcp create
명령의 --render
플래그는 비밀을 렌더링하지 않습니다. 비밀을 렌더링하려면 hcp create
명령에서 --render
및 --render-sensitive
플래그를 모두 사용해야 합니다.
사전 요구 사항
호스팅된 클러스터에서 etcd 스냅샷을 작성했습니다.
절차
aws
CLI(명령줄 인터페이스)에서 인증 정보를 etcd 배포에 전달하지 않고 S3에서 etcd 스냅샷을 다운로드할 수 있도록 사전 서명된 URL을 생성합니다.ETCD_SNAPSHOT=${ETCD_SNAPSHOT:-"s3://${BUCKET_NAME}/${CLUSTER_NAME}-snapshot.db"} ETCD_SNAPSHOT_URL=$(aws s3 presign ${ETCD_SNAPSHOT})
ETCD_SNAPSHOT=${ETCD_SNAPSHOT:-"s3://${BUCKET_NAME}/${CLUSTER_NAME}-snapshot.db"} ETCD_SNAPSHOT_URL=$(aws s3 presign ${ETCD_SNAPSHOT})
Copy to Clipboard Copied! Toggle word wrap Toggle overflow URL을 참조하도록
HostedCluster
사양을 수정합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
spec.secretEncryption.aescbc
값에서 참조한 보안에 이전 단계에서 저장한 것과 동일한 AES 키가 포함되어 있는지 확인합니다.