2.3. system-database 시크릿 필드 업그레이드
3scale 2.5 변경의 일부로 system-mysql
DeploymentConfig의 일부 데이터베이스 환경 변수는 값을 직접 설정하는 대신 시크릿에서 할당됩니다. 여기에는 다음이 포함됩니다.
-
ECDHE_USER 환경 변수는
system-database
secret 필드 DB_USER에서 값을 가져옵니다. -
ECDHE_PASSWORD 환경 변수는
system-database
secret 필드 DB_PASSWORD에서 값을 가져옵니다.
기존 3scale 2.4 설치를 2.5로 업그레이드하려면 다음 절차를 따르십시오.
다음 명령에서 기존 Pod 및 DeploymentConfig를 반환하는 것과 해당 명령이 둘 다 비어 있지 않은지 확인합니다.
oc get pod | grep -i system-mysql | awk '{print $1}' oc get dc system-mysql
$ oc get pod | grep -i system-mysql | awk '{print $1}' $ oc get dc system-mysql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow DeploymentConfig의 현재 DeploymentConfig 이름과 MySQL 환경 변수를 MySQL 사용자 및 MySQL 환경 변수를 저장합니다.
MYSQL_DC="system-mysql" RESULT_MYSQL_USER=$(oc get dc ${MYSQL_DC} -o json | jq -r '.spec.template.spec.containers[0].env[] | select(.name == "MYSQL_USER").value') RESULT_MYSQL_PASSWORD=$(oc get dc ${MYSQL_DC} -o json | jq -r '.spec.template.spec.containers[0].env[] | select(.name == "MYSQL_PASSWORD").value')
MYSQL_DC="system-mysql" RESULT_MYSQL_USER=$(oc get dc ${MYSQL_DC} -o json | jq -r '.spec.template.spec.containers[0].env[] | select(.name == "MYSQL_USER").value') RESULT_MYSQL_PASSWORD=$(oc get dc ${MYSQL_DC} -o json | jq -r '.spec.template.spec.containers[0].env[] | select(.name == "MYSQL_PASSWORD").value')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow RESULT_MYSQL_USER 및 RESULT_MYSQL_PASSWORD에 기존 값이 있고 비어 있지 않은지 확인합니다.
echo $RESULT_MYSQL_USER echo $RESULT_MYSQL_PASSWORD
$ echo $RESULT_MYSQL_USER $ echo $RESULT_MYSQL_PASSWORD
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 나중에 참조할 수 있도록 이러한 값을 저장합니다.
다음 명령의 출력을 저장하여 전체
system-mysql
환경의 백업을 생성합니다.oc set env "dc/${MYSQL_DC}" --list
$ oc set env "dc/${MYSQL_DC}" --list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 또한 다음 명령의 출력을 저장하여
system-database
시크릿 및system-database
DeploymentConfig의 현재 값을 백업을 생성합니다.oc get secret system-database -o yaml oc get dc system-mysql -o yaml
$ oc get secret system-database -o yaml $ oc get dc system-mysql -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MySQL 사용자 및 암호의 현재 값을
system-database
시크릿에 추가합니다.oc patch secret/system-database -p "{\"stringData\": {\"DB_USER\": \"${RESULT_MYSQL_USER}\"}}" oc patch secret/system-database -p "{\"stringData\": {\"DB_PASSWORD\": \"${RESULT_MYSQL_PASSWORD}\"}}"
$ oc patch secret/system-database -p "{\"stringData\": {\"DB_USER\": \"${RESULT_MYSQL_USER}\"}}" $ oc patch secret/system-database -p "{\"stringData\": {\"DB_PASSWORD\": \"${RESULT_MYSQL_PASSWORD}\"}}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 시크릿이 성공적으로 편집되었는지 확인합니다. 다음 명령은 각각 RESULT_MYSQL_USER 및 RESULT_MYSQL_PASSWORD의 동일한 콘텐츠를 반환해야 합니다.
oc get secret system-database -o json | jq -r '.data["DB_USER"]' | base64 -d oc get secret system-database -o json | jq -r '.data["DB_PASSWORD"]' | base64 -d
$ oc get secret system-database -o json | jq -r '.data["DB_USER"]' | base64 -d $ oc get secret system-database -o json | jq -r '.data["DB_PASSWORD"]' | base64 -d
Copy to Clipboard Copied! Toggle word wrap Toggle overflow system-mysql
DeploymentConfig를 수동으로 편집하여 새로 추가된 필드에서system-database
시크릿으로ECDHE_USER 및ECDHE_PASSWORD 값을 설정합니다.주의이 단계를 수행하면
system-mysql
DeploymentConfig의 재배포가 트리거되므로 Pod가 다시 생성되는 동안 일시적으로 서비스 손실이 발생합니다.oc edit dc $MYSQL_DC
$ oc edit dc $MYSQL_DC
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 편집하는 동안
env
섹션을 찾습니다. 다음을 찾아야 합니다.- name: MYSQL_USER value: <current_mysql_user_value> - name: MYSQL_PASSWORD value: <current_mysql_password_value>
- name: MYSQL_USER value: <current_mysql_user_value> - name: MYSQL_PASSWORD value: <current_mysql_password_value>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 해당 콘텐츠를 다음으로 변경합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 변경 사항을 저장하고 종료합니다.
이 후 DeploymentConfig는 Pod를 재배포합니다. system-mysql 포드가 다시 실행되고 올바른 상태로 실행되고 있으며 플랫폼이 다시 작동하는지 확인합니다. 예를 들어 DeploymentConfig가 1로 설정되어 있는지 확인할 수 있습니다.
oc get dc ${MYSQL_DC}
$ oc get dc ${MYSQL_DC}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 또한 Pod가 최근에 실행 중이어야 합니다.
oc get pods | grep -i system-mysql
$ oc get pods | grep -i system-mysql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 또한 system-mysql DeploymentConfig의 환경 변수가 이제 시크릿에서 수집되는지 확인할 수 있습니다.
oc set env "dc/${MYSQL_DC}" --list
$ oc set env "dc/${MYSQL_DC}" --list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 출력의 일부로 결과가 표시되어야 합니다.
MYSQL_USER from secret system-database, key DB_USER MYSQL_PASSWORD from secret system-database, key DB_PASSWORD
# MYSQL_USER from secret system-database, key DB_USER # MYSQL_PASSWORD from secret system-database, key DB_PASSWORD
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ECDHE_USER 및ECDHE_PASSWORD에는 특정 값이 포함되어 있지 않습니다.
추가 정보:
- system-mysql 을 다시 시작하는 동안 system-app,system-sidekiq 및 system-sphinx Pod의 장애 조치가 예상될 수 있지만 재배포할 필요가 없습니다.
- Pod를 복구하지 못한 경우 해당 DeploymentConfig를 수동으로 재배포합니다.
- 장애 조치를 방지하기 위해 마이그레이션 절차에 유지 관리 기간을 추가하여 시스템-mysql 이 다시 재부팅되기 전에 해당 DeploymentConfigs를 0으로 축소하여 준비 상태 프로브를 전달합니다.