概要

Oracle TimesTen In-Memory Database (TimesTen)は、完全に物理メモリー内にあり、永続的でリカバリ可能なフル機能のリレーショナル・データベースです。高速なレスポンス時間と高いスループットをアプリケーションに提供します。TimesTenは、SQL、標準API、完全なACIDプロパティおよび高可用性のためのレプリケーションをサポートしています。TimesTenはKubernetes環境で完全にサポートされており、機能が豊富なオペレータを提供します。TimesTen Kubernetesオペレータ(TimesTenオペレータ)では、Kubernetesクラスタ内のTimesTen Classicデータベースのアクティブ・スタンバイ・ペアをデプロイ、管理および監視できます。また、TimesTenの組込みキャッシュ機能もサポートされており、TimesTenデータベースをOracleデータベースの読取り専用キャッシュまたは読取り/書込みキャッシュとして使用して、SQL問合せのレスポンス時間を短縮できます。

TimesTenのアクティブ・スタンバイ・ペアのレプリケーション・スキームは、2つのTimesTenデータベースで構成されます。1つはアクティブ・データベースで、もう1つのデータベースはスタンバイです。アプリケーションによって、アクティブ・データベースが更新されます。スタンバイ・データベースは読取り専用で、アクティブ・データベースからレプリケートされた更新を受信します。2つのデータベースのうち、一度に1つのみがアクティブ・データベースとして機能します。アクティブ・データベースで障害が発生すると、スタンバイ・データベースがアクティブ・データベースに昇格します。障害が発生した(アクティブ)データベースは、リカバリ後、スタンバイ・データベースになります。


TimesTenデータベースのアクティブ・スタンバイ・ペア

Oracle Cloud MarketplaceのOracle TimesTen In-Memory Database for Kubernetes - BYOLは、TimesTenを含むコンテナ・イメージ、そのソフトウェアの前提条件、およびコンテナ化された環境でTimesTenを実行するために必要なすべてのもので構成されています。コンテナ・イメージには、TimesTenオペレータをデプロイし、TimesTenデータベースを作成するために必要なYAMLマニフェスト・ファイルおよびHelmチャートも含まれています。

このガイドでは、コンテナ・レジストリにログインし、KubernetesクラスタがOracle Cloud Infrastructure (OCI)のコンテナ・イメージにアクセスするために必要な資格証明を使用してKubernetesシークレットを作成することで、TimesTenコンテナ・イメージをエクスポートし、TimesTenコンテナ・イメージにアクセスするステップを、順を追って説明します。また、マニフェスト・ファイルの抽出、TimesTenオペレータのデプロイ、およびKubernetesクラスタでのTimesTenデータベースの作成に関するTimesTenドキュメントへの参照も提供します。

目的

  • TimesTenコンテナ・イメージをOracle Cloud Infrastructure Registry (コンテナ・レジストリ)のリポジトリにエクスポートします。

  • 開発ホストのコンテナ・レジストリにログインし、Kubernetesシークレットを作成して、Kubernetesクラスタがコンテナ・レジストリにアクセスするために必要な資格証明を格納します。

始める前に

Marketplaceの使用を開始する前に、Oracle Cloudについてよく理解しておく必要があります。また、次のものがあることを確認してください:

  • Oracle Cloud Infrastructure (OCI)テナンシへのアクセス。テナンシは、コンテナ・レジストリが使用可能な1つ以上のリージョンにサブスクライブされている必要があります。リージョン別の可用性を参照してください。

    ノート:

    コンテナ・レジストリにログインするには、テナンシのオブジェクト・ストレージ・ネームスペース名が必要です。これは、「Tenancy Details」ページにあります。

  • コンテナ・レジストリでマーケットプレイス・リストを読み取って使用し、リポジトリを管理できるグループに属するOCIユーザー。

    ノート:

    テナンシでアイデンティティ・ドメインを使用している場合は、コンテナ・レジストリにログインするためにアイデンティティ・ドメインの名前が必要です。テナンシでアイデンティティ・ドメインを使用している場合は、OCIコンソールへのログイン時に、ユーザーに関連付けられたアイデンティティ・ドメインの名前を選択する必要があります。

    次のIdentity and Access Management (IAM)ポリシーを使用すると、指定したグループが、指定したコンパートメント内のリストを読み取って使用し、リポジトリを管理できます:

    Allow group <group_name> to inspect all-resources in tenancy
    Allow group <group_name> to manage app-catalog-listings in compartment <compartment_name>
    Allow group <group_name> to use marketplace-listings in compartment <compartment_name>
    Allow group <group_name> to read marketplace-workrequests in compartment <compartment_name>
    Allow group <group_name> to manage repos in compartment <compartment_name>

    必要なIAMポリシーを参照してください。

  • OCIユーザーの認証トークン。認証トークンを忘れた場合、またはOCIユーザーの認証トークンをまだ作成していない場合は、認証トークンの取得を参照してください。

  • 動作中のKubernetesクラスタ。クラスタがOracle Cloud Infrastructure Container Engine for Kubernetes (OKE)を使用して設定されていない場合は、次のことを確認してください:

    • クラスタには、永続ボリュームをリクエストするために使用できるStorageClassが用意されています。

    • ノードでは、それらのクロックがNTPまたは同等の方法で同期されます。

    コンソール・ワークフローを使用したKubernetesクラスタの作成を参照してください。

  • Kubernetesクラスタにアクセスするための開発ホスト。ホストは、クラスタと同じテナンシ内の仮想マシン(VM)インスタンスにできます。次のことを確認します:

    • ホストはKubernetesクラスタの外部にあります。

    • ホストは、Kubernetesクラスタにアクセスして制御できます。このためには、docker (またはpodman)およびkubectlコマンドライン・ツールがホストにインストールされていることを確認します。Dockerおよびkubectlのドキュメントを参照してください。

      コンテナ・イメージによって提供されるHelmチャートを使用する場合は、helmコマンドライン・ツールもインストールされていることを確認します。Helmのドキュメントを参照してください。

    クラスタ・アクセスの設定を参照してください。

