第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}/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
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-dump.rdb 内に system-redis ダンプを抽出します
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-dump.rdb 内に backend-redis ダンプを抽出します。
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. DeploymentConfig のバックアップ リンクのコピーリンクがクリップボードにコピーされました!
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. ImageStream のバックアップ リンクのコピーリンクがクリップボードにコピーされました!
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. ConfigMap のバックアップ リンクのコピーリンクがクリップボードにコピーされました!
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. その他のリソースのバックアップ リンクのコピーリンクがクリップボードにコピーされました!
バックアップオブジェクトではないその他のカスタムリソースを処理するために、2 番目のバックアップを作成します。
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