2장. 3scale 2.5를 2.6으로 업그레이드
사전 요구 사항
- Red Hat 3scale API Management 2.5가 프로젝트에 배포되었습니다.
툴 사전 요구 사항:
- base64
- jq
절차
3scale API Management 2.5를 2.6으로 업그레이드하려면 3scale이 배포된 프로젝트로 이동합니다.
oc project <3scale-project>
$ oc project <3scale-project>
그런 다음 다음 순서에 따라 단계를 수행합니다.
2.1. 3scale 프로젝트의 백업 디렉터리 생성 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에 따라 3scale 프로젝트에 대한 백업 디렉터리를 생성합니다. {BACKUP_DIR}
은 3scale 백업의 머신의 위치입니다.
절차
백업 디렉토리를 생성합니다.
mkdir ${BACKUP_DIR}
mkdir ${BACKUP_DIR}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 백업에 사용할 디렉터리 및 하위 디렉터리를 생성합니다.
mkdir ${BACKUP_DIR}/system-database ${BACKUP_DIR}/zync-database ${BACKUP_DIR}/system-redis ${BACKUP_DIR}/backend-redis ${BACKUP_DIR}/system-app ${BACKUP_DIR}/openshift mkdir ${BACKUP_DIR}/openshift/configmaps/ ${BACKUP_DIR}/openshift/deploymentConfigs ${BACKUP_DIR}/openshift/imageStreams ${BACKUP_DIR}/openshift/other/ ${BACKUP_DIR}/openshift/routes/ ${BACKUP_DIR}/openshift/secrets/ ${BACKUP_DIR}/openshift/services/
mkdir ${BACKUP_DIR}/system-database ${BACKUP_DIR}/zync-database ${BACKUP_DIR}/system-redis ${BACKUP_DIR}/backend-redis ${BACKUP_DIR}/system-app ${BACKUP_DIR}/openshift mkdir ${BACKUP_DIR}/openshift/configmaps/ ${BACKUP_DIR}/openshift/deploymentConfigs ${BACKUP_DIR}/openshift/imageStreams ${BACKUP_DIR}/openshift/other/ ${BACKUP_DIR}/openshift/routes/ ${BACKUP_DIR}/openshift/secrets/ ${BACKUP_DIR}/openshift/services/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.1.1. 백업 system-database (MySQL) 링크 복사링크가 클립보드에 복사되었습니다!
system-mysql
데이터베이스를 덤프하고 ${BACKUP_DIR}/system-database/system-mysql-backup.gz
내의 덤프를 저장합니다.
oc rsh $(oc get pods -l 'deploymentConfig=system-mysql' -o json | jq -r '.items[0].metadata.name') bash -c 'export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}; mysqldump --single-transaction -hsystem-mysql -uroot system' | gzip > ${BACKUP_DIR}/system-database/system-mysql-backup.gz
oc rsh $(oc get pods -l 'deploymentConfig=system-mysql' -o json | jq -r '.items[0].metadata.name') bash -c 'export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}; mysqldump --single-transaction -hsystem-mysql -uroot system' | gzip > ${BACKUP_DIR}/system-database/system-mysql-backup.gz
2.1.2. 백업 zync-database 링크 복사링크가 클립보드에 복사되었습니다!
zync-database
PostrgreSQL 데이터베이스를 덤프하고 ${BACKUP_DIR}/>-<nc-database-backup.gz 내의 덤프를 저장합니다.
oc rsh $(oc get pods -l 'deploymentConfig=zync-database' -o json | jq '.items[0].metadata.name' -r) bash -c 'pg_dumpall -c --if-exists' | gzip > ${BACKUP_DIR}/zync-database/zync-database-backup.gz
oc rsh $(oc get pods -l 'deploymentConfig=zync-database' -o json | jq '.items[0].metadata.name' -r) bash -c 'pg_dumpall -c --if-exists' | gzip > ${BACKUP_DIR}/zync-database/zync-database-backup.gz
2.1.3. 백업 system-redis 링크 복사링크가 클립보드에 복사되었습니다!
${BACKUP_DIR}/
내부의 system-redis 덤프 추출
system-redis
/system-redis-dump.rdb
oc cp $(oc get pods -l 'deploymentConfig=system-redis' -o json | jq '.items[0].metadata.name' -r):/var/lib/redis/data/dump.rdb ${BACKUP_DIR}/system-redis/system-redis-dump.rdb
oc cp $(oc get pods -l 'deploymentConfig=system-redis' -o json | jq '.items[0].metadata.name' -r):/var/lib/redis/data/dump.rdb ${BACKUP_DIR}/system-redis/system-redis-dump.rdb
2.1.4. 백업 backend-redis 링크 복사링크가 클립보드에 복사되었습니다!
${BACKUP_DIR}/
내부의 backend-redis 덤프 추출
backend-redis
/backend-redis-dump.rdb
oc cp $(oc get pods -l 'deploymentConfig=backend-redis' -o json | jq '.items[0].metadata.name' -r):/var/lib/redis/data/dump.rdb ${BACKUP_DIR}/backend-redis/backend-redis-dump.rdb
oc cp $(oc get pods -l 'deploymentConfig=backend-redis' -o json | jq '.items[0].metadata.name' -r):/var/lib/redis/data/dump.rdb ${BACKUP_DIR}/backend-redis/backend-redis-dump.rdb
2.1.5. system-app 영구 데이터 백업 링크 복사링크가 클립보드에 복사되었습니다!
${BACKUP_DIR}/
내부의 system-app 영구 데이터를 복사합니다.
system-app
/
oc rsync $(oc get pods -l 'deploymentConfig=system-app' -o json | jq '.items[0].metadata.name' -r):/opt/system/public/system ${BACKUP_DIR}/system-app/
oc rsync $(oc get pods -l 'deploymentConfig=system-app' -o json | jq '.items[0].metadata.name' -r):/opt/system/public/system ${BACKUP_DIR}/system-app/
2.1.6. Backup DeploymentConfigs 링크 복사링크가 클립보드에 복사되었습니다!
for object in `oc get dc | awk '{print $1}' | grep -v NAME`; do oc get -o yaml --export dc ${object} > ${BACKUP_DIR}/openshift/deploymentConfigs/${object}_dc.yaml; done
for object in `oc get dc | awk '{print $1}' | grep -v NAME`; do oc get -o yaml --export dc ${object} > ${BACKUP_DIR}/openshift/deploymentConfigs/${object}_dc.yaml; done
2.1.7. Backup ImageStreams 링크 복사링크가 클립보드에 복사되었습니다!
for object in `oc get is | awk '{print $1}' | grep -v NAME`; do oc get -o yaml --export is ${object} > ${BACKUP_DIR}/openshift/imageStreams/${object}_is.yaml; done
for object in `oc get is | awk '{print $1}' | grep -v NAME`; do oc get -o yaml --export is ${object} > ${BACKUP_DIR}/openshift/imageStreams/${object}_is.yaml; done
2.1.8. 백업 보안 링크 복사링크가 클립보드에 복사되었습니다!
토큰 및 시크릿 기본 빌더 및 배포자를 제외한 모든 항목을 백업합니다.
for object in `oc get secret | awk '{print $1}' | grep -v NAME | grep -v default | grep -v builder | grep -v deployer`; do oc get -o yaml --export secret ${object} > ${BACKUP_DIR}/openshift/secrets/${object}_secret.yaml; done
for object in `oc get secret | awk '{print $1}' | grep -v NAME | grep -v default | grep -v builder | grep -v deployer`; do oc get -o yaml --export secret ${object} > ${BACKUP_DIR}/openshift/secrets/${object}_secret.yaml; done
2.1.9. 백업 서비스 링크 복사링크가 클립보드에 복사되었습니다!
for object in `oc get svc | awk '{print $1}' | grep -v NAME`; do oc get -o yaml --export svc ${object} > ${BACKUP_DIR}/openshift/services/${object}_svc.yaml; done
for object in `oc get svc | awk '{print $1}' | grep -v NAME`; do oc get -o yaml --export svc ${object} > ${BACKUP_DIR}/openshift/services/${object}_svc.yaml; done
2.1.10. 백업 경로 링크 복사링크가 클립보드에 복사되었습니다!
for object in `oc get routes | awk '{print $1}' | grep -v NAME`; do oc get -o yaml --export route ${object} > ${BACKUP_DIR}/openshift/routes/${object}_route.yaml; done
for object in `oc get routes | awk '{print $1}' | grep -v NAME`; do oc get -o yaml --export route ${object} > ${BACKUP_DIR}/openshift/routes/${object}_route.yaml; done
2.1.11. Backup ConfigMaps 링크 복사링크가 클립보드에 복사되었습니다!
for object in `oc get cm | awk '{print $1}' | grep -v NAME`; do oc get -o yaml --export cm ${object} > ${BACKUP_DIR}/openshift/configmaps/${object}_cm.yaml; done
for object in `oc get cm | awk '{print $1}' | grep -v NAME`; do oc get -o yaml --export cm ${object} > ${BACKUP_DIR}/openshift/configmaps/${object}_cm.yaml; done
2.1.12. 기타 리소스 백업 링크 복사링크가 클립보드에 복사되었습니다!
백업되지 않은 다른 사용자 정의 리소스를 처리하기 위해 두 번째 백업을 만듭니다.
oc get -o yaml --export all > ${BACKUP_DIR}/openshift/other/threescale-project-elements.yaml for object in rolebindings serviceaccounts secrets imagestreamtags cm rolebindingrestrictions limitranges resourcequotas pvc templates cronjobs statefulsets hpa deployments replicasets poddisruptionbudget endpoints; do oc get -o yaml --export $object > ${BACKUP_DIR}/openshift/other/$object.yaml; done
oc get -o yaml --export all > ${BACKUP_DIR}/openshift/other/threescale-project-elements.yaml
for object in rolebindings serviceaccounts secrets imagestreamtags cm rolebindingrestrictions limitranges resourcequotas pvc templates cronjobs statefulsets hpa deployments replicasets poddisruptionbudget endpoints; do
oc get -o yaml --export $object > ${BACKUP_DIR}/openshift/other/$object.yaml; done