1.2. 템플릿 기반 설치에서 2.7에서 2.8으로 업그레이드
이 섹션에 설명된 절차에 따라 템플릿 기반 설치에서 3scale 2.7을 2.8로 업그레이드하십시오.
업그레이드를 시작하려면 3scale이 배포된 프로젝트로 이동합니다.
$ oc project <3scale-project>
다음 단계를 순서대로 수행합니다.
- 1.2.1절. “3scale 프로젝트의 백업 생성”
-
1.2.2절. “
smtpConfigMap을system-smtp시크릿으로 마이그레이션” -
1.2.3절. “
system-appDeploymentConfig의pre-hook pod명령 업데이트” -
1.2.4절. “
system환경 패치”-appDeploymentConfig의 pre-hook Pod -
1.2.5절. “
system-appDeploymentConfig 컨테이너의 환경 패치” -
1.2.6절. “
system-sidekiqDeploymentConfig 컨테이너의 환경 패치” - 1.2.7절. “S3 특정 구성 마이그레이션”
- 1.2.8절. “3scale 버전 번호 업데이트”
- 1.2.9절. “3scale 이미지 업그레이드”
-
1.2.10절. “
smtpConfigMap 삭제”
1.2.1. 3scale 프로젝트의 백업 생성 링크 복사링크가 클립보드에 복사되었습니다!
이전 단계
없음.
현재 단계
이 단계에서는 3scale 프로젝트의 백업을 생성하는 데 필요한 작업이 나열됩니다.
3scale과 함께 사용되는 데이터베이스에 따라 다음 값 중 하나를 사용하여 ${SYSTEM_DB}를 설정합니다.
-
데이터베이스가 MySQL인 경우
SYSTEM_DB=system-mysql. -
데이터베이스가 PostgreSQL인 경우
SYSTEM_DB=system-postgresql.
-
데이터베이스가 MySQL인 경우
기존 DeploymentConfigs를 사용하여 백업 파일을 생성합니다.
$ THREESCALE_DC_NAMES="apicast-production apicast-staging backend-cron backend-listener backend-redis backend-worker system-app system-memcache ${SYSTEM_DB} system-redis system-sidekiq system-sphinx zync zync-database zync-que" for component in ${THREESCALE_DC_NAMES}; do oc get --export -o yaml dc ${component} > ${component}_dc.yml ; doneexport all명령을 통해 내보낸 프로젝트에서 기존 OpenShift 리소스를 모두 백업합니다.$ oc get -o yaml --export all > threescale-project-elements.yamlexport all명령으로 내보내지 않는 추가 요소를 사용하여 백업 파일을 생성합니다.$ 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 > $object.yaml done- 생성된 모든 파일이 비어 있지 않으며 모든 파일에 필요한 콘텐츠가 있는지 확인합니다.
1.2.2. smtp ConfigMap을 system-smtp 시크릿으로 마이그레이션 링크 복사링크가 클립보드에 복사되었습니다!
현재 단계
이 단계의 목표는 시스템의 SMTP 구성을 ConfigMap에서 Secret으로 마이그레이션하는 것입니다. 이 마이그레이션에는 메일링 관련 측면이 포함됩니다. SMTP 구성에 중요한 정보가 포함되어 있기 때문입니다. 이 정보를 보호하기 위해 보안은 ConfigMaps보다 더 안전합니다.
app레이블의 현재 값을 수집합니다.$ DEPLOYED_APP_LABEL=$(oc get dc backend-listener -o json | jq .spec.template.metadata.labels.app -r)다음 명령을 실행하여 DEPLOYED_APP_LABEL이 비어 있지 않은지 확인할 수 있습니다.
$ echo ${DEPLOYED_APP_LABEL}
smtpConfigMap의 현재 콘텐츠를 수집합니다.$ CFGMAP_DATA_CONTENTS=$(oc get configmap smtp -o json | jq -r .data)다음 명령을 실행하여 CFGMAP_DATA_CONTENTS가 비어 있지 않은지 확인할 수 있습니다.
$ echo ${CFGMAP_DATA_CONTENTS}다음 명령을 실행하여 CFGMAP_DATA_CONTENTS 값을 확인할 수 있습니다.
$ oc get configmap smtp -o json | jq -r .data
smtpConfigMap의 콘텐츠를 사용하여system-smtp보안을 생성합니다.$ cat <<EOF | oc create -f - { "apiVersion": "v1", "kind": "Secret", "metadata": { "creationTimestamp": null, "labels": { "app": "${DEPLOYED_APP_LABEL}", "threescale_component": "system", "threescale_component_element": "smtp" }, "name": "system-smtp" }, "stringData": ${CFGMAP_DATA_CONTENTS} } EOF다음을 실행하여
system-smtp시크릿이 생성되었는지 확인합니다.$ oc get secret system-smtp -o yaml모든 데이터 키와 관련 값이
system-smtpsecret 및smtpConfigMap 모두에서 동일한지 확인합니다.system-smtp시크릿의 데이터 값은 base64로 인코딩되므로 실제 값을 보기 위해 디코딩해야 합니다. 예를 들어 시크릿 데이터의 키 이름이 mykey 인 경우 해당 키에 연결된 값을 복사하고 다음 명령으로 디코딩하여 실제 값을 확인할 수 있습니다.$ oc get secret system-smtp -o json | jq -r .data.mykey | base64 -d키와 연결된 값이 빈 문자열인 경우 이전 명령의 결과에 출력이 없습니다.
1.2.3. system-app DeploymentConfig의 pre-hook pod 명령 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
현재 단계
3scale의 최신 기능을 가져오기 위해 이 단계에서는 system-app DeploymentConfig에서 pre-hook pod 명령을 업데이트하는 방법을 설명합니다.
system-appDeploymentConfig에서 pre-hook pod 명령을 이 릴리스에 필요한 새 Pod 명령으로 업데이트합니다.oc patch dc/system-app -p '{"spec":{"strategy":{"rollingParams":{"pre":{"execNewPod":{"command":["bash","-c","bundle exec rake boot openshift:deploy"]}}}}}}'pre-hook pod명령이 새 값으로 변경되었는지 확인합니다.oc get dc system-app -o json | jq .spec.strategy.rollingParams.pre.execNewPod.command이전 명령의 결과는 다음과 같아야 합니다.
[ "bash", "-c", "bundle exec rake boot openshift:deploy" ]
1.2.4. system -app DeploymentConfig의 pre-hook Pod 환경 패치 링크 복사링크가 클립보드에 복사되었습니다!
현재 단계
이 단계에서는 pre-hook Pod 환경에서 system-app DeploymentConfig에 환경 변수를 추가합니다. 또한 SMTP 관련 환경 변수가 새로 생성된 system-smtp 시크릿 을 가리키도록 합니다. 또한 pre-hook pod 명령 수정과 관련된 변수가 올바르게 구성됩니다.
system-appDeploymentConfig에서pre-hook pod환경 변수를 패치합니다.oc get dc system-app -o json | jq 'del(.spec.strategy.rollingParams.pre.execNewPod.env[] | select(.name == "SMTP_ADDRESS" // .name == "SMTP_USER_NAME" // .name == "SMTP_PASSWORD" // .name == "SMTP_DOMAIN" // .name == "SMTP_PORT" // .name == "SMTP_AUTHENTICATION" // .name == "SMTP_OPENSSL_VERIFY_MODE")) | .spec.strategy.rollingParams.pre.execNewPod.env += [{"name":"SMTP_ADDRESS","valueFrom":{"secretKeyRef":{"key":"address","name":"system-smtp"}}},{"name":"SMTP_USER_NAME","valueFrom":{"secretKeyRef":{"key":"username","name":"system-smtp"}}},{"name":"SMTP_PASSWORD","valueFrom":{"secretKeyRef":{"key":"password","name":"system-smtp"}}},{"name":"SMTP_DOMAIN","valueFrom":{"secretKeyRef":{"key":"domain","name":"system-smtp"}}},{"name":"SMTP_PORT","valueFrom":{"secretKeyRef":{"key":"port","name":"system-smtp"}}},{"name":"SMTP_AUTHENTICATION","valueFrom":{"secretKeyRef":{"key":"authentication","name":"system-smtp"}}},{"name":"SMTP_OPENSSL_VERIFY_MODE","valueFrom":{"secretKeyRef":{"key":"openssl.verify.mode","name":"system-smtp"}}},{"name":"MASTER_ACCESS_TOKEN","valueFrom":{"secretKeyRef":{"key":"MASTER_ACCESS_TOKEN","name":"system-seed"}}}]' | oc apply -f -다음 작업 포인트를 따라
pre-hook Pod환경이 패치되었는지 확인합니다.ECDHETER_ACCESS_TOKEN이
system-apppre-hook Pod에서 시크릿 참조로 설정되어 있는지 확인합니다.oc get dc system-app -o json | jq '.spec.strategy.rollingParams.pre.execNewPod.env | map(select(.name == "MASTER_ACCESS_TOKEN")) | length'예상 출력:
1ECDHETER_ACCESS_TOKEN이
시스템이적용된 시크릿을 올바르게 가리키는지 확인할 수 있습니다.oc get dc system-app -o json | jq '.spec.strategy.rollingParams.pre.execNewPod.env | map(select(.name == "MASTER_ACCESS_TOKEN"))'예상 출력:
[ { "name": "MASTER_ACCESS_TOKEN", "valueFrom": { "secretKeyRef": { "key": "MASTER_ACCESS_TOKEN", "name": "system-seed" } } } ]
모든 SMTP_* env vars가
system-apppre-hook Pod에서 시크릿 참조로 설정되어 있는지 확인합니다.oc get dc system-app -o json | jq '.spec.strategy.rollingParams.pre.execNewPod.env | map(select(.name | contains("SMTP")))'아래 출력 목록의 각 환경 변수는
system-smtp보안 키에 대한 참조여야 합니다.- SMTP_ADDRESS
- SMTP_USER_NAME
- SMTP_PASSWORD
- SMTP_DOMAIN
- SMTP_PORT
- SMTP_AUTHENTICATION
- SMTP_OPENSSL_VERIFY_MODE
1.2.5. system-app DeploymentConfig 컨테이너의 환경 패치 링크 복사링크가 클립보드에 복사되었습니다!
현재 단계
이 절차에서는 system-app 컨테이너 환경에 환경 변수를 추가하고 수정합니다. 이를 통해 SMTP 관련 환경 변수가 새로 생성된 system-smtp 시크릿을 가리키도록 합니다.
system-appDeploymentConfig에 컨테이너 환경 변수를 패치합니다.oc patch dc/system-app -p '{"spec":{"template":{"spec":{"containers":[{"name":"system-master","env":[{"name":"SMTP_ADDRESS","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"address","name":"system-smtp"}}},{"name":"SMTP_USER_NAME","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"username","name":"system-smtp"}}},{"name":"SMTP_PASSWORD","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"password","name":"system-smtp"}}},{"name":"SMTP_DOMAIN","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"domain","name":"system-smtp"}}},{"name":"SMTP_PORT","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"port","name":"system-smtp"}}},{"name":"SMTP_AUTHENTICATION","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"authentication","name":"system-smtp"}}},{"name":"SMTP_OPENSSL_VERIFY_MODE","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"openssl.verify.mode","name":"system-smtp"}}}]},{"name":"system-provider","env":[{"name":"SMTP_ADDRESS","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"address","name":"system-smtp"}}},{"name":"SMTP_USER_NAME","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"username","name":"system-smtp"}}},{"name":"SMTP_PASSWORD","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"password","name":"system-smtp"}}},{"name":"SMTP_DOMAIN","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"domain","name":"system-smtp"}}},{"name":"SMTP_PORT","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"port","name":"system-smtp"}}},{"name":"SMTP_AUTHENTICATION","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"authentication","name":"system-smtp"}}},{"name":"SMTP_OPENSSL_VERIFY_MODE","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"openssl.verify.mode","name":"system-smtp"}}}]},{"name":"system-developer","env":[{"name":"SMTP_ADDRESS","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"address","name":"system-smtp"}}},{"name":"SMTP_USER_NAME","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"username","name":"system-smtp"}}},{"name":"SMTP_PASSWORD","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"password","name":"system-smtp"}}},{"name":"SMTP_DOMAIN","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"domain","name":"system-smtp"}}},{"name":"SMTP_PORT","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"port","name":"system-smtp"}}},{"name":"SMTP_AUTHENTICATION","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"authentication","name":"system-smtp"}}},{"name":"SMTP_OPENSSL_VERIFY_MODE","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"openssl.verify.mode","name":"system-smtp"}}}]}]}}}}'여기에 나열된
system-app컨테이너에서 모든 SMTP_* env vars가 시크릿 참조로 설정되어 있는지 확인합니다.system-developeroc get dc system-app -o json | jq '.spec.template.spec.containers | map(select(.name == "system-developer"))[].env | map(select(.name | contains("SMTP")))'system-provideroc get dc system-app -o json | jq '.spec.template.spec.containers | map(select(.name == "system-provider"))[].env | map(select(.name | contains("SMTP")))'system-masteroc get dc system-app -o json | jq '.spec.template.spec.containers | map(select(.name == "system-master"))[].env | map(select(.name | contains("SMTP")))'이러한 컨테이너에서 아래 출력 목록의 환경 변수는
system-smtp보안 키에 대한 참조여야 합니다.- SMTP_ADDRESS
- SMTP_USER_NAME
- SMTP_PASSWORD
- SMTP_DOMAIN
- SMTP_PORT
- SMTP_AUTHENTICATION
- SMTP_OPENSSL_VERIFY_MODE
1.2.6. system-sidekiq DeploymentConfig 컨테이너의 환경 패치 링크 복사링크가 클립보드에 복사되었습니다!
현재 단계
이 절차에서는 system-sidekiq pod 환경에 환경 변수를 추가하고 수정합니다. 여기에 나열된 단계를 통해 SMTP 관련 환경 변수가 새로 생성된 system-smtp 시크릿을 가리키도록 합니다.
system-sidekiqDeploymentConfig의 환경 변수를 패치합니다.oc patch dc/system-sidekiq -p '{"spec":{"template":{"spec":{"containers":[{"name":"system-sidekiq","env":[{"name":"SMTP_ADDRESS","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"address","name":"system-smtp"}}},{"name":"SMTP_USER_NAME","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"username","name":"system-smtp"}}},{"name":"SMTP_PASSWORD","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"password","name":"system-smtp"}}},{"name":"SMTP_DOMAIN","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"domain","name":"system-smtp"}}},{"name":"SMTP_PORT","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"port","name":"system-smtp"}}},{"name":"SMTP_AUTHENTICATION","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"authentication","name":"system-smtp"}}},{"name":"SMTP_OPENSSL_VERIFY_MODE","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"openssl.verify.mode","name":"system-smtp"}}}]}]}}}}'모든 SMTP_* 환경 변수가 시크릿 참조로 설정되어 있는지 확인합니다.
oc get dc system-sidekiq -o json | jq '.spec.template.spec.containers | map(select(.name == "system-sidekiq"))[].env | map(select(.name | contains("SMTP")))'아래 출력 목록의 각 환경 변수는
system-smtp보안 키에 대한 참조여야 합니다.- SMTP_ADDRESS
- SMTP_USER_NAME
- SMTP_PASSWORD
- SMTP_DOMAIN
- SMTP_PORT
- SMTP_AUTHENTICATION
- SMTP_OPENSSL_VERIFY_MODE
다음 단계
-
Amazon Simple Storage Service(Amazon S3)와 함께
amp-s3템플릿인 1.2.2절. “smtpConfigMap을system-smtp시크릿으로 마이그레이션” 을 사용하여 3scale 2.7을 배포한 경우. -
3scale 2.7에
amp-s3템플릿을 설치하지 않은 경우 1.2.8절. “3scale 버전 번호 업데이트”
1.2.7. S3 특정 구성 마이그레이션 링크 복사링크가 클립보드에 복사되었습니다!
3scale 2.7에 amp-s3 템플릿을 설치한 경우 이 단계의 지침을 따르십시오. 그렇지 않으면 다음 단계를 통해 업그레이드를 계속합니다. 1.2.8절. “3scale 버전 번호 업데이트”
현재 단계
이 단계에서는 system-environment ConfigMap에서 aws-auth secret으로 구성을 S3와 관련된 구성을 마이그레이션하는 작업이 나열됩니다.
기존
aws-auth보안에 값을 추가합니다.oc patch secret aws-auth --patch "{\"stringData\": $(oc get configmap system-environment -o json | jq '.data | {"AWS_BUCKET": .AWS_BUCKET, "AWS_REGION": .AWS_REGION } ')}"키와 해당 값이
aws-auth보안에 추가되었는지 확인합니다. 이러한 값은 base64로 인코딩됩니다.oc get secret aws-auth -o yaml
system-appDeploymentConfig의 pre-hook Pod 환경 변수를 패치합니다.oc get dc system-app -o json | jq 'del(.spec.strategy.rollingParams.pre.execNewPod.env[] | select(.name == "AWS_BUCKET" // .name == "AWS_REGION")) | .spec.strategy.rollingParams.pre.execNewPod.env += [{"name":"AWS_BUCKET","valueFrom":{"secretKeyRef":{"key":"AWS_BUCKET","name":"aws-auth"}}},{"name":"AWS_REGION","valueFrom":{"secretKeyRef":{"key":"AWS_REGION","name":"aws-auth"}}},{"name":"AWS_PROTOCOL","valueFrom":{"secretKeyRef":{"key":"AWS_PROTOCOL","name":"aws-auth", "optional": true}}},{"name":"AWS_HOSTNAME","valueFrom":{"secretKeyRef":{"key":"AWS_HOSTNAME","name":"aws-auth", "optional": true}}},{"name":"AWS_PATH_STYLE","valueFrom":{"secretKeyRef":{"key":"AWS_PATH_STYLE","name":"aws-auth", "optional": true}}}]' | oc apply -f -모든 AWS_* 환경 변수가
system-apppre-hook Pod에서 시크릿 참조로 설정되어 있는지 확인합니다.oc get dc system-app -o json | jq '.spec.strategy.rollingParams.pre.execNewPod.env | map(select(.name | contains("AWS")))'아래 출력 목록의 각 환경 변수는
aws-authsecret 키에 대한 참조여야 합니다.- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- AWS_BUCKET
- AWS_REGION
- AWS_PROTOCOL
- AWS_HOSTNAME
- AWS_PATH_STYLE
system-appDeploymentConfig에 컨테이너 환경 변수를 패치합니다.oc patch dc/system-app -p '{"spec":{"template":{"spec":{"containers":[{"name":"system-master","env":[{"name":"AWS_BUCKET","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"AWS_BUCKET","name":"aws-auth"}}},{"name":"AWS_REGION","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"AWS_REGION","name":"aws-auth"}}},{"name":"AWS_PROTOCOL","valueFrom":{"secretKeyRef":{"key":"AWS_PROTOCOL","name":"aws-auth", "optional": true}}},{"name":"AWS_HOSTNAME","valueFrom":{"secretKeyRef":{"key":"AWS_HOSTNAME","name":"aws-auth", "optional": true}}},{"name":"AWS_PATH_STYLE","valueFrom":{"secretKeyRef":{"key":"AWS_PATH_STYLE","name":"aws-auth", "optional": true}}}]},{"name":"system-provider","env":[{"name":"AWS_BUCKET","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"AWS_BUCKET","name":"aws-auth"}}},{"name":"AWS_REGION","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"AWS_REGION","name":"aws-auth"}}},{"name":"AWS_PROTOCOL","valueFrom":{"secretKeyRef":{"key":"AWS_PROTOCOL","name":"aws-auth", "optional": true}}},{"name":"AWS_HOSTNAME","valueFrom":{"secretKeyRef":{"key":"AWS_HOSTNAME","name":"aws-auth", "optional": true}}},{"name":"AWS_PATH_STYLE","valueFrom":{"secretKeyRef":{"key":"AWS_PATH_STYLE","name":"aws-auth", "optional": true}}}]},{"name":"system-developer","env":[{"name":"AWS_BUCKET","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"AWS_BUCKET","name":"aws-auth"}}},{"name":"AWS_REGION","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"AWS_REGION","name":"aws-auth"}}},{"name":"AWS_PROTOCOL","valueFrom":{"secretKeyRef":{"key":"AWS_PROTOCOL","name":"aws-auth", "optional": true}}},{"name":"AWS_HOSTNAME","valueFrom":{"secretKeyRef":{"key":"AWS_HOSTNAME","name":"aws-auth", "optional": true}}},{"name":"AWS_PATH_STYLE","valueFrom":{"secretKeyRef":{"key":"AWS_PATH_STYLE","name":"aws-auth", "optional": true}}}]}]}}}}'system-app의 세 컨테이너에서 모든 AWS_* 환경 변수가 시크릿 참조로 설정되어 있는지 확인합니다.system-developer:oc get dc system-app -o json | jq '.spec.template.spec.containers | map(select(.name == "system-developer"))[].env | map(select(.name | contains("AWS")))'system-master:oc get dc system-app -o json | jq '.spec.template.spec.containers | map(select(.name == "system-master"))[].env | map(select(.name | contains("AWS")))'system-provideroc get dc system-app -o json | jq '.spec.template.spec.containers | map(select(.name == "system-provider"))[].env | map(select(.name | contains("AWS")))'세 가지 컨테이너 모두에서 아래 출력 목록의 각 환경 변수는
aws-authsecret 키에 대한 참조여야 합니다.- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- AWS_BUCKET
- AWS_REGION
- AWS_PROTOCOL
- AWS_HOSTNAME
- AWS_PATH_STYLE
system-sidekiqDeploymentConfig에 컨테이너 환경 변수를 패치합니다.oc patch dc/system-sidekiq -p '{"spec":{"template":{"spec":{"containers":[{"name":"system-sidekiq","env":[{"name":"AWS_BUCKET","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"AWS_BUCKET","name":"aws-auth"}}},{"name":"AWS_REGION","valueFrom":{"configMapKeyRef":null,"secretKeyRef":{"key":"AWS_REGION","name":"aws-auth"}}},{"name":"AWS_PROTOCOL","valueFrom":{"secretKeyRef":{"key":"AWS_PROTOCOL","name":"aws-auth", "optional": true}}},{"name":"AWS_HOSTNAME","valueFrom":{"secretKeyRef":{"key":"AWS_HOSTNAME","name":"aws-auth", "optional": true}}},{"name":"AWS_PATH_STYLE","valueFrom":{"secretKeyRef":{"key":"AWS_PATH_STYLE","name":"aws-auth", "optional": true}}}]}]}}}}'모든 AWS_* 환경 변수가 시크릿 참조로 설정되어 있는지 확인합니다.
oc get dc system-sidekiq -o json | jq '.spec.template.spec.containers | map(select(.name == "system-sidekiq"))[].env | map(select(.name | contains("AWS")))'아래 출력 목록의 각 환경 변수는
aws-authsecret 키에 대한 참조여야 합니다.- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- AWS_BUCKET
- AWS_REGION
- AWS_PROTOCOL
- AWS_HOSTNAME
- AWS_PATH_STYLE
사용되지 않은
system-environmentConfigMap 키를 삭제합니다.oc patch configmap system-environment --patch '{"data": {"AWS_BUCKET": null, "AWS_REGION": null}}'
1.2.8. 3scale 버전 번호 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
이전 단계
-
3scale 2.7에
amp-s3템플릿을 설치한 경우 1.2.2절. “smtpConfigMap을system-smtp시크릿으로 마이그레이션” -
3scale 2.7에
amp-s3템플릿을 설치하지 않은 경우 1.2.6절. “system-sidekiqDeploymentConfig 컨테이너의 환경 패치”
현재 단계
이 단계에서는 system-environment ConfigMap에서 3scale 릴리스 버전 번호를 2.7 에서 2.8 로 업데이트합니다. AMP_RELEASE는 일부 DeploymentConfig 컨테이너 환경에서 참조되는 ConfigMap 항목입니다.
AMP_RELEASE를 패치하려면 다음 명령을 실행합니다.
oc patch cm system-environment --patch '{"data": {"AMP_RELEASE": "2.8"}}'system-environment ConfigMap의 AMP_RELEASE 키의
2.8값이 있는지 확인합니다.oc get cm system-environment -o json | jq .data.AMP_RELEASE
1.2.9. 3scale 이미지 업그레이드 링크 복사링크가 클립보드에 복사되었습니다!
현재 단계
이 단계에서는 업그레이드 프로세스에 필요한 3scale 이미지를 업데이트합니다.
amp-system이미지 스트림을 패치합니다.amp-system이미지 스트림을 패치하려면 3scale 배포에 사용된 데이터베이스를 고려해야 합니다.- 3scale을 Oracle Database와 함께 배포하는 경우 다음 단계를 수행하여 Oracle Database : 1, 2, 4, 8 및 9로 시스템 이미지를 빌드 합니다.
데이터베이스가 Oracle DB와 다른 경우 다음 명령을 사용하십시오.
oc patch imagestream/amp-system --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP system 2.8"}, "from": { "kind": "DockerImage", "name": "registry.redhat.io/3scale-amp2/system-rhel7:3scale2.8"}, "name": "2.8", "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.8"}, "name": "latest", "referencePolicy": {"type": "Source"}}}]'이 트리거는
system-app,system-sphinx및system-sidekiqDeploymentConfigs의 재배포를 트리거합니다. 재배포될 때까지 기다린 후 해당 새 Pod가 준비되고 이전 Pod가 종료됩니다.
amp-apicast이미지 스트림을 패치합니다.oc patch imagestream/amp-apicast --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP APIcast 2.8"}, "from": { "kind": "DockerImage", "name": "registry.redhat.io/3scale-amp2/apicast-gateway-rhel8:3scale2.8"}, "name": "2.8", "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.8"}, "name": "latest", "referencePolicy": {"type": "Source"}}}]'이 트리거는
apicast-production및apicast-stagingDeploymentConfigs의 재배포를 트리거합니다. 재배포될 때까지 기다린 후 해당 새 Pod가 준비되고 이전 Pod가 종료됩니다.amp-backend이미지 스트림을 패치합니다.oc patch imagestream/amp-backend --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP Backend 2.8"}, "from": { "kind": "DockerImage", "name": "registry.redhat.io/3scale-amp2/backend-rhel7:3scale2.8"}, "name": "2.8", "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.8"}, "name": "latest", "referencePolicy": {"type": "Source"}}}]'이 트리거는
backend-listener,backend-worker,backend-cronDeploymentConfigs의 재배포를 트리거합니다. 재배포될 때까지 기다린 후 해당 새 Pod가 준비되고 이전 Pod가 종료됩니다.amp-zync이미지 스트림을 패치합니다.oc patch imagestream/amp-zync --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP Zync 2.8"}, "from": { "kind": "DockerImage", "name": "registry.redhat.io/3scale-amp2/zync-rhel7:3scale2.8"}, "name": "2.8", "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.8"}, "name": "latest", "referencePolicy": {"type": "Source"}}}]'이 트리거는
zync및zync-queDeploymentConfigs의 재배포를 트리거합니다. 재배포될 때까지 기다린 후 해당 새 Pod가 준비되고 이전 Pod가 종료됩니다.system-memcachedImageStream을 패치합니다.oc patch imagestream/system-memcached --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "System 2.8 Memcached"}, "from": { "kind": "DockerImage", "name": "registry.redhat.io/3scale-amp2/memcached-rhel7:3scale2.8"}, "name": "2.8", "referencePolicy": {"type": "Source"}}}]' oc patch imagestream/system-memcached --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "System Memcached (latest)"}, "from": { "kind": "ImageStreamTag", "name": "2.8"}, "name": "latest", "referencePolicy": {"type": "Source"}}}]'이 트리거는
system-memcacheDeploymentConfig의 재배포를 트리거합니다. 재배포될 때까지 기다린 후 해당 새 Pod가 준비되고 이전 Pod가 종료될 때까지 기다립니다.zync-database-postgresql이미지 스트림을 패치합니다.oc patch imagestream/zync-database-postgresql --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "Zync 2.8 PostgreSQL"}, "from": { "kind": "DockerImage", "name": "registry.redhat.io/rhscl/postgresql-10-rhel7"}, "name": "2.8", "referencePolicy": {"type": "Source"}}}]' oc patch imagestream/zync-database-postgresql --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "Zync PostgreSQL (latest)"}, "from": { "kind": "ImageStreamTag", "name": "2.8"}, "name": "latest", "referencePolicy": {"type": "Source"}}}]'이 patch 명령은 2.8 태그를 포함하도록
zync-database-postgresql이미지 스트림을 업데이트합니다. 다음을 실행하여 2.8 태그가 생성되었는지 확인할 수 있습니다.oc get is/zync-database-postgresql그런 다음
태그열에2.8태그가 표시되는지 확인합니다.-
이 패치는 이미지에 새 업데이트가 있는 경우
zync-databaseDeploymentConfig의 재배포를 트리거할 수도 있습니다. 이 경우 새 Pod가 재배포되고 준비될 때까지 기다린 후 이전 Pod가 종료됩니다.
3scale 2.7 설치에 다음 DeploymentConfig 중 하나 이상이 있는 경우 적용되는 DeploymentConfig 링크를 클릭하여 진행 방법에 대한 자세한 정보를 가져옵니다.
DeploymentConfigs의 모든 이미지 URL에 각 URL 주소 끝에 해시가 추가된 새 이미지 레지스트리 URL이 포함되어 있는지 확인합니다.
$ THREESCALE_DC_NAMES="apicast-production apicast-staging backend-cron backend-listener backend-redis backend-worker system-app system-memcache system-mysql system-redis system-sidekiq system-sphinx zync zync-database zync-que" 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
1.2.9.1. 기존 DeploymentConfigs를 사용하는 추가 단계 링크 복사링크가 클립보드에 복사되었습니다!
1.2.9.1.1. backend-redis DeploymentConfig 링크 복사링크가 클립보드에 복사되었습니다!
현재 3scale 설치에 backend-redis DeploymentConfig가 있는 경우 backend-redis 이미지 스트림을 패치합니다.
oc patch imagestream/backend-redis --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "Backend 2.8 Redis"}, "from": { "kind": "DockerImage", "name": "registry.redhat.io/rhscl/redis-32-rhel7:3.2"}, "name": "2.8", "referencePolicy": {"type": "Source"}}}]'
oc patch imagestream/backend-redis --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "Backend Redis (latest)"}, "from": { "kind": "ImageStreamTag", "name": "2.8"}, "name": "latest", "referencePolicy": {"type": "Source"}}}]'
-
이 패치는
2.8태그를 포함하도록backend-redis이미지 스트림을 업데이트합니다. 아래 명령을 사용하면 태그 열에2.8이 표시되는 경우 태그가 생성되었는지 확인할 수 있습니다.
oc get is/backend-redis
-
이 패치는 이미지에 새 업데이트가 있는 경우
backend-redisDeploymentConfig의 재배포를 트리거할 수도 있습니다. 이 경우 새 Pod가 재배포되고 준비될 때까지 기다린 후 이전 Pod가 종료됩니다.
3scale 이미지 업그레이드 를 계속합니다.
1.2.9.1.2. system-redis DeploymentConfig 링크 복사링크가 클립보드에 복사되었습니다!
현재 3scale 설치에 system-redis DeploymentConfig가 있는 경우 system-redis 이미지 스트림을 패치합니다.
oc patch imagestream/system-redis --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "System 2.8 Redis"}, "from": { "kind": "DockerImage", "name": "registry.redhat.io/rhscl/redis-32-rhel7:3.2"}, "name": "2.8", "referencePolicy": {"type": "Source"}}}]'
oc patch imagestream/system-redis --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "System Redis (latest)"}, "from": { "kind": "ImageStreamTag", "name": "2.8"}, "name": "latest", "referencePolicy": {"type": "Source"}}}]'
-
이 패치는
2.8태그를 포함하도록system-redis이미지 스트림을 업데이트합니다. 아래 명령을 사용하면 태그 열에2.8이 표시되는 경우 태그가 생성되었는지 확인할 수 있습니다.
oc get is/system-redis
-
이 패치는 이미지에 새 업데이트가 있는 경우
system-redisDeploymentConfig의 재배포를 트리거할 수도 있습니다. 이 경우 새 Pod가 재배포되고 준비될 때까지 기다린 후 이전 Pod가 종료됩니다.
3scale 이미지 업그레이드 를 계속합니다.
1.2.9.1.3. system-mysql DeploymentConfig 링크 복사링크가 클립보드에 복사되었습니다!
현재 3scale 설치에 system-mysql DeploymentConfig가 있는 경우 system-mysql 이미지 스트림을 패치합니다.
oc patch imagestream/system-mysql --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "System 2.8 MySQL"}, "from": { "kind": "DockerImage", "name": "registry.redhat.io/rhscl/mysql-57-rhel7:5.7"}, "name": "2.8", "referencePolicy": {"type": "Source"}}}]'
oc patch imagestream/system-mysql --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "System MySQL (latest)"}, "from": { "kind": "ImageStreamTag", "name": "2.8"}, "name": "latest", "referencePolicy": {"type": "Source"}}}]'
-
이 패치는
2.8태그를 포함하도록system-mysql이미지 스트림을 업데이트합니다. 아래 명령을 사용하면 태그 열에2.8이 표시되는 경우 태그가 생성되었는지 확인할 수 있습니다.
oc get is/system-mysql
-
이 패치는 이미지에 새 업데이트가 있는 경우
system-mysqlDeploymentConfig의 재배포를 트리거할 수도 있습니다. 이 경우 새 Pod가 재배포되고 준비될 때까지 기다린 후 이전 Pod가 종료됩니다.
3scale 이미지 업그레이드 를 계속합니다.
1.2.9.1.4. system-postgresql DeploymentConfig 링크 복사링크가 클립보드에 복사되었습니다!
현재 3scale 설치에 system-postgresql DeploymentConfig가 있는 경우 system-postgresql 이미지 스트림을 패치합니다.
oc patch imagestream/system-postgresql --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "System 2.8 PostgreSQL"}, "from": { "kind": "DockerImage", "name": "registry.redhat.io/rhscl/postgresql-10-rhel7
"}, "name": "2.8", "referencePolicy": {"type": "Source"}}}]'
oc patch imagestream/system-postgresql --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "System PostgreSQL (latest)"}, "from": { "kind": "ImageStreamTag", "name": "2.8"}, "name": "latest", "referencePolicy": {"type": "Source"}}}]'
-
이 패치는
2.8태그를 포함하도록system-postgresql이미지 스트림을 업데이트합니다. 아래 명령을 사용하면 태그 열에2.8이 표시되는 경우 태그가 생성되었는지 확인할 수 있습니다.
oc get is/system-postgresql
-
이 패치는 이미지에 새 업데이트가 있는 경우
system-postgresqlDeploymentConfig의 재배포를 트리거할 수도 있습니다. 이 경우 새 Pod가 재배포되고 준비될 때까지 기다린 후 이전 Pod가 종료됩니다.
3scale 이미지 업그레이드 를 계속합니다.
1.2.10. smtp ConfigMap 삭제 링크 복사링크가 클립보드에 복사되었습니다!
현재 단계
이 단계에서는 이 ConfigMap이 system- 시크릿으로 마이그레이션되었기 때문에 smtp ConfigMap을 제거합니다.
smtp
smtp ConfigMap을 제거하려면 다음 명령을 실행합니다.
$ oc delete cm smtp
명령에서 오류를 반환하지 않으면 올바르게 작동했습니다.
다음 단계
없음. 나열된 모든 단계를 수행한 후 템플릿 기반 배포에서 2.7에서 2.8로 3scale 업그레이드가 완료되었습니다.