2.3. システムデータベースのシークレットフィールドのアップグレード
3scale 2.5 の変更の一環として、system-mysql DeploymentConfig の一部のデータベース環境変数は、値を直接設定する代わりにシークレットから割り当てられます。これらには以下が含まれます。
-
MYSQL_USER 環境変数は、
システムデータベースのシークレットフィールド DB_USER から値を取得します。 -
MYSQL_PASSWORD 環境変数は、
システムデータベースのシークレットフィールド 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-mysqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 現在の DeploymentConfig 名、および DeploymentConfig の 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_PASSWORDCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 後で参照できるように、これらの値を保存します。
次のコマンドの出力を保存して、
system-mysql環境全体のバックアップを作成します。oc set env "dc/${MYSQL_DC}" --list$ oc set env "dc/${MYSQL_DC}" --listCopy to Clipboard Copied! Toggle word wrap Toggle overflow さらに、次のコマンドの出力を保存して、
system-databasesecret とsystem-databaseDeploymentConfig の現在の値のバックアップを作成します。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 yamlCopy 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 -dCopy to Clipboard Copied! Toggle word wrap Toggle overflow system-mysqlDeploymentConfig を手動で編集して、MYSQL_USER および MYSQL_PASSWORD の値を新しく追加されたフィールドからsystem-databaseシークレットに設定します。警告この手順を実行すると、
system-mysqlDeploymentConfig の再デプロイがトリガーされ、Pod の再作成中に一時的にサービスが失われます。oc edit dc $MYSQL_DC
$ oc edit dc $MYSQL_DCCopy 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 Pod が再び正しい状態で実行され、プラットフォームが再び正しく動作することを確認します。たとえば、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-mysqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow system-mysql DeploymentConfig の環境変数がシークレットから収集されていることも確認できます。
oc set env "dc/${MYSQL_DC}" --list$ oc set env "dc/${MYSQL_DC}" --listCopy 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_PASSWORDCopy to Clipboard Copied! Toggle word wrap Toggle overflow MYSQL_USER と MYSQL_PASSWORD には特定の値は含まれていません。
その他の注意事項:
- system-mysql の再起動中に、system-app、system-sidekiq、および system-sphinx Pod のフェイルオーバーが予想される場合がありますが、それらを再デプロイする必要はおそらくありません。
- Pod の復元に失敗した場合は、対応する DeploymentConfig を手動で再デプロイします。
- フェイルオーバーを防ぐために、移行手順にメンテナンスウィンドウを追加して、system-mysql が再起動する直前に DeploymentConfig をゼロにスケールダウンし、再起動後に再びスケールアップして、readiness プローブを渡すことができます。