第8章 バックアップおよび障害復旧

本セクションでは、CodeReady Workspaces のバックアップおよび障害復旧機能の複数の側面について説明します。

8.1. 外部データベースの設定

PostgreSQL データベースは、CodeReady Workspaces の状態に関するデータを永続化させるために、CodeReady Workspaces サーバーによって使用されます。これには、ユーザーアカウント、ワークスペース、設定についての情報、およびその他の詳細情報が含まれます。

デフォルトで、CodeReady Workspaces Operator はデータベースデプロイメントを作成し、管理します。

ただし、CodeReady Workspaces Operator はバックアップやリカバリーなどの完全なライフサイクル機能をサポートしません。

ビジネスに不可欠な環境では、以下の推奨される障害復旧オプションを使用して外部データベースを設定します。

  • 高可用性 (HA)
  • PITR (Point In Time Recovery)

オンプレミスの外部 PostgreSQL インスタンスを設定するか、または Amazon Relational Database Service (Amazon RDS) などのクラウドサービスを使用します。Amazon RDS を使用すると、通常の、およびオンデマンドのスナップショットを使用して、回復性のある障害復旧ストラテジーの Multi-Availability Zone 設定で実稼働データベースをデプロイできます。

データベースサンプルの設定例は以下のようになります。

パラメーター

インスタンスクラス

db.t2.small

vCPU

1

RAM

2 GB

Multi-az

true、2 つのレプリカ

エンジンのバージョン

9.6.11

TLS

enabled

自動化されたバックアップ

有効 (30 日)

8.1.1. 外部 PostgreSQL の設定

手順

  1. 以下の SQL スクリプトを使用して、CodeReady Workspaces サーバーのユーザーおよびデータベースを作成し、ワークスペースのメタデータなどを永続化させます。

    CREATE USER <database-user> WITH PASSWORD '<database-password>' 1 2
    CREATE DATABASE <database>                                      3
    GRANT ALL PRIVILEGES ON DATABASE <database> TO <database-user>
    ALTER USER <database-user> WITH SUPERUSER
    1
    CodeReady Workspaces サーバーデータベースのユーザー名
    2
    CodeReady Workspaces サーバーデータベースのパスワード
    3
    CodeReady Workspaces サーバーデータベースの名前
  2. 以下の SQL スクリプトを使用して、RH-SSO バックエンドのデータベースを作成して、ユーザー情報を永続化させます。

    CREATE USER <identity-database-user> WITH PASSWORD '<identity-database-password>' 1 2
    CREATE DATABASE <identity-database>                                               3
    GRANT ALL PRIVILEGES ON DATABASE <identity-database> TO <identity-database-user>
    1
    RH-SSO データベースのユーザー名
    2
    RH-SSO データベースのパスワード
    3
    RH-SSO データベース名

8.1.2. 外部 PostgreSQL と連携するように CodeReady Workspaces を設定する

前提条件

  • oc ツールが利用できる。

手順

  1. CodeReady Workspaces のプロジェクトを事前に作成します。

    $ oc create namespace workspaces
  2. CodeReady Workspaces サーバーデータベースの認証情報を保存するためにシークレットを作成します。

    $ oc create secret generic <server-database-credentials> \ 1
    --from-literal=user=<database-user> \                            2
    --from-literal=password=<database-password> \                    3
    -n workspaces
    1
    CodeReady Workspaces サーバーデータベースの認証情報を保存するためのシークレットの名前
    2
    CodeReady Workspaces サーバーデータベースのユーザー名
    3
    CodeReady Workspaces サーバーデータベースのパスワード
  3. RH-SSO データベース認証情報を保存するためのシークレットを作成します。

    $ oc create secret generic <identity-database-credentials> \ 1
    --from-literal=user=<identity-database-user> \                     2
    --from-literal=password=<identity-database-password> \             3
    -n workspaces
    1
    RH-SSO データベースの認証情報を保存するためのシークレット名
    2
    RH-SSO データベースのユーザー名
    3
    RH-SSO データベースのパスワード
  4. Operator がデータベースのデプロイを省略し、既存のデータベースの接続詳細を CodeReady Workspaces サーバーに渡すには、カスタムリソースに以下の値を設定します。

    spec:
      database:
        externalDb: true
        chePostgresHostName: <hostname>                     1
        chePostgresPort: <port>                             2
        chePostgresSecret: <server-database-credentials>    3
        chePostgresDb: <database>                           4
    spec:
      auth:
        identityProviderPostgresSecret: <identity-database-credentials> 5
    1
    外部データベースのホスト名
    2
    外部データベースポート
    3
    CodeReady Workspaces サーバーデータベースの認証情報を含むシークレットの名前
    4
    CodeReady Workspaces サーバーデータベースのユーザー名
    5
    RH-SSO データベースの認証情報が含まれるシークレットの名前

関連資料