2.3. システムデータベースのシークレットフィールドのアップグレード


3scale 2.5 の変更の一環として、system-mysql DeploymentConfig の一部のデータベース環境変数は、値を直接設定する代わりにシークレットから割り当てられます。これらには以下が含まれます。

  • MYSQL_USER 環境変数は、システムデータベース のシークレットフィールド DB_USER から値を取得します。
  • MYSQL_PASSWORD 環境変数は、システムデータベース のシークレットフィールド DB_PASSWORD から値を取得します。

既存の 3scale 2.4 インストールを 2.5 にアップグレードするには、以下の手順に従います。

  1. 次のコマンドが既存の Pod と DeploymentConfig を返すこと、および両方の出力が空でないことを確認します。

    $ oc get pod | grep -i system-mysql | awk '{print $1}'
    $ oc get dc system-mysql
  2. 現在の 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')
  3. RESULT_MYSQL_USER と RESULT_MYSQL_PASSWORD に既存の値があり、空でないことを確認します。

    $ echo $RESULT_MYSQL_USER
    $ echo $RESULT_MYSQL_PASSWORD
  4. 後で参照できるように、これらの値を保存します。
  5. 次のコマンドの出力を保存して、system-mysql 環境全体のバックアップを作成します。

    $ oc set env "dc/${MYSQL_DC}" --list
  6. さらに、次のコマンドの出力を保存して、system-database secret と system-database DeploymentConfig の現在の値のバックアップを作成します。

    $ oc get secret system-database -o yaml
    $ oc get dc system-mysql -o yaml
  7. 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}\"}}"
  8. シークレットが正常に編集されたことを確認します。次のコマンドは、それぞれ 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
  9. system-mysql DeploymentConfig を手動で編集して、MYSQL_USER および MYSQL_PASSWORD の値を新しく追加されたフィールドから system-database シークレットに設定します。

    警告

    この手順を実行すると、system-mysql DeploymentConfig の再デプロイがトリガーされ、Pod の再作成中に一時的にサービスが失われます。

    $ oc edit dc $MYSQL_DC
  10. 編集中に、env セクションを見つけます。以下が表示されるはずです。

    - name: MYSQL_USER
      value: <current_mysql_user_value>
    - name: MYSQL_PASSWORD
      value: <current_mysql_password_value>
  11. そのコンテンツを次のものに置き換えます。

    - name: MYSQL_USER
      valueFrom:
        secretKeyRef:
          key: DB_USER
          name: system-database
    - name: MYSQL_PASSWORD
      valueFrom:
        secretKeyRef:
          key: DB_PASSWORD
          name: system-database
  12. 変更を保存して終了します。
  13. この後、DeploymentConfig は Pod を再デプロイします。system-mysql Pod が再び正しい状態で実行され、プラットフォームが再び正しく動作することを確認します。たとえば、DeploymentConfig が 1 に設定されていることを確認できます。

    $ oc get dc ${MYSQL_DC}

    そして、Pod は最近実行されているはずです。

    $ oc get pods | grep -i system-mysql

    system-mysql DeploymentConfig の環境変数がシークレットから収集されていることも確認できます。

    $ oc set env "dc/${MYSQL_DC}" --list

    結果の一部として、次の出力が表示されます。

    # MYSQL_USER from secret system-database, key DB_USER
    # MYSQL_PASSWORD from secret system-database, key DB_PASSWORD

    MYSQL_USER と MYSQL_PASSWORD には特定の値は含まれていません。

その他の注意事項:

  • system-mysql の再起動中に、system-appsystem-sidekiq、および system-sphinx Pod のフェイルオーバーが予想される場合がありますが、それらを再デプロイする必要はおそらくありません。
  • Pod の復元に失敗した場合は、対応する DeploymentConfig を手動で再デプロイします。
  • フェイルオーバーを防ぐために、移行手順にメンテナンスウィンドウを追加して、system-mysql が再起動する直前に DeploymentConfig をゼロにスケールダウンし、再起動後に再びスケールアップして、readiness プローブを渡すことができます。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.