/ttconfigディレクトリの移入
様々な方法を使用して、メタデータ・ファイルがTimesTenコンテナの/ttconfig
ディレクトリに配置されるようにできます。どの方法を使用するかについての要件はありません。Kubernetesは、考慮する必要があるConfigMap、シークレット、初期化コンテナなどの機能を提供します。
ConfigMapおよびシークレットの使用
1つ以上のConfigMapおよび1つ以上のシークレットを使用して、メタデータ・ファイルをTimesTenコンテナに組み込むことができます。これにより、異なるデプロイメントに異なるTimesTenメタデータを指定できます。また、パスワードや証明書などの機密データを含むメタデータにシークレットを使用できます。
ConfigMapを使用してメタデータをポッドに移入する方法は、標準的なKubernetesの手法です。メリットの1つは、作成後にConfigMapを変更できることです。この結果、ポッド内のファイルが即時に更新されます。
ノート:
TimesTenは、すぐには認識せずに、ファイルの変更されたコンテンツを処理する場合があります。
ConfigMapおよびシークレットを使用してメタデータを保持し、TimesTenClassicオブジェクト定義内でそれらを参照する場合、TimesTenオペレータはtt-config
という予測ボリュームを作成します。このtt-config
ボリュームには、TimesTenClassicオブジェクトまたはTimesTenScaleoutオブジェクトのdbConfigMap
フィールドとdbSecret
フィールドで指定されたすべてのConfigMapのコンテンツとすべてのシークレットが含まれています。このボリュームはTimesTenコンテナに/ttconfig
としてマウントされます。
ノート:
dbConfigMap
項目とdbSecret
データ項目を使用して、TimesTenClassicまたはTimesTenScaleoutオブジェクト内の1つ以上のConfigMapまたはシークレット(あるいはその両方)を指定できます。その結果、これらのConfigMapまたはシークレット(あるいはその両方)が/ttconfig
で読取り専用でマウントされます。このようなマウントは読取り専用であるため、初期化コンテナからそれに書き込むことはできません。別の方法として、emptydir
ボリュームを使用し初期化コンテナを使用してそれにファイルを書き込むことはできます。ただし、ConfigMapとシークレットを初期化コンテナと組み合せることはできません。初期化コンテナの使用については、「初期化コンテナの使用」を参照してください。
ConfigMapおよびシークレットを使用するには、次のプロセスに従います。
-
どの機能にどのメタデータ・ファイルを含めるかを決定します。たとえば、すべてのメタデータ・ファイルに対して1つのConfigMapを使用できます。または、たとえば、
db.ini
メタデータ・ファイルに1つのConfigMapを使用し、adminUser
およびschema.sql
メタデータ・ファイルに1つのシークレットを使用できます。特定の要件はありません。 -
メタデータ・ファイルを格納するディレクトリを作成します。
-
kubectl
create
コマンドを使用して、KubernetesクラスタにConfigMapおよびシークレットを作成します。 -
TimesTenClassicオブジェクト定義またはTimesTenScaleoutオブジェクト定義にConfigMapおよびシークレットを含めます。
次の例は、TimesTenClassicオブジェクトまたはTimesTenScaleoutオブジェクトにConfigMapおよびシークレットを使用する方法を示しています。
1つのConfigMapを使用する例
この例では、db.ini
、adminUser
およびschema.sql
メタデータ・ファイルに1つのConfigMap (sample
という名前)を使用します。
このConfigMapは、TimesTenClassicオブジェクトまたはTimesTenScaleoutオブジェクトに使用できます。
初期化コンテナの使用
初期化コンテナを使用して、メタデータ・ファイルをTimesTenコンテナの/ttconfig
ディレクトリに配置できます。初期化コンテナでは、独自のスクリプトを作成して、/ttconfig
ディレクトリに移入できます。初期化コンテナは、TimesTenClassicオブジェクトおよびTimesTenScaleoutオブジェクトに使用できます。初期化コンテナの詳細は、次を参照してください。
https://kubernetes.io/docs/concepts/workloads/pods/init-containers
ノート:
dbConfigMap
項目とdbSecret
データ項目を使用して、TimesTenClassicまたはTimesTenScaleoutオブジェクト内の1つ以上のConfigMapまたはシークレット(あるいはその両方)を指定できます。その結果、これらのConfigMapまたはシークレット(あるいはその両方)が/ttconfig
で読取り専用でマウントされます。このようなマウントは読取り専用であるため、初期化コンテナからそれに書き込むことはできません。別の方法として、emptydir
ボリュームを使用し初期化コンテナを使用してそれにファイルを書き込むことはできます。ただし、ConfigMapとシークレットを初期化コンテナと組み合せることはできません。ConfigMapとシークレットの使用については、「ConfigMapおよびシークレットの使用」を参照してください。
TimesTenClassicオブジェクトに初期化コンテナを使用する方法を示す例を次に示します。template
要素は必須です。この要素は、TimesTen Classicインスタンスを含むポッドに適用されます。この例は、/ttconfig
ディレクトリに移入するスクリプトを指定する場所を示しています。また、TimesTenClassicオブジェクトのvolumes
フィールドでtt-config
ボリューム名を使用します。tt-config
名でボリュームを指定すると、TimesTenコンテナの/ttconfig
に自動的にマウントされます。
apiVersion: timesten.oracle.com/v3 kind: TimesTenClassic metadata: name: init1 spec: ttspec: storageClassName: oci-bv storageSize: 250Gi image: container-registry.oracle.com/timesten/timesten:22.1.1.30.0 imagePullSecret: sekret template: spec: imagePullSecrets: - name: sekret initContainers: - name: initclassic image: container-registry.oracle.com/timesten/timesten:22.1.1.30.0 command: - sh - "-c" - | /bin/bash <<'EOF' Your script to populate /ttconfig goes here EOF volumeMounts: - name: tt-config mountPath: /ttconfig volumes: - name: tt-config emptyDir: {}
TimesTenScaleoutオブジェクトに初期化コンテナを使用する場合は、メタデータ・ファイルをdataTemplate
要素とmgmtTemplate
要素の両方に配置する必要があります。