タスク1: TimesTenコンテナ・イメージのエクスポート

TimesTenコンテナ・イメージをマーケットプレイスからエクスポートするには:
  1. Oracle Cloudコンソール(コンソール)でテナンシにサインインします。
  2. コンソールの左上隅で、ナビゲーション・メニューを開いて「Marketplace」をクリックします。次に、「All Applications」をクリックします。
  3. 「Oracle TimesTen In-Memory Database for Kubernetes - BYOL」のリストをクリックします。

    リストを検索するには、次のようにフィルタおよび検索バーを使用できます:

    • 「Filters」「Type」ドロップダウン・リストから「Container」を選択します。

    • 「Publisher」ドロップダウン・リストで、「Oracle」を選択します。

    • 「Price」ドロップダウン・リストで、「BYOL」を選択します。

    • 検索をさらに絞り込むには、検索バーにTimesTenと入力します。

  4. 「Export Package」をクリックします。
  5. 適切なIAMポリシーを持つコンパートメントを選択します。
  6. 既存のリポジトリを選択するか、新しいリポジトリを作成します。

    新しいリポジトリを作成する場合は、次のようにします:

    1. リポジトリの名前を入力します。
    2. 「Access」で、「Private」または「Public」を選択します。

      リポジトリを「private」にすると、テナンシの管理者グループに属するユーザーとともに、リポジトリに対する操作を実行できます。

      リポジトリを「public」にした場合、インターネット・アクセス権と適切なURLに関する知識があるユーザーは、リポジトリからイメージをプルできます。

  7. 使用可能な最新のパッケージ・バージョンを選択します。

    バージョン番号は、TimesTenのリリース・バージョンに対応します。

  8. 「Partner terms and conditions」を確認して受諾します。
  9. 「Export」をクリックします。

    「Export Package」ダイアログが閉じ、作業リクエストが送信されたことを通知するポップアップ・ウィンドウが表示されます。ポップアップ・ウィンドウまたは次のステップから提供されたリンクに従って、作業リクエストが正常に完了したことを確認します。

    作業リクエストが完了するまで数分間待ちます。

  10. 作業リクエストが正常に完了したことを確認します。
    1. コンソールの左上隅で、ナビゲーション・メニューを開いて「Marketplace」をクリックします。次に、「Work Request」をクリックします。
    2. 成功した場合、次の内容とともに作業リクエストがリストされます:
      • Listing name: Oracle TimesTen In-Memory Database。

      • Package version: ステップ7で選択したパッケージ・バージョン。

      • State: Succeeded.

      • Start time: エクスポート・リクエストと一致する時間。

  11. 作業リクエストが完了したら、リポジトリ内のコンテナ・イメージのタグとフルパスを特定します。

    TimesTenオペレータをデプロイするには、コンテナ・イメージのタグとフルパスが必要です。これらを特定するには:

    1. コンソールの左上隅で、ナビゲーション・メニューを開いて「Developer Services」をクリックします。次に、「Containers and Artifacts」で、「Container Registry」をクリックします。
    2. 「List scope」で、リポジトリに関連付けられているコンパートメントを選択します。
    3. 「Repositories and images」で、選択した(または作成した)リポジトリの名前の下にあるTimesTenコンテナ・イメージを選択します。

      ノート:

      各リポジトリに含まれるイメージのリストは、初回試行時にロードされない場合があります。リポジトリを選択すると、リポジトリの詳細パネルがロードされたら、ドロップダウン・リストからTimesTenコンテナ・イメージを選択できます。

      コンテナ・イメージは、次の形式でリストする必要があります:

      <repository_name>:<image_tag>

      ここで、<image_tag>は次のように構成されます:

      <unique_ID>-timesten-<package_version>

      たとえば、samplerepositoryという名前のプライベート・リポジトリをパッケージ・バージョン22.1.1.23.0のコンテナ・イメージで作成した場合、コンテナ・イメージは次のようにリストされます:

      [-] samplerepository (Private) [1 image]
              samplerepository:<unique_ID>-timesten-22.1.1.23.0

      イメージのフルパスは、「Image information」の下にあります。パスは、次の形式でリストされます:

      <tenancy_namespace>/<repository_name>:<image_tag>

      たとえば、samplerepositoryリポジトリがsampletenancyという名前のテナンシに関連付けられている場合、イメージのフルパスは次のようになります:

      sampletenancy/samplerepository:<unique_ID>-timesten-22.1.1.23.0
