Infinispan デプロイメント: シングルクラスター

これは、シングルクラスター環境での Infinispan のデプロイメントについて説明しています。

対象読者

このガイドでは、シングルクラスター環境に Infinispan をデプロイするために必要な手順について説明します。簡略化のため、このガイドでは、外部 Infinispan と Keycloak を組み合わせて使用できるようにするための最小限の構成を使用します。

追加のガイドについては、実稼働環境での実行 を参照してください。

前提条件

  • OpenShift または Kubernetes クラスターが実行されていること

  • Infinispan Operator の理解

手順

  1. Infinispan Operator をインストールします。

  2. Infinispan クラスターにアクセスするためのクレデンシャルを構成します。

    Keycloak は、Infinispan クラスターで認証できるようにするために、このクレデンシャルを必要とします。次の 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 前の例の identities.yaml を base64 エンコードしたもの。
    • CLI の使用

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

      詳細については、認証の構成 ドキュメントを確認してください。

  3. Infinispan クラスターを作成します。

    Infinispan クラスターの作成 ドキュメントには、Infinispan クラスターを作成および構成する方法に関するすべての情報が記載されています。

    Infinispan CR
    apiVersion: infinispan.org/v1
    kind: Infinispan
    metadata:
      name: infinispan (1)
      namespace: keycloak
      annotations:
        infinispan.org/monitoring: 'true' (2)
    spec:
      replicas: 3
      jmx:
        enabled: true
      security:
        endpointSecretName: connect-secret (3)
      service:
        type: DataGrid
    1 クラスター名
    2 Prometheus によるクラスターの監視を許可します。
    3 カスタムクレデンシャルを使用する場合は、前の手順で作成したシークレット名をここで構成します。
  4. Keycloak 用のキャッシュを作成します。

    Keycloak には、次のキャッシュが存在する必要があります。sessionsactionTokensauthenticationSessionsofflineSessionsclientSessionsofflineClientSessionsloginFailures、および work

    Infinispan Cache CR を使用して、Infinispan クラスターにキャッシュをデプロイします。

    sessions キャッシュの例を以下に示します。上記の他のすべてのキャッシュについてこれを繰り返します。

    sessions キャッシュの Cache CR
    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: "5000"
          encoding:
            media-type: "application/x-protostream"
          locking:
            acquireTimeout: "4000"
          transaction:
            mode: "NON_DURABLE_XA" (1)
            locking: "PESSIMISTIC" (2)
          stateTransfer:
            chunkSize: "16"
          indexing:
            enabled: true
            indexed-entities:
            - keycloak.RemoteUserSessionEntity
          

    Infinispan ドキュメント には、キャッシュ構成とそのオプションに関する詳細が記載されています。

デプロイメントの検証

Infinispan クラスターが形成されていることを確認します。

Infinispan クラスターが形成されるまで待ちます
kubectl wait --for condition=WellFormed --timeout=300s infinispans.infinispan.org -n keycloak infinispan