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

この例では、ttclassic Helmチャートを使用して、レプリケートされないTimesTen Classicデータベースを作成する方法を示します。この例では、YAMLマニフェスト・ファイルを使用し、ファイル用にkube_files/helm/customyamlディレクトリが作成されていることを前提としています。

  1. 開発ホストで、helmディレクトリに変更します。
    cd kube_files/helm
  2. レプリケートされない構成の変数を定義するYAMLファイルを作成します。
    vi customyaml/norepsamplehelm.yaml
    
    storageClassName: oci-bv
    storageSize: 10Gi
    image:
      repository: container-registry.oracle.com/timesten/timesten
      tag: "22.1.1.27.0"
    imagePullSecret: sekret
    replicationTopology: none
    replicas: 3
    rollingUpdatePartition: 2
    dbConfigMap:
      - name: norepsamplehelm
      directory: cm
    次の点に注目してください。
    • storageClassNameoci-bvです。oci-bvを記憶域クラスの名前に置き換えます。

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

    • image変数の場合:
      • repository: repositorycontainer-registry.oracle.com/timesten/timestenです。container-registry.oracle.com/timesten/timestenを、TimesTenコンテナ・イメージの名前と場所に置き換えます。

      • tag: タグは22.1.1.27.0です。tagをTimesTenリリースのタグに置き換えます。

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

    • レプリケートされない構成の場合:

      • replicationTopologynoneで、replicas個のポッドで構成されるレプリケートされない構成を示します。各ポッドには、独立したTimesTenデータベースが含まれています。

      • replicasの数は3で、ポッドの数を示します。各ポッドにTimesTenデータベースが含まれています。3を、プロビジョニングするポッドの数に置き換えます。有効な値は1から3の間であり、1がデフォルトです。

      • rollingUpdatePartition2です。この変数はアップグレードに固有であり、アップグレードするTimesTenデータベースの数を決定します。Kubernetesは、rollingUpdatePartition値以上の序数値でポッドをアップグレードします。たとえば、レプリケートされないポッドが3つ(replicas = 3であり、ポッドはnorepsamplehelm-0norepsamplehelm-1およびnorepsamplehelm-2)あり、rollingUpdatePartition2に設定した場合、norepsamplehelm-2ポッドはアップグレードされますが、norepsamplehelm-1およびnorepsamplehelm-0ポッドはアップグレードされません。アップグレード・セクションには、rollingUpdatePartitionの動作を示す例があります。アップグレード・プロセス中に値を変更することもできます。
    • ConfigMapの名前はnorepsamplehelmです。メタデータ・ファイルの場所は、kube_file/helm/ttclassicディレクトリ・ツリー内のcmディレクトリにあります。
  3. ttclassicチャートをインストールします。
    helm install -f customyaml/norepsamplehelm.yaml norepsamplehelm ./ttclassic
    次のhelm installコマンドを見てみましょう。
    • -fオプションは、YAMLファイルがhelm installコマンドに渡されることを示します。

    • カスタマイズを含むYAMLファイルの名前は、customyamlディレクトリにあるnorepsamplehelm.yamlです。

    • リリースの名前はnorepsamplehelmです。

    • チャートの名前はttclassicで、これはkube_files/helm/ttclassicディレクトリにあります。

    helm installコマンドの出力を見てみましょう。

    NAME: norepsamplehelm
    LAST DEPLOYED: Sun Aug  4 17:42:47 2024
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    NOTES:
    Version 2211270.1.0 of the ttclassic chart has been installed.
    
    This release is named "norepsamplehelm".
    
    To learn more about the release, try:
    
      $ helm status norepsamplehelm
      $ helm get all norepsamplehelm
      $ helm history norepsamplehelm
    
    To rollback to a previous version of the chart, run:
    
      $ helm rollback norepsamplehelm <REVISION>
        - run 'helm history norepsamplehelm' for a list of revisions.
    
    次の点に注目してください。
    • ttclassicチャートのバージョンは、TimesTenリリース22.1.1.27.0に対応する2211270.1.0です。

    • リリース名はnorepsamplehelmです。

    • リリースのステータスはdeployedです。

  4. (オプション)リリースを確認します。
    helm list
    出力は、次のようになります。
    
    NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
    norepsamplehelm default         1               2024-08-04 17:42:47.180635098 +0000 UTC deployed        ttclassic-2211270.1.0   22.1.1.26.0

    helm listコマンドは、norepsamplehelmリリースが存在し、ネームスペースにインストールされていることを示します。

  5. 進捗を監視します。
    NAME              STATE             ACTIVE   AGE
    norepsamplehelm   NoReplicasReady   N/A      94s
    

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

    数分間待機します。次に、再度確認します。
    kubectl get ttc norepsamplehelm
    出力は、次のようになります。
    NAME              STATE              ACTIVE   AGE
    norepsamplehelm   AllReplicasReady   N/A      12m
    

    プロビジョニング・プロセスが完了します。データベースは稼働中であり、AllReplicasReady状態で示されるとおり、動作しています。

  6. ConfigMapおよびメタデータ・ファイルが存在することを確認します。
    kubectl get configmap norepsamplehelm
    出力は、次のようになります。
    NAME              DATA   AGE
    norepsamplehelm   4      15m
    

    メタデータ・ファイルを確認します。

    kubectl describe configmap norepsamplehelm

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

    Name:         norepsamplehelm
    Namespace:    default
    Labels:       app.kubernetes.io/managed-by=Helm
    Annotations:  meta.helm.sh/release-name: norepsamplehelm
                  meta.helm.sh/release-namespace: default
    
    Data
    ====
    testUser:
    ----
    sampletestuser/sampletestuserpwd1
    
    adminUser:
    ----
    adminuser/adminuserpwd
    
    db.ini:
    ----
    PermSize=200
    DatabaseCharacterSet=AL32UTF8
    
    schema.sql:
    ----
    create table adminuser.emp (id number not null primary key, name char (32));
    
    
    BinaryData
    ====
    
    Events:  <none>

    norepsamplehelm ConfigMapが存在し、メタデータ・ファイルが含まれています。testUserファイルが存在するため、Helmを使用してTimesTenをテストできます。「レプリケートされない構成のTimesTenのテスト」を参照してください。

  7. (オプション)ポッドを確認します。
    kubectl get pods
    出力は、次のようになります。
    NAME                              READY   STATUS    RESTARTS   AGE
    norepsamplehelm-0                 3/3     Running   0          17m
    norepsamplehelm-1                 3/3     Running   0          17m
    norepsamplehelm-2                 3/3     Running   0          17m
    ...

    ネームスペース内で3つのポッドが実行されており、それぞれに独立したTimesTenデータベースが含まれています。

おめでとうございます。レプリケートされない構成のttclassicチャートが正常にインストールされました。TimesTenデータベースは稼働中であり、完全に動作しています。