TimesTenコンテナ・イメージが正常にエクスポートされました。

タスク2: TimesTenコンテナ・イメージへのアクセス

Kubernetesシークレットは、少量の機密データを含むオブジェクトです。コンテナ・レジストリのTimesTenコンテナ・イメージにアクセスするには、KubernetesクラスタにOCIユーザー名および認証トークンを含むシークレットが必要です。

開発ホストおよびKubernetesクラスタ上のTimesTenコンテナ・イメージにアクセスするには:

  1. 開発ホストのターミナル・ウィンドウで、コンテナ・レジストリにログインします。

    コンテナ・レジストリにログインすると、資格証明はDocker構成ファイル$HOME/.docker/config.jsonに格納されます。

    docker login <region_key>.ocir.io

    <region_key>は、リポジトリに使用しているリージョンのキーに対応します。リージョン別の可用性を参照してください。

    たとえば、米国西部(フェニックス)リージョンのコンテナ・レジストリにログインするには:

    docker login phx.ocir.io
    1. ユーザー名を求められた場合は、次の形式でOCIユーザー名を入力します:
      <tenancy_namespace>/<identity_domain>/<user_name>

      説明:

      • <tenancy_namespace>は、リポジトリを所有するテナンシのオブジェクト・ストレージ・ネームスペース名です(「Tenancy Details」ページを参照)。

      • <identity_domain>は、ユーザーに関連付けられているアイデンティティ・ドメインの名前です。テナンシでアイデンティティ・ドメインを使用せず、ユーザーがOracle Identity Cloud Serviceとフェデレートされている場合は、アイデンティティ・ドメインとしてOracleIdentityCloudServiceを使用します。

      • <user_name>は、テナンシのOCIユーザー名です。

      例:

      sampletenancy/Default/john.smith@example.com

      アイデンティティ・ドメインがデフォルトの場合、次のものを使用できます:

      sampletenancy/john.smith@example.com
    2. パスワードの入力を求められたら、OCIユーザーの認証トークンを入力します。
  2. Docker構成ファイルに格納されている資格証明を使用してKubernetesシークレットを作成します。
    kubectl create secret generic <secret_name> --from-file=.dockerconfigjson=$HOME/.docker/config.json \
            --type=kubernetes.io/dockerconfigjson

    <secret_name>を任意の名前に置き換えます。たとえば、sekretという名前のKubernetesシークレットを作成するには:

    kubectl create secret generic sekret --from-file=.dockerconfigjson=$HOME/.docker/config.json \
            --type=kubernetes.io/dockerconfigjson

    ノート:

    Kubernetesシークレットの名前を書き留めることを検討してください。TimesTenオペレータをデプロイし、TimesTenデータベースを作成する必要があります。
開発ホストおよびKubernetesクラスタ上のTimesTenコンテナ・イメージにアクセスできるようになりました。

次のステップ

コンテナ・レジストリのリポジトリにTimesTenコンテナ・イメージがあり、コンテナ・レジストリにアクセスするためにKubernetesクラスタにKubernetesシークレットがあるので、TimesTenオペレータをデプロイしてTimesTenデータベースを作成するために必要なすべてのものがあります。YAMLマニフェスト・ファイルまたはTimesTenコンテナ・イメージに含まれるHelmチャートを使用して、これらのタスクを実行できます。

  1. TimesTenオペレータのYAMLマニフェスト・ファイルおよびHelmチャートを取得します。TimesTen YAMLマニフェスト・ファイルおよびHelmチャートの取得を参照してください。

    新しいコンテナを作成する例に従って、例のIMAGE引数を、リージョン・エンドポイントとコンテナ・イメージのフルパスに置き換えることを忘れないでください。

    docker create --name ttoper <region_key>.ocir.io/<tenancy_namespace>/<repository_name>:<image_tag>

    たとえば、パッケージ・バージョン22.1.1.23.0のコンテナ・イメージを持つ米国西部(フェニックス)リージョンのsampletenancyテナンシのsamplerepositoryリポジトリの場合、新しいコンテナを作成するコマンドは次のようになります:

    docker create --name ttoper phx.ocir.io/sampletenancy/samplerepository:<unique_ID>-timesten-22.1.1.23.0
  2. TimesTenカスタム・リソース定義(CRD)をインストールします。TimesTen CRDのインストールを参照してください。

  3. TimesTenオペレータをデプロイします。TimesTenオペレータのインストールを参照してください。

    ノート:

    Helmを使用してTimesTenオペレータをデプロイする場合は、このステップをスキップできます。

    TimesTenオペレータをカスタマイズする例に従って、imagePullSecretsnameの値を、作成したKubernetesシークレットの名前、およびcontainersimageの値を、リージョン・エンドポイントとコンテナ・イメージのフルパスで置き換えることを忘れないでください。

    imagePullSecrets:
    - name: <secret_name>
      containers:
        - name: timesten-operator
          image: <region_key>.ocir.io/<tenancy_namespace>/<repository_name>:<image_tag>

    たとえば、パッケージ・バージョン22.1.1.23.0コンテナ・イメージを持つ米国西部(フェニックス)リージョンのsampletenancyテナンシのsamplerepositoryリポジトリおよびsekret Kubernetesシークレットの場合、operator.yamlファイルに次の値を含める必要があります:

    imagePullSecrets:
    - name: sekret
      containers:
        - name: timesten-operator
          image: phx.ocir.io/sampletenancy/samplerepository:<unique_ID>-timesten-22.1.1.23.0
  4. TimesTenオペレータを使用してTimesTenデータベースを作成します。TimesTen Classicデータベースの作成を参照してください。

    ノート:

    Helmを使用してTimesTenデータベースを作成する場合は、このステップをスキップできます。

    例に従って、TimesTenClassicオブジェクトを定義するYAMLファイルを作成する際は、ttspecimageおよびimagePullSecretの値を、リージョン・エンドポイントとコンテナ・イメージのフルパス、およびKubernetesシークレットの名前にそれぞれ置き換えることを忘れないでください。

    ttspec:
      image: <region_key>.ocir.io/<tenancy_namespace>/<repository_name>:<image_tag>
      imagePullSecret: <secret_name>

    たとえば、パッケージ・バージョン22.1.1.23.0コンテナ・イメージを持つ米国西部(フェニックス)リージョンのsampletenancyテナンシのsamplerepositoryリポジトリおよびsekret Kubernetesシークレットの場合、YAMLファイルに次の値を含める必要があります:

    ttspec:
      image: phx.ocir.io/sampletenancy/samplerepository:<unique_ID>-timesten-22.1.1.23.0
      imagePullSecret: sekret
  5. または、Helmを使用してTimesTenオペレータをデプロイし、TimesTenデータベースを作成できます。TimesTen Kubernetesオペレータ環境でのHelmの使用を参照してください。

    ノート:

    YAMLマニフェスト・ファイルを使用してTimesTenオペレータをデプロイし、TimesTenデータベースを作成する場合は、このステップをスキップできます。

    例に従って、TimesTenオペレータおよびTimesTenデータベースの構成を定義するYAMLファイルを作成する場合は、imagerepositoryおよびtagの値をリージョン・エンドポイントおよびコンテナ・イメージのフルパスに置き換え、imagePullSecretsnameの値をKubernetesシークレットの名前に置き換えることを忘れないでください。

    image:
      repository: <region_key>.ocir.io/<tenancy_namespace>/<repository_name>
      tag: <image_tag>
    imagePullSecrets:
      - name: <secret_name>

    たとえば、パッケージ・バージョン22.1.1.23.0コンテナ・イメージを持つ米国西部(フェニックス)リージョンのsampletenancyテナンシのsamplerepositoryリポジトリおよびsekret Kubernetesシークレットの場合、YAMLファイルに次の値を含める必要があります:

    image:
      repository: phx.ocir.io/sampletenancy/samplerepository
      tag: <unique_ID>-timesten-22.1.1.23.0
    imagePullSecrets:
      - name: sekret

ドキュメントのアクセシビリティについて

Oracle Supportへのアクセス