Menu Close

第12章 Data Grid キャッシュの作成

Data Grid がデータを保存する方法を設定するキャッシュ定義を追加します。Data Grid Operator または Hot Rod または REST クライアントのいずれかでキャッシュを作成できます。

12.1. Data Grid サービスクラスターのキャッシュの作成

infinispan.org 設定テンプレートを使用するか、有効な XML キャッシュ定義から Data Grid Service クラスターでキャッシュを作成できます。

注記

テンプレートまたは XML 定義のいずれかを指定する Cache CR を使用すると一度に 1 つのキャッシュのみを作成できます。Cache CR にテンプレートと XML 定義の両方が含まれる場合、Data Grid Operator はテンプレートを使用します。

12.1.1. キャッシュ作成用のクレデンシャルシークレットの追加

Data Grid Operator は、キャッシュを作成するために Data Grid Service クラスターで認証する必要があります。クレデンシャルをシークレットに追加し、キャッシュの作成時に Data Grid Operator がクラスターにアクセスできるようにします。

以下の手順では、クレデンシャルを新規シークレットに追加する方法を説明します。クレデンシャルが含まれるカスタムシークレットがある場合、新規のシークレットを作成する代わりに使用することができます。

手順

  1. StringData マップの Data Grid Service クラスターにアクセスするための有効なユーザークレデンシャルを提供する Secret オブジェクトタイプを定義します。

    たとえば、以下のように developer ユーザーのクレデンシャルを提供する auth_secret.yaml ファイルを作成します。

    apiVersion: v1
    stringData:
      username: developer 1
      password: G8ZdJvSaY3lOOwfM 2
    kind: Secret
    metadata:
      name: basic-auth 3
    type: Opaque
    1
    キャッシュを作成できるユーザーの名前を指定します。
    2
    ユーザーに対応するパスワードを指定します。
    3
    シークレットの名前を指定します。
  2. 以下の例のように、ファイルからシークレットを作成します。

    $ oc create secret generic --from-file=auth_secret.yaml basic-auth

12.1.1.1. カスタムクレデンシャルシークレットの使用

Data Grid Operator では、クレデンシャルがシークレットの username および password キーの値として存在している必要があります。Data Grid のクレデンシャルが含まれ、異なるキー名を使用するカスタムシークレットがある場合は、Cache CR でこれらの名前をオーバーライドできます。

たとえば、以下のような Data Grid ユーザーとそのパスワードの一覧を保持する「my-credentials」というシークレットがあります。

stringData:
  app_user1: spock
  app_user1_pw: G8ZdJvSaY3lOOwfM
  app_user2: jim
  app_user2_pw: zTzz2gVyyF4JsYsH

手順

  • Cache CR で、以下のように username および password でカスタムキー名を上書きします。
spec:
  adminAuth:
    username:
      key: app_user1 1
      name: my-credentials 2
    password:
      key: app_user1_pw 3
      name: my-credentials
1
username でキー名 app_user1 を上書きします。
2
カスタムクレデンシャルシークレットの名前を指定します。
3
password でキー名 app_user1_pw を上書きします。

12.1.2. テンプレートからの Data Grid キャッシュの作成

infinispan.org キャッシュ設定テンプレートを使用して Data Grid Service クラスターでキャッシュを作成するには、以下の手順を実行します。

前提条件

  • Data Grid クラスターにアクセスするのに有効なユーザークレデンシャルが含まれるシークレットを作成します。
  • キャッシュに使用するキャッシュ設定テンプレートを特定します。以下の REST 呼び出しを使用して、利用可能なすべての設定テンプレートを取得できます。

    GET /rest/v2/cache-managers/default/cache-configs/templates

