마이그레이션 3scale
3scale API Management 설치를 업그레이드합니다.
초록
접두부 링크 복사링크가 클립보드에 복사되었습니다!
이 안내서는 3scale API Management를 업그레이드하는 데 도움이 됩니다.
I 부. 3scale API 관리 업그레이드 가이드: 2.5에서 2.6으로 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 템플릿 기반 배포에서 Red Hat 3scale API Management를 버전 2.5에서 2.6으로 업그레이드하는 방법에 대해 설명합니다.
이 프로세스에서는 서비스가 중단되고 업그레이드가 완료될 때까지 Zync 처리 작업을 일시적으로 중지합니다. 유지 관리 기간이 있는지 확인합니다.
1장. 시작하기 전 링크 복사링크가 클립보드에 복사되었습니다!
업그레이드를 진행하기 전에 다음 사항을 고려해야 합니다.
지원되는 구성
- 3scale은 OpenShift 3.11에서 템플릿만 사용하여 2.5에서 2.6으로의 업그레이드 경로를 지원합니다.
이전 3scale 버전
3scale 2.5가
amp.yml
표준 시나리오 템플릿과 함께 배포되었다고 가정하면 새 3scale 2.6amp.yml
템플릿을 다운로드한 다음 새 OpenShift 요소를 생성하기 위해 배포합니다.-
3scale 2.6
amp.yml
템플릿을 다운로드하려면 노드 및 인타이틀먼트 구성을 참조하십시오.
-
3scale 2.6
2.4보다 이전 버전의 다중 버전 업그레이드의 경우
system-environment
ConfigMap이 있는지 확인합니다.oc get configmap system-environment
$ oc get configmap system-environment
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
get
NotFound
오류 메시지가 표시되면 ConfigMap 생성 아래의 2.4 업그레이드 가이드를 참조하십시오.
-
get
툴링
- 데이터베이스 백업을 수행합니다. 백업 절차는 각 데이터베이스 유형 및 설정에 따라 다릅니다.
- OpenShift CLI 툴이 3scale이 배포된 동일한 프로젝트에 구성되어 있는지 확인합니다.
- bash 쉘에서 아래 명령을 실행합니다.
이 업그레이드의 경우 다음 단계에 따라 패치 파일을 다운로드하여 가져옵니다.
- templates-migration-2.5-to-2.6 을 클릭합니다.
- 파일을 다운로드하여 압축을 풉니다.
다운로드한 압축 파일의 내용과 관련된 문서 전체에서 일부 파일 참조가 표시됩니다. 예를 들어 $(cat db-imagestream-patches/backend-redis-json.patch).
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
2.2. 인증된 레지스트리에 대한 지원 구성 링크 복사링크가 클립보드에 복사되었습니다!
3scale 2.6 릴리스의 일부로 컨테이너 이미지가 registry.access.redhat.com에서 registry.redhat.
io에 있는 인증된 레지스트리
로 마이그레이션되었습니다. 다음 단계에 따라 인증된 새 레지스트리를 지원하도록 기존 3scale 인프라를 준비합니다.
registry
.redhat.io에 있는 새로운 Red Hat 인증 레지스트리에
인증 정보를 생성합니다.-
레지스트리 서비스 계정이라고도 하는 레지스트리 토큰을 생성합니다. 이 레지스트리 토큰은 3scale 플랫폼에서
registry.redhat.io
에 대해 인증하기 위한 것입니다. - 인증 정보를 생성하는 방법에 대한 자세한 내용은 Red Hat Container Registry Authentication 을 참조하십시오.
-
레지스트리 서비스 계정이라고도 하는 레지스트리 토큰을 생성합니다. 이 레지스트리 토큰은 3scale 플랫폼에서
레지스트리 서비스 계정을 사용할 수 있게 되면 3scale 인프라가 배포된 OpenShift 프로젝트에서 인증 정보가 포함된 새 보안을 생성합니다.
- Red Hat 서비스 계정 패널로 이동하여 OpenShift 시크릿 정의를 가져옵니다.
- 3scale 인프라에 사용할 레지스트리 서비스 계정을 선택합니다.
- OpenShift Secret 탭을 선택하고 다운로드 시크릿 링크를 클릭합니다.
Red Hat 서비스 계정 패널에서 OpenShift 시크릿을 다운로드한 후 YAML 파일의 metadata 섹션에 있는 name 필드를 수정하고 기존 이름을
3scale-registry-auth
이름으로 교체합니다.보안은 다음과 유사합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 변경 사항을 저장하고 3scale 2.5가 현재 배포된 OpenShift 프로젝트에 시크릿을 생성합니다.
oc create -f the-secret-name.yml
$ oc create -f the-secret-name.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 시크릿을 생성한 후 존재를 확인할 수 있습니다. 다음 명령은 콘텐츠가 포함된 보안을 반환합니다.
oc get secret threescale-registry-auth
$ oc get secret threescale-registry-auth
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 3scale-registry-auth
시크릿을 사용할amp
서비스 계정을 생성합니다. 이를 위해 다음 콘텐츠를 사용하여 fileamp-sa.yml
을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow amp
서비스 계정을 배포합니다.oc create -f amp-sa.yml
$ oc create -f amp-sa.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow amp
서비스 계정이 올바르게 생성되었는지 확인합니다. 다음 명령은 콘텐츠가 포함된 생성된 서비스 계정을 반환하고 imagePullSecrets 섹션의 요소 중 하나로threescale-registry-auth
를 사용합니다.oc get sa amp -o yaml
$ oc get sa amp -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 기존 3scale 프로젝트의 default 서비스 계정에 적용된 권한이 new
amp
서비스 계정에 복제되었는지 확인합니다.Service Discovery를 서비스 계정 인증 모드로 구성한 경우 OAuth 서버 없이 구성에서 사용 가능한 지침에 따라 cluster-role 뷰 권한을
system:serviceaccount:<3scale-project>:default
사용자에게 부여한 다음, 이제system:serviceaccount:<3scale-project>:amp
에 동일한 권한을 적용해야 합니다.oc adm policy add-cluster-role-to-user view system:serviceaccount:<3scale-project>:amp
$ oc adm policy add-cluster-role-to-user view system:serviceaccount:<3scale-project>:amp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
new
amp
서비스 계정을 사용하도록 기존 DeploymentConfigs를 모두 업데이트합니다.THREESCALE_DC_NAMES="apicast-production apicast-staging apicast-wildcard-router backend-cron backend-listener backend-redis backend-worker system-app system-memcache system-mysql system-redis system-sidekiq system-sphinx zync zync-database"
$ THREESCALE_DC_NAMES="apicast-production apicast-staging apicast-wildcard-router backend-cron backend-listener backend-redis backend-worker system-app system-memcache system-mysql system-redis system-sidekiq system-sphinx zync zync-database" for component in ${THREESCALE_DC_NAMES}; do oc patch dc $component --patch '{"spec":{"template": {"spec": {"serviceAccountName": "amp"}}}}' ; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령 출력에는 다음 행이 포함됩니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 명령은 재부팅을 트리거하는 모든 3scale 기존 DeploymentConfigs도 재배포합니다.
DeploymentConfig가 재부팅되는 동안 상태의 변경 사항을 확인할 수 있습니다. 모든 DeploymentConfigs가 준비될 때까지 기다립니다.
다음 명령을 입력하여 DeploymentConfig의 상태를 확인하고, 각 DeploymentConfig의 Desired 및 Current 열에 동일한 값이 있고 0과 다른지 확인할 수 있습니다.
oc get dc
$ oc get dc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
또한 모든 Pod가 Running 상태에 있고 모두 Ready 상태인지 확인합니다.
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 모든 DeploymentConfigs에 the
amp
서비스 계정이 다음 명령으로 설정되어 있는지 확인합니다.for component in ${THREESCALE_DC_NAMES}; do oc get dc $component -o yaml | grep -i serviceAccountName; done
$ for component in ${THREESCALE_DC_NAMES}; do oc get dc $component -o yaml | grep -i serviceAccountName; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 명령의 결과로 다음 줄은 이전에 설정된 THREESCALE_DC_NAMES 환경 변수에 정의된 요소 수만큼 여러 번 반복됩니다.
serviceAccountName: amp
serviceAccountName: amp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 이 시점에서 DeploymentConfigurations는 Red Hat 인증된 레지스트리 이미지를 사용할 준비가 되어 있습니다.
2.3. OpenShift 리소스 생성 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 이러한 새 요소를 만드는 데 필요한 단계를 제공합니다. 3scale 2.6 릴리스의 일부로 다음 OpenShift 요소가 추가되었습니다.
데이터베이스의 새로운 ImageStreams:
- backend-redis
- system-redis
- system-memcached
- system-mysql
- zync-database-postgresql
다음 OpenShift 오브젝트가 포함된 New
zync-que
구성 요소:-
zync-que
DeploymentConfig -
zync-que-sa
ServiceAccount -
zync-que
역할 -
zync-que-rolebinding
RoleBinding
-
새 OpenShift 요소를 생성하려면 다음 단계를 따르십시오.
3scale 2.5가 배포되었을 때 WildcardDomain이 설정된 다음 환경 변수를 생성합니다.
THREESCALE_WILDCARD_DOMAIN=$(oc get configmap system-environment -o json | jq .data.THREESCALE_SUPERDOMAIN -r)
$ THREESCALE_WILDCARD_DOMAIN=$(oc get configmap system-environment -o json | jq .data.THREESCALE_SUPERDOMAIN -r)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow THREESCALE_WILDCARD_DOMAIN 환경 변수가 비어 있지 않으며 3scale 2.5를 배포할 때 설정된 Wildcard Domain과 동일한 값이 있는지 확인합니다.
echo ${THREESCALE_WILDCARD_DOMAIN}
$ echo ${THREESCALE_WILDCARD_DOMAIN}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ImageStreams에 설정된
ImportPolicy
ImageStream 값이 포함된 다음 환경 변수를 생성합니다.IMPORT_POLICY_VAL=$(oc get imagestream amp-system -o json | jq -r ".spec.tags[0].importPolicy.insecure")
$ IMPORT_POLICY_VAL=$(oc get imagestream amp-system -o json | jq -r ".spec.tags[0].importPolicy.insecure") if [ "$IMPORT_POLICY_VAL" == "null" ]; then IMPORT_POLICY_VAL="false" fi
Copy to Clipboard Copied! Toggle word wrap Toggle overflow IMPORT_POLICY_VAL 환경 변수가 true 또는 false 인지 확인합니다.
echo ${IMPORT_POLICY_VAL}
$ echo ${IMPORT_POLICY_VAL}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 3scale Pod에서
app
Kubernetes 레이블의 현재 값이 포함된 다음 환경 변수를 생성합니다. 예를 들어backend-listener
Pod에서 가져옵니다.DEPLOYED_APP_LABEL=$(oc get dc backend-listener -o json | jq .spec.template.metadata.labels.app -r)
$ DEPLOYED_APP_LABEL=$(oc get dc backend-listener -o json | jq .spec.template.metadata.labels.app -r)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow DEPLOYED_APP_LABEL 환경 변수가 비어 있지 않거나
null
인지 확인합니다.echo ${DEPLOYED_APP_LABEL}
$ echo ${DEPLOYED_APP_LABEL}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 3scale 2.6
amp.yml 표준 시나리오 템플릿을 사용하여 2.6 릴리스에 대한 새 OpenShift 오브젝트를 배포합니다.
oc new-app -f amp.yml --param WILDCARD_DOMAIN=${THREESCALE_WILDCARD_DOMAIN} --param IMAGESTREAM_TAG_IMPORT_INSECURE=${IMPORT_POLICY_VAL} --param APP_LABEL=${DEPLOYED_APP_LABEL}
$ oc new-app -f amp.yml --param WILDCARD_DOMAIN=${THREESCALE_WILDCARD_DOMAIN} --param IMAGESTREAM_TAG_IMPORT_INSECURE=${IMPORT_POLICY_VAL} --param APP_LABEL=${DEPLOYED_APP_LABEL}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 여러 오류가 표시됩니다. 이는 일부 요소가 3scale 2.5에 이미 존재하기 때문에 예상됩니다. 오류가 발생하지 않는 유일한 행은 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전에 설명한 모든 새 ImageStream과 새로운 zync-que 관련 요소가 모두 있는지 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 명령은 모두 생성된 것을 표시하는 출력을 반환합니다. 또한 다음을 입력하는 경우 다음을 수행합니다.
oc get pods | grep -i zync-que
$ oc get pods | grep -i zync-que
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 상태가 Error 또는 충돌 중임을 나타내는 다른 오류임을 확인할 수 있습니다. Zync 이미지가 현재 업데이트되어 있지 않기 때문일 수 있습니다. 이는 2.8절. “3scale 이미지 업그레이드” 섹션의 4번에서 수행됩니다.
2.4. Redis Enterprise 및 Redis Sentinel에 대한 시스템 DeploymentConfig 구성 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 생성한 secret 필드를 사용하도록 기존 시스템
DeploymentConfigs를 구성하는 데 도움이 됩니다. 이러한 시크릿 필드는 system-redis
에서 환경 변수로 사용됩니다.
system
-redis
시크릿의 시스템 연결에 대한 Redis Enterprise 호환성과 관련된 필드를 추가합니다.oc patch secret/system-redis --patch '{"stringData": {"MESSAGE_BUS_SENTINEL_HOSTS": "", "MESSAGE_BUS_SENTINEL_ROLE": "", "SENTINEL_HOSTS": "", "SENTINEL_ROLE": "", "MESSAGE_BUS_NAMESPACE": "", "MESSAGE_BUS_URL": "", "NAMESPACE": ""}}'
$ oc patch secret/system-redis --patch '{"stringData": {"MESSAGE_BUS_SENTINEL_HOSTS": "", "MESSAGE_BUS_SENTINEL_ROLE": "", "SENTINEL_HOSTS": "", "SENTINEL_ROLE": "", "MESSAGE_BUS_NAMESPACE": "", "MESSAGE_BUS_URL": "", "NAMESPACE": ""}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새 환경 변수를
system-app 컨테이너에
추가합니다.oc patch dc/system-app -p "$(cat redis-patches/system-app-podcontainers.patch)"
$ oc patch dc/system-app -p "$(cat redis-patches/system-app-podcontainers.patch)"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령을 실행하면
system-app
DeploymentConfig가 재부팅됩니다. DeploymentConfig Pod가 재부팅되고 상태가 다시 준비될 때까지 기다립니다.다음 명령으로 DeploymentConfig의 모든 환경 변수를 나열합니다.
oc set env dc a-deployment-config-name --list
$ oc set env dc a-deployment-config-name --list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 이 명령을 실행하여 이 단계의 항목에 있는 각 패치 명령 전후에 환경 변수 목록을 검색합니다.
다음은 명령을 사용하여 환경 변수를 나열할 수 없고 특정 명령을 요구하는 특수한 사례입니다.
pre-hook
Pod:oc get dc system-app -o json | jq .spec.strategy.rollingParams.pre.execNewPod.env
$ oc get dc system-app -o json | jq .spec.strategy.rollingParams.pre.execNewPod.env
Copy to Clipboard Copied! Toggle word wrap Toggle overflow system-sidekiq
initContaineroc get dc system-sidekiq -o json | jq .spec.template.spec.initContainers[0].env
$ oc get dc system-sidekiq -o json | jq .spec.template.spec.initContainers[0].env
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
새 환경 변수를
system-app pre-
hook Pod에 추가합니다.oc patch dc/system-app -p "$(cat redis-patches/system-app-prehookpod-json.patch)" --type json
$ oc patch dc/system-app -p "$(cat redis-patches/system-app-prehookpod-json.patch)" --type json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 명령을 실행한 후에도 기존 환경 변수는 변경되지 않고 남아 있습니다. 또한 system-app의
pre-hook
Pod 및 system-master, system-provisioner, system-provider의 모든 컨테이너에 시스템-secret
시크릿을 소스로 사용하여 새 변수가 추가됩니다.- REDIS_NAMESPACE
- MESSAGE_BUS_REDIS_NAMESPACE
- MESSAGE_BUS_REDIS_URL
- MESSAGE_BUS_REDIS_SENTINEL_HOSTS
- MESSAGE_BUS_REDIS_SENTINEL_ROLE
- REDIS_SENTINEL_HOSTS
- REDIS_SENTINEL_ROLE
- BACKEND_REDIS_SENTINEL_HOSTS
- BACKEND_REDIS_SENTINEL_ROLE
새 환경 변수를
system-sidekiq
에 추가합니다.oc patch dc/system-sidekiq -p "$(cat redis-patches/system-sidekiq.patch)"
$ oc patch dc/system-sidekiq -p "$(cat redis-patches/system-sidekiq.patch)"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령을 실행하면
system-sidekiq
DeploymentConfig가 재부팅됩니다. DeploymentConfig Pod가 재부팅되고 상태가 다시 준비될 때까지 기다립니다.이전 명령을 실행한 후 기존 환경 변수를
system-sidekiq InitContainer의 system-sidekiq
InitContainer에 유지하여 다음 환경 변수가 추가되었습니다.- REDIS_NAMESPACE
- MESSAGE_BUS_REDIS_NAMESPACE
- MESSAGE_BUS_REDIS_URL
- MESSAGE_BUS_REDIS_SENTINEL_HOSTS
- MESSAGE_BUS_REDIS_SENTINEL_ROLE
- REDIS_SENTINEL_HOSTS
REDIS_SENTINEL_ROLE
또한 다음 환경 변수가
system-sidekiq 포드에
추가되었습니다.- REDIS_NAMESPACE
- MESSAGE_BUS_REDIS_NAMESPACE
- MESSAGE_BUS_REDIS_URL
- MESSAGE_BUS_REDIS_SENTINEL_HOSTS
- MESSAGE_BUS_REDIS_SENTINEL_ROLE
- REDIS_SENTINEL_HOSTS
- REDIS_SENTINEL_ROLE
- BACKEND_REDIS_SENTINEL_HOSTS
- BACKEND_REDIS_SENTINEL_ROLE
새 환경 변수를
system-sphinx에 추가합니다
.oc patch dc/system-sphinx -p "$(cat redis-patches/system-sphinx.patch)"
$ oc patch dc/system-sphinx -p "$(cat redis-patches/system-sphinx.patch)"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령을 실행하면
system-sphinx DeploymentConfig가
재부팅됩니다. DeploymentConfig Pod가 재부팅되고 상태가 다시 준비될 때까지 기다립니다.이전 명령을 실행한 후 기존 환경 변수를
system-sphinx Pod
에 유지하여 다음 환경 변수가 추가되었습니다.- REDIS_NAMESPACE
- MESSAGE_BUS_REDIS_NAMESPACE
- MESSAGE_BUS_REDIS_URL
- MESSAGE_BUS_REDIS_SENTINEL_HOSTS
- MESSAGE_BUS_REDIS_SENTINEL_ROLE
- REDIS_SENTINEL_HOSTS
- REDIS_SENTINEL_ROLE
- REDIS_URL
2.5. Redis Sentinel 환경 변수 수정 링크 복사링크가 클립보드에 복사되었습니다!
이 단계에서는 3scale 2.5의 문제를 해결하여 Redis Sentinel 연결 구성이 backend-worker 및
Pod에서 작동하도록 하는 문제를 해결합니다.
backend-
cron
다음 명령을 실행하여 DeploymentConfig InitContainer의 기존 환경 변수를 모두 확인합니다.
oc get dc a-deployment-config-name -o json | jq .spec.template.spec.initContainers[0].env
$ oc get dc a-deployment-config-name -o json | jq .spec.template.spec.initContainers[0].env
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령을 사용하여 이 프로세스에서 실행된 각 패치 명령 전후에 환경 변수 목록을 검색하여 모든 항목이 예상대로 작동하는지 확인합니다.
백엔드 작업자에서 Redis Sentinel 연결 수정 사항을 적용합니다.
oc patch dc/backend-worker -p "$(cat redis-patches/backend-worker.patch)"
$ oc patch dc/backend-worker -p "$(cat redis-patches/backend-worker.patch)"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령을 실행하면 backend-worker
DeploymentConfig의
backend-worker
InitContainer에 다음 환경 변수가 추가되었습니다.- CONFIG_REDIS_PROXY
- CONFIG_REDIS_SENTINEL_HOSTS
- CONFIG_REDIS_SENTINEL_ROLE
- CONFIG_QUEUES_SENTINEL_HOSTS
- CONFIG_QUEUES_SENTINEL_ROLE
- RACK_ENV
backend-cron
에서 Redis Sentinel 연결 수정 사항을 적용합니다.oc patch dc/backend-cron -p "$(cat redis-patches/backend-cron.patch)"
$ oc patch dc/backend-cron -p "$(cat redis-patches/backend-cron.patch)"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령을 실행하면 backend-cron
DeploymentConfig의
backend-cron
InitContainer에 다음 환경 변수가 추가되었습니다.- CONFIG_REDIS_PROXY
- CONFIG_REDIS_SENTINEL_HOSTS
- CONFIG_REDIS_SENTINEL_ROLE
- CONFIG_QUEUES_SENTINEL_HOSTS
- CONFIG_QUEUES_SENTINEL_ROLE
- RACK_ENV
2.6. Zync 환경 변수 수정 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 zync 환경을 업데이트합니다.
oc patch dc zync -p '{"spec": {"template": {"spec": {"containers": [{"name": "zync", "env": [{"name": "POD_NAME", "valueFrom": {"fieldRef": {"apiVersion": "v1", "fieldPath": "metadata.name"}}}, {"name": "POD_NAMESPACE", "valueFrom": {"fieldRef": {"apiVersion": "v1", "fieldPath": "metadata.namespace"}}}]}]}}}}'
oc patch dc zync -p '{"spec": {"template": {"spec": {"containers": [{"name": "zync", "env": [{"name": "POD_NAME", "valueFrom": {"fieldRef": {"apiVersion": "v1", "fieldPath": "metadata.name"}}}, {"name": "POD_NAMESPACE", "valueFrom": {"fieldRef": {"apiVersion": "v1", "fieldPath": "metadata.namespace"}}}]}]}}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7. DeploymentConfig 데이터베이스를 ImageStreams로 마이그레이션 링크 복사링크가 클립보드에 복사되었습니다!
2.6에서는 이미지 URL에 대한 직접 참조 대신 ImageStreams에서 컨테이너 이미지를 가져오도록 데이터베이스가 포함된 배포된 3scale DeploymentConfig가 마이그레이션되었습니다.
backend-redis
DeploymentConfig를 마이그레이션하여 backend-redis ImageStream을 사용합니다.oc patch dc/backend-redis -p "$(cat db-imagestream-patches/backend-redis-json.patch)" --type json
$ oc patch dc/backend-redis -p "$(cat db-imagestream-patches/backend-redis-json.patch)" --type json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
이렇게 하면
backend-redis
DeploymentConfig의 재배포가 트리거되고 DeploymentConfig에backend-redis
ImageStream을 참조하는 ImageChange 트리거가 있습니다. backend-worker
,backend-cron
또는backend-listener
가backend-redis
포드를 재배포할 때까지 일시적으로 실패할 수 있습니다.DeploymentConfig Pod가 재부팅되고 상태가 다시 준비될 때까지 기다립니다.
-
이렇게 하면
system-redis
ImageStream을 사용하도록system-redis
DeploymentConfig 마이그레이션:oc patch dc/system-redis -p "$(cat db-imagestream-patches/system-redis-json.patch)" --type json
$ oc patch dc/system-redis -p "$(cat db-imagestream-patches/system-redis-json.patch)" --type json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
이렇게 하면
system-redis
DeploymentConfig의 재배포가 트리거되고 DeploymentConfig에backend-redis
ImageStream을 참조하는 ImageChange 트리거가 있습니다. - DeploymentConfig Pod가 재부팅되고 상태가 다시 준비될 때까지 기다립니다.
-
이렇게 하면
system-memcache
d ImageStream을 사용하도록 system-memcache
DeploymentConfig를 마이그레이션합니다.oc patch dc/system-memcache -p "$(cat db-imagestream-patches/system-memcached-json.patch)" --type json
$ oc patch dc/system-memcache -p "$(cat db-imagestream-patches/system-memcached-json.patch)" --type json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
이렇게 하면
system-memcache
DeploymentConfig의 재배포가 트리거되고 DeploymentConfig에system-memcached
ImageStream을 참조하는 ImageChange 트리거가 있습니다. - DeploymentConfig Pod가 재부팅되고 상태가 다시 준비될 때까지 기다립니다.
-
이렇게 하면
system-mysql
ImageStream을 사용하도록system-mysql
DeploymentConfig 마이그레이션:oc patch dc/system-mysql -p "$(cat db-imagestream-patches/system-mysql-json.patch)" --type json
$ oc patch dc/system-mysql -p "$(cat db-imagestream-patches/system-mysql-json.patch)" --type json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
이렇게 하면
system-mysql
DeploymentConfig의 재배포가 트리거되고 DeploymentConfig에system-mysql
ImageStream을 참조하는 ImageChange 트리거가 있습니다. - DeploymentConfig Pod가 재부팅되고 상태가 다시 준비될 때까지 기다립니다.
-
이렇게 하면
Migrate
zync-database
DeploymentConfig to usezync-database-postgresql
ImageStream:oc patch dc/zync-database -p "$(cat db-imagestream-patches/zync-database-postgresql.patch)"
$ oc patch dc/zync-database -p "$(cat db-imagestream-patches/zync-database-postgresql.patch)"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
이렇게 하면 the
zync-database
DeploymentConfig의 재배포가 트리거되고 DeploymentConfig에 이제zync-database-postgresql
ImageStream을 참조하는 ImageChange 트리거가 있습니다. -
The
zync
DeploymentConfig 포드는zync-database
를 다시 사용할 수 있을 때까지 일시적으로 실패할 수 있으며, 준비 상태가 다시 준비될 때까지 다소 시간이 걸릴 수 있습니다. 몇 분 후에 모든 'zync' DeploymentConfig Pod가 Ready 상태인지 확인합니다. - 계속하기 전에 DeploymentConfig Pod가 재부팅되고 준비 상태가 다시 준비될 때까지 기다립니다.
-
이렇게 하면 the
더 이상 사용되지 않는
postgresql
ImageStream을 제거합니다.oc delete ImageStream postgresql
$ oc delete ImageStream postgresql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 성공을 확인하려면 다음을 확인합니다.
- 이제 모든 데이터베이스 관련 DeploymentConfigs에서 ImageStream을 사용합니다. 해당 데이터베이스 ImageStream을 가리키는 ImageChange 트리거가 생성되었는지 확인할 수 있습니다.
-
ImageChange 트리거에는
registry.redhat.io
를 가리키는 URL이 포함된lastTriggeredImage
필드가 있습니다.
2.8. 3scale 이미지 업그레이드 링크 복사링크가 클립보드에 복사되었습니다!
amp-system
이미지 스트림을 패치합니다.oc patch imagestream/amp-system --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP system 2.6"}, "from": { "kind": "DockerImage", "name": "registry.redhat.io/3scale-amp26/system"}, "name": "2.6", "referencePolicy": {"type": "Source"}}}]' oc patch imagestream/amp-system --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP system (latest)"}, "from": { "kind": "ImageStreamTag", "name": "2.6"}, "name": "latest", "referencePolicy": {"type": "Source"}}}]'
$ oc patch imagestream/amp-system --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP system 2.6"}, "from": { "kind": "DockerImage", "name": "registry.redhat.io/3scale-amp26/system"}, "name": "2.6", "referencePolicy": {"type": "Source"}}}]' $ oc patch imagestream/amp-system --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP system (latest)"}, "from": { "kind": "ImageStreamTag", "name": "2.6"}, "name": "latest", "referencePolicy": {"type": "Source"}}}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이는
system-app, system-
sphinx및
DeploymentConfigs의 재배포를 트리거합니다. 재배포될 때까지 기다린 후 해당 새 포드가 준비되고 이전 Pod가 종료될 때까지 기다립니다.system-
sidekiq참고Oracle Database를 사용하는 경우 Oracle Database와 함께 3scale 시스템 이미지의 지침에 따라 위의 지침을 실행한 후 시스템 이미지를 다시 빌드해야 합니다. https://access.redhat.com/documentation/en-us/red_hat_3scale_api_management/2.6/html/installing_3scale/system-oracle-support
amp-apicast
이미지 스트림을 패치합니다.oc patch imagestream/amp-apicast --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP APIcast 2.6"}, "from": { "kind": "DockerImage", "name": "registry.redhat.io/3scale-amp26/apicast-gateway"}, "name": "2.6", "referencePolicy": {"type": "Source"}}}]' oc patch imagestream/amp-apicast --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP APIcast (latest)"}, "from": { "kind": "ImageStreamTag", "name": "2.6"}, "name": "latest", "referencePolicy": {"type": "Source"}}}]'
$ oc patch imagestream/amp-apicast --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP APIcast 2.6"}, "from": { "kind": "DockerImage", "name": "registry.redhat.io/3scale-amp26/apicast-gateway"}, "name": "2.6", "referencePolicy": {"type": "Source"}}}]' $ oc patch imagestream/amp-apicast --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP APIcast (latest)"}, "from": { "kind": "ImageStreamTag", "name": "2.6"}, "name": "latest", "referencePolicy": {"type": "Source"}}}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이는
apicast-production 및
DeploymentConfigs의 재배포를 트리거합니다. 재배포될 때까지 기다린 후 해당 새 포드가 준비되고 이전 Pod가 종료될 때까지 기다립니다.apicast-
stagingamp-backend
이미지 스트림을 패치합니다.oc patch imagestream/amp-backend --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP Backend 2.6"}, "from": { "kind": "DockerImage", "name": "registry.redhat.io/3scale-amp26/backend"}, "name": "2.6", "referencePolicy": {"type": "Source"}}}]' oc patch imagestream/amp-backend --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP Backend (latest)"}, "from": { "kind": "ImageStreamTag", "name": "2.6"}, "name": "latest", "referencePolicy": {"type": "Source"}}}]'
$ oc patch imagestream/amp-backend --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP Backend 2.6"}, "from": { "kind": "DockerImage", "name": "registry.redhat.io/3scale-amp26/backend"}, "name": "2.6", "referencePolicy": {"type": "Source"}}}]' $ oc patch imagestream/amp-backend --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP Backend (latest)"}, "from": { "kind": "ImageStreamTag", "name": "2.6"}, "name": "latest", "referencePolicy": {"type": "Source"}}}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이렇게 하면
backend-listener, backend-
worker,
DeploymentConfigs의 재배포가 트리거됩니다. 재배포될 때까지 기다린 후 해당 새 포드가 준비되고 이전 Pod가 종료될 때까지 기다립니다.backend-
cronamp-zync
이미지 스트림을 패치합니다.oc patch imagestream/amp-zync --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP Zync 2.6"}, "from": { "kind": "DockerImage", "name": "registry.redhat.io/3scale-amp26/zync"}, "name": "2.6", "referencePolicy": {"type": "Source"}}}]' oc patch imagestream/amp-zync --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP Zync (latest)"}, "from": { "kind": "ImageStreamTag", "name": "2.6"}, "name": "latest", "referencePolicy": {"type": "Source"}}}]'
$ oc patch imagestream/amp-zync --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP Zync 2.6"}, "from": { "kind": "DockerImage", "name": "registry.redhat.io/3scale-amp26/zync"}, "name": "2.6", "referencePolicy": {"type": "Source"}}}]' $ oc patch imagestream/amp-zync --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP Zync (latest)"}, "from": { "kind": "ImageStreamTag", "name": "2.6"}, "name": "latest", "referencePolicy": {"type": "Source"}}}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
이렇게 하면
zync 및
DeploymentConfigs의 재배포가 트리거됩니다. 재배포될 때까지 기다린 후 해당 새 포드가 준비되고 이전 Pod가 종료될 때까지 기다립니다.zync
-que -
또한 이전 섹션에서 생성할 때 Error 상태이고 해당 Pod가 Ready 상태의 상태인 that
zync-que
가 표시됩니다.
-
이렇게 하면
표시되는 릴리스 버전을 업데이트합니다.
oc set env dc/system-app AMP_RELEASE=2.6
$ oc set env dc/system-app AMP_RELEASE=2.6
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 그러면
system-app
DeploymentConfig의 재배포가 트리거됩니다. 작업이 수행되고 해당 Pod가 준비되고 이전 Pod가 종료될 때까지 기다립니다.마지막으로 DeploymentConfigs의 모든 이미지 URL에 새 이미지 레지스트리 URL이 포함되어 있는지 확인할 수 있습니다(각 URL 끝에 해시가 추가됨).
THREESCALE_DC_NAMES="apicast-production apicast-staging apicast-wildcard-router backend-cron backend-listener backend-redis backend-worker system-app system-memcache system-mysql system-redis system-sidekiq system-sphinx zync zync-database"
$ THREESCALE_DC_NAMES="apicast-production apicast-staging apicast-wildcard-router backend-cron backend-listener backend-redis backend-worker system-app system-memcache system-mysql system-redis system-sidekiq system-sphinx zync zync-database" for component in ${THREESCALE_DC_NAMES}; do echo -n "${component} image: " && oc get dc $component -o json | jq .spec.template.spec.containers[0].image ; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.9. WildcardRouter에서 Zync Route Management로 마이그레이션 링크 복사링크가 클립보드에 복사되었습니다!
3scale 2.6에서는 WildcardRouter 구성 요소와 와일드카드 OpenShift 경로가 제거되었으며 이제 Zync 하위 시스템에서 관리하는 개별 OpenShift 경로로 생성됩니다. 이 절차에서는 WildcardRouter에서 Zync로 경로 관리 마이그레이션을 자세히 설명합니다.
이 시점에서 모든 3scale 이미지가 3scale 2.6으로 업그레이드되었습니다. 3scale 서비스 및 테넌트에 해당하는 OpenShift 경로 생성 및 삭제는 Zync 하위 시스템에서 자동으로 관리합니다. 또한 이전 섹션에서 수행한 새로운 OpenShift 요소를 추가하여 모든 새로운 Zync 인프라를 사용할 수 있습니다.
OpenShift 경로 관리를 WildcardRouter에서 Zync로 마이그레이션하려면 OpenShift 경로 및 와일드카드 경로와 관련된 이전 3scale 테넌트 및 서비스를 제거한 다음 Zync에서 기존 서비스 및 테넌트를 강제로 다시 평가해야 합니다. 그러면 Zync가 현재 보유하고 있는 것과 동일한 경로를 만들 수 있습니다.
공용 기본 URL이 수정되면 이벤트가 system-app에서 트리거되고 system-
redis에 저장된 작업 대기열을 통해 system-
sidekiq
에 알립니다. 그런 다음 작업이 백그라운드에서 처리되고 데이터가 이미 존재하는지 thezync -db인지 확인하는 zync
로 전송됩니다. 변경 사항을 감지하면 처리된 in zync-que
작업을 통해 새 경로를 생성합니다.
어떤 작업을 수행하기 전에 SSL 인증서를 일부 경로에 수동으로 설치한 경우 경로에 할당된 인증서를 복사하고 각 인증서에 할당된 경로를 기록해야 합니다. 인증서 기능을 유지하려면 Zync에서 생성할 새로운 동등한 경로에 설치해야 합니다.
- 서비스는 기본적으로 호스팅된 옵션으로 마이그레이션됩니다.
- Public Base URL은 자동으로 채워지며 경로는 Zync에 의해 생성됩니다.
- 1 단계는 self_managed 옵션을 사용하여 외부 APIcast 게이트웨이를 구성하는 경우에만 필요합니다.
- 3scale_managed 옵션을 선택하면 Zync에서 경로가 자동으로 관리됩니다.
절차
Zync가 외부 게이트웨이의 경로를 관리하지 않는다는 점을 고려할 때 제안된 대안 중 하나에 따라 Zync에서 관리하지 않는 각 서비스의 배포 옵션을 수정할 수 있습니다.
3scale에서:
- 통합 페이지로 이동하여 통합 설정 편집을 클릭합니다.
- 올바른 배포 옵션을 선택하고 다음과 같은 경우 변경 사항을 저장합니다.
API 사용:
액세스 토큰(ACCESS
_TOKEN) 및 테넌트 끝점(
)을 사용하여 서비스TENANT_
URLID
를 사용하여 서비스를 업데이트합니다.curl -XPUT "${TENANT_URL}/admin/api/services/${ID}.json" -d deployment_option=self_managed -d access_token="${ACCESS_TOKEN}"
$ curl -XPUT "${TENANT_URL}/admin/api/services/${ID}.json" -d deployment_option=self_managed -d access_token="${ACCESS_TOKEN}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 또는 APIcast 호스팅을 사용하는 경우 아래 명령을 사용할 수 있습니다.
curl -XPUT "${TENANT_URL}/admin/api/services/${ID}.json" -d deployment_option=hosted -d access_token="${ACCESS_TOKEN}"
$ curl -XPUT "${TENANT_URL}/admin/api/services/${ID}.json" -d deployment_option=hosted -d access_token="${ACCESS_TOKEN}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 각 테넌트의 각 서비스에 대해 3scale 또는 API를 통해
deployment_option
필드를 수정합니다.다음은
deployment_option을
로 설정할 수 있는 경우입니다.self_
managed- APIcast는 OpenShift의 사용자 정의 경로에 연결됩니다.
- APIcast는 OpenShift 외부에서 호스팅됩니다.
-
APICAST_PATH_ROUTING
이true
로 설정되어 있습니다.
-
다른 경우에는
deployment_option
을hosted
로 설정합니다.
기존 경로 중 일부는 2.5에서 3scale에 의해 자동으로 생성되었습니다. 먼저 삭제하십시오.
oc delete route system-master oc delete route system-provider-admin oc delete route system-developer oc delete route api-apicast-production oc delete route api-apicast-staging
$ oc delete route system-master $ oc delete route system-provider-admin $ oc delete route system-developer $ oc delete route api-apicast-production $ oc delete route api-apicast-staging
Copy to Clipboard Copied! Toggle word wrap Toggle overflow WILDCARD_POLICY=Subdomain
을 사용하여 3scale 2.5를 배포한 경우 다음을 사용하여 와일드카드 경로를 제거해야 합니다.oc delete route apicast-wildcard-router
$ oc delete route apicast-wildcard-router
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
그렇지 않으면,
WILDCARD_POLICY=Subdomain
없이 3scale 2.5를 배포한 경우 Zync가 생성할 경로를 복제하지 않도록 3scale 테넌트 및 서비스에 대해 수동으로 생성한 경로를 제거해야 합니다.
이 시점에서 서비스 및 테넌트와 관련된 모든 경로가 제거되어야 합니다. 이제 Zync에서 동등한 경로를 생성합니다.
Zync를 사용하여 모든 3scale 서비스 및 테넌트 OpenShift 경로를 강제로 다시 동기화합니다.
SYSTEM_SIDEKIQ_POD=$(oc get pods | grep sidekiq | awk '{print $1}')
$ SYSTEM_SIDEKIQ_POD=$(oc get pods | grep sidekiq | awk '{print $1}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SYSTEM_SIDEKIQ_POD 환경 변수 결과가 비어 있지 않은지 확인합니다.
echo ${SYSTEM_SIDEKIQ_POD}
$ echo ${SYSTEM_SIDEKIQ_POD}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 마지막으로 resynchronization을 수행합니다.
oc exec -it ${SYSTEM_SIDEKIQ_POD} -- bash -c 'bundle exec rake zync:resync:domains'
$ oc exec -it ${SYSTEM_SIDEKIQ_POD} -- bash -c 'bundle exec rake zync:resync:domains'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 시스템 알림에 대한 정보와 함께 이 스타일의 출력이 표시됩니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Zync가 모든 기존 테넌트 및 서비스에 대해 새 경로가 생성됩니다. 경로 생성에는 서비스 및 테넌트 수에 따라 몇 분이 걸릴 수 있습니다.
프로세스가 끝나면 다음이 생성됩니다.
마스터 관리 포털 경로 1개
3scale 테넌트마다 두 개의 경로가 생성됩니다.
- 테넌트의 관리 포털 경로.
테넌트의 개발자 포털 경로.
3scale 서비스마다 두 개의 경로가 생성됩니다.
- 서비스에 해당하는 APIcast 스테이징 경로입니다.
- 서비스에 해당하는 APIcast 프로덕션 경로입니다.
위에서 설명한 모든 예상 경로가 기존 서비스 및 테넌트에 대해 생성되었는지 확인합니다. 다음을 실행하여 모든 경로를 볼 수 있습니다.
oc get routes
$ oc get routes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 명령의 출력으로 표시된 host/port 필드는 경로의 URL이어야 합니다.
-
WILDCARD_POLICY를
Subdomain
으로 설정하여 3scale 2.5를 배포한 경우 모든 새 경로는 이전 OpenShift 와일드카드 경로와 동일한 기본 WildcardDomain을 보유해야 합니다. - 그렇지 않으면 WILDCARD_POLICY=Subdomain 없이 3scale 2.5를 배포한 경우 새 경로는 2.5 릴리스에서 3scale에 의해 자동으로 생성된 항목을 포함하여 제거된 경로와 동일한 호스트를 보유해야 합니다.
-
WILDCARD_POLICY를
- 마지막으로 이전 와일드카드 경로에 사용자 지정 SSL 인증서를 사용하거나 수동으로 생성한 경로를 사용하는 경우 Zync에서 생성한 새 경로에 설치합니다. OpenShift 웹 패널을 통해 경로를 편집하고 인증서/s를 추가하여 수행할 수 있습니다.
새 경로를 사용하여 이 마이그레이션 전에 존재했던 서비스 및 테넌트를 계속 확인할 수 있는지 확인합니다. 다음 테스트를 수행하려면 다음을 수행합니다.
- 이 마이그레이션 전에 이미 존재하는 3scale 서비스에 연결된 기존 APIcast 프로덕션 URL의 경로를 해결합니다.
- 이 마이그레이션 전에 이미 존재하는 3scale 서비스에 연결된 기존 APIcast 스테이징 URL의 경로를 해결합니다.
- 이 마이그레이션 전에 이미 존재하는 기존 테넌트의 경로를 확인합니다.
새로운 Zync 기능이 작동하는지 확인할 때 새 테넌트 및 서비스를 생성할 때 새 경로가 생성되는지 확인합니다. 다음 테스트를 수행하려면 다음을 수행합니다.
- '마스터' 패널에서 새 테넌트를 만들고 몇 초 후에 OpenShift에 연결된 새 경로가 표시되는지 확인합니다.
- 기존 테넌트 중 하나에서 새 서비스를 생성하고 몇 초 후에 OpenShift에 연결된 새 경로가 표시되는지 확인합니다.
apicast-wildcard-router 서비스를 제거합니다.
oc delete service apicast-wildcard-router
$ oc delete service apicast-wildcard-router
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 더 이상 사용되지 않는 WildcardRouter 하위 시스템을 제거합니다.
oc delete ImageStream amp-wildcard-router oc delete DeploymentConfig apicast-wildcard-router
$ oc delete ImageStream amp-wildcard-router $ oc delete DeploymentConfig apicast-wildcard-router
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 나열된 모든 단계를 수행한 후 2.5에서 2.6으로 3scale 업그레이드가 완료되었습니다.