検索

6.3. 手順

download PDF
  1. Data Grid Operator をインストールします。
  2. Data Grid クラスターにアクセスするための認証情報を設定します。

    Red Hat build of Keycloak が Data Grid クラスターで認証できるようにするには、この認証情報が必要です。次の identities.yaml ファイルで、管理者権限を持つユーザー名とパスワードを設定します。

    credentials:
      - username: developer
        password: strong-password
        roles:
          - admin

    identities.yaml は、次のいずれかの方法でシークレットに設定できます。

    • Kubernetes リソースとして:

      認証情報シークレット

      apiVersion: v1
      kind: Secret
      type: Opaque
      metadata:
        name: connect-secret
        namespace: keycloak
      data:
        identities.yaml: Y3JlZGVudGlhbHM6CiAgLSB1c2VybmFtZTogZGV2ZWxvcGVyCiAgICBwYXNzd29yZDogc3Ryb25nLXBhc3N3b3JkCiAgICByb2xlczoKICAgICAgLSBhZG1pbgo= 1

      1
      Base64 でエンコードした上記の例の identities.yaml
    • CLI の使用

      oc create secret generic connect-secret --from-file=identities.yaml

      詳細は、認証の設定 ドキュメントを参照してください。

      これらのコマンドは両方の OpenShift クラスターで実行する必要があります。

  3. サービスアカウントを作成します。

    クラスター間の接続を確立するには、サービスアカウントが必要です。Data Grid Operator は、これを使用してリモートサイトからネットワーク設定を検査し、それに応じてローカル Data Grid クラスターを設定します。

    詳細は、マネージドのクロスサイトレプリケーション ドキュメントを参照してください。

    1. 次のように service-account-token シークレットタイプを作成します。同じ YAML ファイルを両方の OpenShift クラスターで使用できます。

      xsite-sa-secret-token.yaml

      apiVersion: v1
      kind: Secret
      metadata:
        name: ispn-xsite-sa-token 1
        annotations:
          kubernetes.io/service-account.name: "xsite-sa" 2
      type: kubernetes.io/service-account-token

      1
      シークレットの名前。
      2
      サービスアカウントの名前。
    2. サービスアカウントを作成し、両方の OpenShift クラスターでアクセストークンを生成します。

      Site-A でサービスアカウントを作成する

      oc create sa -n keycloak xsite-sa
      oc policy add-role-to-user view -n keycloak -z xsite-sa
      oc create -f xsite-sa-secret-token.yaml
      oc get secrets ispn-xsite-sa-token -o jsonpath="{.data.token}" | base64 -d > Site-A-token.txt

      Site-B でサービスアカウントを作成する

      oc create sa -n keycloak xsite-sa
      oc policy add-role-to-user view -n keycloak -z xsite-sa
      oc create -f xsite-sa-secret-token.yaml
      oc get secrets ispn-xsite-sa-token -o jsonpath="{.data.token}" | base64 -d > Site-B-token.txt

    3. 次に、Site-A から Site-B にトークンをデプロイしてから、その逆を行います。

      Site-B のトークンを Site-A にデプロイする

      oc create secret generic -n keycloak xsite-token-secret \
        --from-literal=token="$(cat Site-B-token.txt)"

      Site-A のトークンを Site-B にデプロイする

      oc create secret generic -n keycloak xsite-token-secret \
        --from-literal=token="$(cat Site-A-token.txt)"

  4. TLS シークレットを作成します。

    この章では、Data Grid でクロスサイト通信に OpenShift ルートを使用します。この OpenShift ルートは、TLS の SNI 拡張を使用してトラフィックを正しい Pod に送信します。これを実現するために、JGroups は TLS ソケットを使用します。これには、正しい証明書を備えたキーストアとトラストストアが必要です。

    詳細は、クロスサイト接続のセキュリティー保護 ドキュメントまたはこちらの Red Hat Developer Guide を参照してください。

    キーストアとトラストストアは、OpenShift シークレットでアップロードします。シークレットには、ファイルの内容、ファイルにアクセスするためのパスワード、およびストアのタイプを含めます。証明書とストアを作成する手順は、このガイドの範囲外です。

    キーストアをシークレットとしてアップロードするには、次のコマンドを使用します。

    キーストアのデプロイ

    oc -n keycloak create secret generic xsite-keystore-secret \
      --from-file=keystore.p12="./certs/keystore.p12" \ 1
      --from-literal=password=secret \ 2
      --from-literal=type=pkcs12 3

    1
    ファイル名とキーストアへのパス。
    2
    キーストアにアクセスするためのパスワード。
    3
    キーストアのタイプ。

    トラストストアをシークレットとしてアップロードするには、次のコマンドを使用します。

    トラストストアのデプロイ

    oc -n keycloak create secret generic xsite-truststore-secret \
            --from-file=truststore.p12="./certs/truststore.p12" \  1
            --from-literal=password=caSecret \  2
            --from-literal=type=pkcs12  3

    1
    ファイル名とトラストストアへのパス。
    2
    トラストストアにアクセスするためのパスワード。
    3
    トラストストアのタイプ。
    注記

    キーストアとトラストストアは、両方の OpenShift クラスターにアップロードする必要があります。

  5. クロスサイトを有効にして Data Grid のクラスターを作成する

    クロスサイトの設定 ドキュメントに、上記の手順を含め、クロスサイトを有効にして Data Grid クラスターを作成および設定する方法に関するすべての情報が記載されています。

    この章では、上記の手順のコマンドによって作成された認証情報、トークン、および TLS キーストア/トラストストアを使用した基本的な例を示します。

    Site-AInfinispan CR

    apiVersion: infinispan.org/v1
    kind: Infinispan
    metadata:
      name: infinispan 1
      namespace: keycloak
      annotations:
        infinispan.org/monitoring: 'true' 2
    spec:
      replicas: 3
      security:
        endpointSecretName: connect-secret 3
      service:
        type: DataGrid
        sites:
          local:
            name: site-a 4
            expose:
              type: Route 5
            maxRelayNodes: 128
            encryption:
              transportKeyStore:
                secretName: xsite-keystore-secret 6
                alias: xsite 7
                filename: keystore.p12 8
              routerKeyStore:
                secretName: xsite-keystore-secret 9
                alias: xsite 10
                filename: keystore.p12 11
              trustStore:
                secretName: xsite-truststore-secret 12
                filename: truststore.p12 13
          locations:
            - name: site-b 14
              clusterName: infinispan
              namespace: keycloak 15
              url: openshift://api.site-b 16
              secretName: xsite-token-secret 17

    1
    クラスター名。
    2
    Prometheus によるクラスターの監視を許可します。
    3
    カスタムの認証情報を使用する場合は、ここでシークレット名を設定します。
    4
    ローカルサイトの名前。この場合は Site-A です。
    5
    OpenShift ルートを使用したクロスサイト接続の公開。
    6 9
    前のステップで定義したキーストアが存在するシークレット名。
    7 10
    キーストア内の証明書のエイリアス。
    8 11
    前のステップで定義したキーストアの秘密鍵 (ファイル名)。
    12
    前のステップで定義したトラストストアが存在するシークレット名。
    13
    前のステップで定義したキーストアのトラストストアキー (ファイル名)。
    14
    リモートサイトの名前 (この場合は Site-B)。
    15
    リモートサイトの Data Grid クラスターの namespace。
    16
    リモートサイトの OpenShift API URL。
    17
    リモートサイトで認証するためのアクセストークンを含むシークレット。

    Site-BInfinispan CR も上記と同様です。ポイント 4、11、13 の違いに注意してください。

    Site-BInfinispan CR

    apiVersion: infinispan.org/v1
    kind: Infinispan
    metadata:
      name: infinispan 1
      namespace: keycloak
      annotations:
        infinispan.org/monitoring: 'true' 2
    spec:
      replicas: 3
      security:
        endpointSecretName: connect-secret 3
      service:
        type: DataGrid
        sites:
          local:
            name: site-b 4
            expose:
              type: Route 5
            maxRelayNodes: 128
            encryption:
              transportKeyStore:
                secretName: xsite-keystore-secret 6
                alias: xsite 7
                filename: keystore.p12 8
              routerKeyStore:
                secretName: xsite-keystore-secret 9
                alias: xsite 10
                filename: keystore.p12 11
              trustStore:
                secretName: xsite-truststore-secret 12
                filename: truststore.p12 13
          locations:
            - name: site-a 14
              clusterName: infinispan
              namespace: keycloak 15
              url: openshift://api.site-a 16
              secretName: xsite-token-secret 17

  6. Red Hat build of Keycloak 用のキャッシュを作成します。

    Red Hat build of Keycloak は、sessionsactionTokensauthenticationSessionsofflineSessionsclientSessionsofflineClientSessionsloginFailures、および work キャッシュの存在を必要とします。

    Data Grid Cache CR を使用すると、Data Grid クラスターにキャッシュをデプロイできます。クロスサイトのドキュメント に記載されているように、クロスサイトはキャッシュごとに有効にする必要があります。このドキュメントには、この章で使用するオプションの詳細が記載されています。次の例は、Site-ACache CR を示しています。

    Site-A のセッション

    apiVersion: infinispan.org/v2alpha1
    kind: Cache
    metadata:
      name: sessions
      namespace: keycloak
    spec:
      clusterName: infinispan
      name: sessions
      template: |-
        distributedCache:
          mode: "SYNC"
          owners: "2"
          statistics: "true"
          remoteTimeout: 14000
          stateTransfer:
            chunkSize: 16
          backups:
            mergePolicy: ALWAYS_REMOVE 1
            site-b: 2
              backup:
                strategy: "SYNC" 3
                timeout: 13000
                stateTransfer:
                  chunkSize: 16

    1 1
    クロスサイトマージポリシー。書き込みと書き込みの競合が発生した場合に呼び出されます。これは、sessionsauthenticationSessionsofflineSessionsclientSessions、および offlineClientSessions キャッシュに設定します。他のすべてのキャッシュには設定しないでください。
    2 2
    リモートサイト名。
    3 3
    クロスサイト通信 (この場合は SYNC)。

    Site-BCache CR もポイント 2 を除いて同様です。

    Site-B のセッション

    apiVersion: infinispan.org/v2alpha1
    kind: Cache
    metadata:
      name: sessions
      namespace: keycloak
    spec:
      clusterName: infinispan
      name: sessions
      template: |-
        distributedCache:
          mode: "SYNC"
          owners: "2"
          statistics: "true"
          remoteTimeout: 14000
          stateTransfer:
            chunkSize: 16
          backups:
            mergePolicy: ALWAYS_REMOVE 1
            site-a: 2
              backup:
                strategy: "SYNC" 3
                timeout: 13000
                stateTransfer:
                  chunkSize: 16

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.