手順

  1. 使用するテンプレートの名前を指定する Cache CR を作成します。

    たとえば、以下の CR は org.infinispan.DIST_SYNC キャッシュ設定テンプレートを使用する "mycache" という名前のキャッシュを作成します。

    apiVersion: infinispan.org/v2alpha1
    kind: Cache
    metadata:
      name: mycachedefinition 1
    spec:
      adminAuth: 2
        secretName: basic-auth
      clusterName: example-infinispan 3
      name: mycache 4
      templateName: org.infinispan.DIST_SYNC 5
    1
    Cache CR に名前を付けます。
    2
    username および password キーでクレデンシャルを提供するシークレットまたはカスタムクレデンシャルのシークレットのオーバーライドを指定します。
    3
    Data Grid Operator がキャッシュを作成するターゲット Data Grid クラスターの名前を指定します。
    4
    Data Grid キャッシュインスタンスに名前を付けます。
    5
    キャッシュを作成する infinispan.org キャッシュ設定テンプレートを指定します。
  2. Cache CR を適用します。以下に例を示します。

    $ oc apply -f mycache.yaml
    cache.infinispan.org/mycachedefinition created

12.1.3. XML からのリモート Data Grid キャッシュの作成

有効な infinispan.xml キャッシュ定義を使用して Data Grid Service クラスターにキャッシュを作成するには、以下の手順を実行します。

前提条件

  • Data Grid クラスターにアクセスするのに有効なユーザークレデンシャルが含まれるシークレットを作成します。

手順

  1. 作成する XML キャッシュ定義が含まれる Cache CR を作成します。

    apiVersion: infinispan.org/v2alpha1
    kind: Cache
    metadata:
      name: mycachedefinition 1
    spec:
      adminAuth: 2
        secretName: basic-auth
      clusterName: example-infinispan 3
      name: mycache 4
      template: <infinispan><cache-container><distributed-cache/></cache-container></infinispan> 5
    1
    Cache CR に名前を付けます。
    2
    username および password キーでクレデンシャルを提供するシークレットまたはカスタムクレデンシャルのシークレットのオーバーライドを指定します。
    3
    Data Grid Operator がキャッシュを作成するターゲット Data Grid クラスターの名前を指定します。
    4
    Data Grid キャッシュインスタンスに名前を付けます。
    5
    キャッシュを作成する XML キャッシュ定義を指定します。name 属性は無視されます。作成されたキャッシュにのみに spec.name が適用されます。
  2. Cache CR を適用します。以下に例を示します。

    $ oc apply -f mycache.yaml
    cache.infinispan.org/mycachedefinition created

12.1.4. 永続キャッシュストアの設定

単一ファイルキャッシュストアを Data Grid サービスノードに追加して、データを永続ボリュームに保存することができます。

以下のように persistence 要素を使用して、キャッシュストアを Data Grid キャッシュ定義の一部として設定します。

<persistence>
   <file-store/>
</persistence>

次に、Data Grid は /opt/datagrid/server/data ディレクトリーに単一ファイルのキャッシュストアである .dat ファイルを作成します。

手順

  • 以下の例のように、キャッシュストアで XML キャッシュ定義が含まれる Cache CR を作成します。

    apiVersion: infinispan.org/v2alpha1
    kind: Cache
    metadata:
      name: mycachestore
    spec:
      adminAuth:
        secretName: basic-auth
      clusterName: example-infinispan 1
      name: mycache 2
      template: <infinispan><cache-container><distributed-cache><persistence><file-store/></persistence></distributed-cache></cache-container></infinispan>
  • 以下の例のように、XMLStringConfiguration クラスを使用して Hot Rod エンドポイント経由でキャッシュストアのある XML キャッシュ定義を提供します。

    private void createCacheWithXMLConfiguration() {
            String cacheName = "mycachestore";
            String xml = String.format("<infinispan>" +
                                          "<cache-container>" +
                                          "<distributed-cache name=\"%s\" mode=\"SYNC\">" +
                                            "<persistence>" +
                                              "<file-store/>" +
                                            "</persistence>" +
                                          "</distributed-cache>" +
                                          "</cache-container>" +
                                        "</infinispan>"
                                        , cacheName);
            manager.administration().getOrCreateCache(cacheName, new XMLStringConfiguration(xml));
            System.out.println("Cache created or already exists.");
        }