11.7. 外部データベースへの接続


Operator を使用して、keycloak-db-secret YAML ファイルを作成し、Keycloak CR externalDatabase プロパティーを有効に設定することで、外部 PostgreSQL データベースに接続できます。値は Base64 でエンコードされていることに注意してください。

keycloak-db-secret の YAML ファイルサンプル

apiVersion: v1
kind: Secret
metadata:
    name: keycloak-db-secret
    namespace: keycloak
stringData:
    POSTGRES_DATABASE: <Database Name>
    POSTGRES_EXTERNAL_ADDRESS: <External Database URL (resolvable by K8s)>
    POSTGRES_EXTERNAL_PORT: <External Database Port>
    POSTGRES_PASSWORD: <Database Password>
    # Required for AWS Backup functionality
    POSTGRES_SUPERUSER: "true"
    POSTGRES_USERNAME: <Database Username>
    SSLMODE: <TLS configuration for the Database connection>
type: Opaque
Copy to Clipboard

以下のプロパティーは、データベースのホスト名または IP アドレスとポートを設定します。

  • POSTGRES_EXTERNAL_ADDRESS - 外部データベースのホスト名。ホスト名ではなくデータベースの IP のみがある場合は、サービスと対応する EndpointSlice または Endpoint を作成してホスト名を指定します。
  • POSTGRES_EXTERNAL_PORT - (必要に応じて) データベースポート。

他のプロパティーは、ホストされたデータベースまたは外部データベースと同じ方法で機能します。以下のように設定します。

  • POSTGRES_DATABASE - 使用されるデータベース名。
  • POSTGRES_USERNAME - データベースのユーザー名
  • POSTGRES_PASSWORD - データベースのパスワード
  • POSTGRES_SUPERUSER - バックアップがスーパーユーザーとして実行されるかどうかを示します。通常は true です。
  • SSLMODE - 外部 PostgreSQL データベースへの接続で TLS を使用するかどうかを示します。使用できる を確認します。

SSLMODE が有効になっている場合、Operator は、PostgreSQL データベースで使用されている root.crt を含む keycloak-db-ssl-cert-secret と呼ばれるシークレットを検索します。シークレットの作成は任意で、データベースの証明書を検証する場合にのみシークレットが使用されます (例: SSLMODE: verify-ca)。以下は例です。

Operator によって使用される TLS Secret の YAML ファイルのサンプル。

apiVersion: v1
kind: Secret
metadata:
  name: keycloak-db-ssl-cert-secret
  namespace: keycloak
type: Opaque
data:
  root.crt: {root.crt base64}
Copy to Clipboard

Operator は keycloak-postgresql という名前のサービスを作成します。このサービスは、POSTGRES_EXTERNAL_ADDRESS のコンテンツに基づいて外部データベースを公開するように、Operator によって設定されます。Red Hat Single Sign-On は、このサービスを使用してデータベースに接続します。つまり、データベースに直接接続するのではなく、このサービスを介して接続します。

Keycloak カスタムリソースには、外部データベースのサポートを有効にするために更新が必要です。

外部データベースをサポートする Keycloak カスタムリソースの YAML ファイルの例

apiVersion: keycloak.org/v1alpha1
kind: Keycloak
metadata:
  labels:
      app: sso
  name: example-keycloak
  namespace: keycloak
spec:
  externalDatabase:
    enabled: true
  instances: 1
Copy to Clipboard

前提条件

  • keycloak-db-secret の YAML ファイルがある。
  • Keycloak カスタムリソースを変更して externalDatabasetrue に設定している。
  • cluster-admin パーミッション、または管理者によって付与される同等のレベルのパーミッションがある。

手順

  1. PostgreSQL データベースのシークレットを検索します (oc get secret <secret_for_db> -o yaml)。以下は例になります。

    $ oc get secret keycloak-db-secret -o yaml
    apiVersion: v1
    data
      POSTGRES_DATABASE: cm9vdA==
      POSTGRES_EXTERNAL_ADDRESS: MTcyLjE3LjAuMw==
      POSTGRES_EXTERNAL_PORT: NTQzMg==
    Copy to Clipboard

    POSTGRES_EXTERNAL_ADDRESS は Base64 形式です。

  2. シークレットの値をデコードします (echo "<encoded_secret>" | base64 -decode)。以下は例になります。

    $ echo "MTcyLjE3LjAuMw==" | base64 -decode
    192.0.2.3
    Copy to Clipboard
  3. デコードされた値がデータベースの IP アドレスと一致していることを確認します。

    $ oc get pods -o wide
    NAME                        READY  STATUS    RESTARTS   AGE   IP
    keycloak-0                  1/1    Running   0          13m   192.0.2.0
    keycloak-postgresql-c8vv27m 1/1    Running   0          24m   192.0.2.3
    Copy to Clipboard
  4. 実行中のサービスのリストに keycloak-postgresql が表示されることを確認します。

    $ oc get svc
    NAME                 TYPE       CLUSTER-IP     EXTERNAL-IP  PORT(S)   AGE
    keycloak             ClusterIP  203.0.113.0    <none>       8443/TCP  27m
    keycloak-discovery   ClusterIP  None           <none>       8080/TCP  27m
    keycloak-postgresql  ClusterIP  203.0.113.1    <none>       5432/TCP  27m
    Copy to Clipboard

    keycloak-postgresql サービスは、バックエンドの IP アドレスのセットにリクエストを送信します。これらの IP アドレスはエンドポイントと呼ばれます。

  5. keycloak-postgresql サービスで使用されるエンドポイントを表示して、それらがデータベースの IP アドレスを使用していることを確認します。

    $ oc get endpoints keycloak-postgresql
    NAME                  ENDPOINTS         AGE
    keycloak-postgresql   192.0.2.3.5432    27m
    Copy to Clipboard
  6. Red Hat Single Sign-On が外部データベースで実行されていることを確認します。この例は、すべてが実行されていることを示しています。

    $ oc get pods
    NAME                        READY  STATUS    RESTARTS   AGE   IP
    keycloak-0                  1/1    Running   0          26m   192.0.2.0
    keycloak-postgresql-c8vv27m 1/1    Running   0          36m   192.0.2.3
    Copy to Clipboard
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat