レプリケートされないTimesTen Classicデータベースの作成

この例では、レプリケートされないTimesTenClassicオブジェクトをKubernetesネームスペースで作成およびデプロイする方法を示します。TimesTenオペレータは、オブジェクトの定義内の情報を使用して独立したTimesTenデータベースを作成するため、このオペレータを監視する方法を示します。
  1. TimesTenClassicオブジェクトのYAMLマニフェスト・ファイルを作成します。
    vi norepsample.yaml
    
    apiVersion: timesten.oracle.com/v3
    kind: TimesTenClassic
    metadata:
      name: norepsample
    spec:
      ttspec:
        storageClassName: oci-bv
        storageSize: 10Gi
        image: container-registry.oracle.com/timesten/timesten:22.1.1.30.0
        imagePullSecret: sekret
        replicationTopology: none
        replicas: 3
        dbConfigMap:
        - norepsample
    
    次の点に注目してください。
    • storageClassNameoci-bvです。oci-bvを記憶域クラスの名前に置き換えます。

    • storageSize10Giです。10Giを、各ポッドがTimesTenを保持するためにリクエストする必要がある記憶域の量に置き換えます。

    • imagecontainer-registry.oracle.com/timesten/timesten:22.1.1.30.0です。imageをTimesTenコンテナ・イメージの名前および場所に置き換えます。

    • imagePullSecretsekretです。sekretを、KubernetesがTimesTenコンテナ・イメージをフェッチするために使用するイメージ・プル・シークレットに置き換えます。

    • replicationTopologynoneです。レプリケートされない構成の場合、この設定は変更しないでください。
    • replicas値は3です。3を、プロビジョニングするTimesTenポッドの数(それぞれTimesTenデータベースを含む)に置き換えます。この値は、13の間である必要があります。replicasを省略した場合、デフォルトは1です。
    • dbConfigMapは、「例について」で作成したnorepsample ConfigMapを指定します。
  2. TimesTenClassicオブジェクトをネームスペースにデプロイします。
    kubectl create -f norepsample.yaml
    出力は次のようになります。
    timestenclassic.timesten.oracle.com/norepsample created
  3. デプロイメントを監視します。
    1. オブジェクトのステータスを確認します。
      kubectl get ttc norepsample

      出力は、次のようになります。

      NAME          STATE             ACTIVE   AGE
      norepsample   NoReplicasReady   N/A      43s

      プロビジョニングは開始されますが、NoReplicasReady状態で示されているとおり、完了していません。

    2. 数分間待機します。次に、ステータスを再度確認します。
      kubectl get ttc norepsample

      出力は、次のようになります。

      NAME          STATE               ACTIVE   AGE
      norepsample   SomeReplicasReady   N/A      74s

      プロビジョニングが続行されます。SomeReplicasReady状態からわかるように、一部のデータベースは準備完了していますが、すべてが完了しているわけではありません。

    3. ステータスを再度確認します。
      kubectl get ttc norepsample
      出力は、次のようになります。
      NAME          STATE              ACTIVE   AGE
      norepsample   AllReplicasReady   N/A      2m54s

      プロビジョニング・プロセスが完了します。データベースは稼働中であり、動作しています。TimesTenオペレータにより、norepsampleオブジェクトがAllReplicasReady状態に遷移します。

  4. (オプション)状態遷移を確認します。
    kubectl get events

    出力は、次のようになります。

    LAST SEEN   TYPE      REASON                   OBJECT                                              MESSAGE
    ...
    6m6s        Normal    Create                   timestenclassic/norepsample                         Service norepsample created
    6m6s        Warning   Warning                  timestenclassic/norepsample                         Database CPU limit/request not specified
    6m6s        Normal    Create                   timestenclassic/norepsample                         StatefulSet norepsample created
    6m6s        Warning   Create                   timestenclassic/norepsample                         PodMonitor norepsample created
    6m6s        Normal    StateChange              timestenclassic/norepsample                         TimesTenClassic was Initializing, now NoReplicasReady
    5m10s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-0 Agent Up
    5m10s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-0 Release 22.1.1.30.0
    5m10s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-0 Instance Exists
    5m10s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-0 Daemon Down
    5m9s        Normal    Info                     timestenclassic/norepsample                         Pod norepsample-0 Daemon Up
    5m9s        Normal    Info                     timestenclassic/norepsample                         Pod norepsample-0 Database None
    4m59s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-0 Database Loaded
    4m58s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-0 Database Updatable
    4m58s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-0 RepAgent Not Running
    4m58s       Normal    StateChange              timestenclassic/norepsample                         Pod norepsample-0 is Ready
    4m58s       Normal    StateChange              timestenclassic/norepsample                         Pod norepsample-0 state was Initializing, now Normal
    4m58s       Normal    StateChange              timestenclassic/norepsample                         TimesTenClassic was NoReplicasReady, now SomeReplicasReady
    4m48s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-2 Agent Up
    4m48s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-2 Release 22.1.1.30.0
    4m48s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-2 Instance Exists
    4m48s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-2 Daemon Down
    4m48s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-2 Daemon Up
    4m48s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-2 Database None
    3m37s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-2 Database Loaded
    3m37s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-2 Database Updatable
    3m37s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-2 RepAgent Not Running
    3m37s       Normal    StateChange              timestenclassic/norepsample                         Pod norepsample-2 is Ready
    3m37s       Normal    StateChange              timestenclassic/norepsample                         Pod norepsample-2 state was Initializing, now Normal
    3m37s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-1 Agent Up
    3m37s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-1 Release 22.1.1.30.0
    3m37s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-1 Instance Exists
    3m37s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-1 Daemon Down
    3m36s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-1 Daemon Up
    3m36s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-1 Database None
    3m30s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-1 Database Loaded
    3m30s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-1 Database Updatable
    3m30s       Normal    Info                     timestenclassic/norepsample                         Pod norepsample-1 RepAgent Not Running
    3m30s       Normal    StateChange              timestenclassic/norepsample                         Pod norepsample-1 is Ready
    3m30s       Normal    StateChange              timestenclassic/norepsample                         Pod norepsample-1 state was Initializing, now Normal
    3m30s       Normal    StateChange              timestenclassic/norepsample                         TimesTenClassic was SomeReplicasReady, now AllReplicasReady

    プロビジョニング・プロセス中、TimesTenClassicオブジェクトおよびTimesTenポッドは様々な状態間で遷移します。

  5. 基礎となるオブジェクトが存在するかどうかの確認

    1. StatefulSet:

    kubectl get statefulset norepsample

    出力は、次のようになります。

    NAME          READY   AGE
    norepsample   3/3     8m30s

    2. サービス:

    kubectl get service norepsample

    出力は、次のようになります。

    NAME          TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)             AGE
    norepsample   ClusterIP   None         <none>        6625/TCP,8888/TCP   8m58s

    3 ポッド:

    kubectl get pods

    出力は、次のようになります。

    NAME                                 READY   STATUS    RESTARTS   AGE
    norepsample-0                        3/3     Running   0          9m15s
    norepsample-1                        3/3     Running   0          9m15s
    norepsample-2                        3/3     Running   0          9m15s
    ...

    4.PVC:

    kubectl get pvc

    出力は、次のようになります。

    NAME                          STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    tt-persistent-norepsample-0   Bound    csi-00bf2a2e-ef70-4f41-a3ef-66341f7404ac   250Gi      RWO            oci-bv         9m34s
    tt-persistent-norepsample-1   Bound    csi-516d9ef4-9492-4927-b483-05f7d320cc73   250Gi      RWO            oci-bv         9m34s
    tt-persistent-norepsample-2   Bound    csi-99c95d75-f9d9-4754-9378-0c5a7d288871   250Gi      RWO            oci-bv         9m34s
  6. データベースの1つに接続します。
    1. 開発ホストから、ポッドにシェルを確立します。
      kubectl exec -it norepsample-0 -c tt -- /bin/bash
    2. データベースに接続表に行を挿入します。
      ttIsql norepsample
      
      Copyright (c) 1996, 2025, Oracle and/or its affiliates. All rights reserved.
      Type ? or "help" for help, type "exit" to quit ttIsql.
      
      
      
      connect "DSN=norepsample";
      Connection successful: DSN=norepsample;UID=timesten;DataStore=/tt/home/timesten/datastore/norepsample;DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=US7ASCII;AutoCreate=0;PermSize=200;DDLReplicationLevel=3;ForceDisconnectEnabled=1;
      (Default setting AutoCommit=1)
      Command> select * from adminuser.emp;
      0 rows found.
      Command> describe adminuser.emp;
      
      Table ADMINUSER.EMP:
        Columns:
         *ID                              NUMBER NOT NULL
          NAME                            CHAR (32)
        PRIMARY KEY (ID) RANGE INDEX
      
      1 table found.
      (primary key columns are indicated with *)
      Command> insert into adminuser.emp values (1,'test');
      1 row inserted.
      Command> commit;
      Command> select * from adminuser.emp;
      < 1, test                              >
      1 row found.
    3. ttIsqlおよびシェルを終了します。
      Command> exit
      Disconnecting...
      Done.
      [timesten@norepsample-0 ~]$ exit
      exit
おめでとうございます。レプリケートされないTimesTenClassicオブジェクトが正常に作成およびデプロイされました。レプリケートされないTimesTen Classicデータベースは稼働中であり、完全に動作しています。