インスタンス Pod 構成¶
予測ボリューム¶
CloudNativePG は、.spec.projectedVolumeTemplate を介して Postgres
ポッド内にカスタム
ファイルをマウントすることをサポートしています。これは、追加のデータ
ファイルを必要とするいくつかの Postgres 機能と拡張機能に役立ちます。
CloudNativePG では、.spec.projectedVolumeTemplate フィールドは
kubernetes の 予測ボリューム テンプレートであり、ユーザーは Postgres
ポッドの /projected フォルダーの下に任意のデータをマウントできます。
既存の tls シークレット (sample-secret という名前) をファイルとして
Postgres ポッドにマウントする方法の簡単な例を次に示します。
sample-secret のシークレット キー tls.crt と tls.key
の値は、Postgres ポッドのパス /projected/certificate/tls.crt と
/projected/certificate/tls.key にファイルとしてマウントされます。
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: cluster-example-projected-volumes
spec:
instances: 3
projectedVolumeTemplate:
sources:
- secret:
name: sample-secret
items:
- key: tls.crt
path: certificate/tls.crt
- key: tls.key
path: certificate/tls.key
storage:
size: 1Gi
Projected Volume テンプレートを使用して Secret と Configmap をマウントする完全な例は、 cluster-example-projected-volume.yaml 配置マニフェストにあります。
環境変数¶
一部のシステム動作は、環境変数を使用してカスタマイズできます。 1
つの例は LDAPCONF 変数で、カスタム LDAP
構成ファイルを指す場合があります。もう 1 つの例は、PostgreSQL
コンテナーで使用されるタイムゾーンを表す TZ 環境変数です。
CloudNativePG では、ユーザーはクラスター仕様の env および
envFrom スタンザを介してカスタム環境変数を設定できます。
以下は、Australia/Sydney
タイムゾーンをデフォルトのクラスターレベルのタイムゾーンとして使用する
PostgreSQL クラスターの定義です。
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: cluster-example
spec:
instances: 3
env:
- name: TZ
value: Australia/Sydney
storage:
size: 1Gi
envFrom スタンザは、ConfigMaps または Secrets
を参照して、それらのコンテンツを環境変数として使用できます。
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: cluster-example
spec:
instances: 3
envFrom:
- configMapRef:
name: config-map-name
- secretRef:
name: secret-name
storage:
size: 1Gi
オペレーターは、次の環境変数の設定を許可していません:
POD_NAMENAMESPACE名前が
PGで始まる環境変数。
env または envFrom セクションが変更されると、PostgreSQL Pod
のローリング更新がトリガーされます。
env または envFrom セクションがシークレットまたは ConfigMap
を参照する場合、オペレーターはそれらの変更を検出せず、ロールアウトをトリガーしません。
Kubelet は Pod で同じ動作を使用し、ユーザーは Pod
のロールアウトを手動でトリガーする必要があります。