Instance Pod configuration

予測される量

CloudNativePGは、 .spec.projectedVolumeTemplate を介してPostgresポッド内のカスタムファイルのマウントをサポートしています。この機能は、追加のデータファイルを必要とするいくつかのPostgres機能と拡張機能に役立ちます。 CloudNativePGでは、.spec.projectedVolumeTemplate フィールドは projected volume

Postgresポッドの/projected フォルダーの下に任意のデータをマウントできるKubernetesのテンプレート。

この単純な例は、既存の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

投影されたボリュームテンプレートを使用してシークレットとConfigMapをマウントする完全な例は、 cluster-example-projected-volume.yaml にあります。

展開マニフェスト。

エフェメラルボリューム

CloudNativePGは ephemeral volumes に依存しています

社内活動の一部。一時ボリュームは、ポッドの存続期間が唯一の期間存在し、ポッドが再起動されても持続しません。

一時ストレージのボリューム要求テンプレート

オペレーターはデフォルトでemptyDir ボリュームを使用しますが、 .spec.ephemeralVolumesSizeLimit field を使用してカスタマイズできます。これは、 .spec.ephemeralVolumeSource フィールドでボリューム要求テンプレートを指定することにより、オーバーライドできます。

次の例では、1Gi エフェメラルボリュームが設定されます。

apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
  name: cluster-example-ephemeral-volume-source
spec:
  instances: 3
  ephemeralVolumeSource:
    volumeClaimTemplate:
      spec:
        accessModes: ["ReadWriteOnce"]
        # example storageClassName, replace with one existing in your Kubernetes cluster
        storageClassName: "scratch-storage-class"
        resources:
          requests:
            storage: 1Gi

.spec.emphemeralVolumeSource.spec.ephemeralVolumesSizeLimit.temporaryData は同時に指定できません。

共有メモリのボリューム

このボリュームは、Postgresの共有メモリ領域として、およびエフェメラルタイプとして使用されますが、メモリに保存されます。クラスター仕様の.spec.ephemeralVolumesSizeLimit.shm フィールドを使用して、サイズの上限を構成できます。このフィールドは、 PostgreSQL running with `posix shared memory dynamic allocation <PostgreSQL Configuration>` の場合にのみ使用します。

環境変数

環境変数を使用して、一部のシステム動作をカスタマイズできます。一例は、カスタムLDAP構成ファイルをポイントできるLDAPCONF 変数です。別の例は、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 スタンザは、ConfigMapまたはシークレットを参照して、コンテンツを環境変数として使用できます。

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_NAME

  • NAMESPACE

  • 名前がPG で始まる環境変数。

env またはenvFrom セクションを変更すると、PostgreSQLポッドのローリング更新がトリガーされます。

env またはenvFrom セクションがシークレットまたはConfigMapを参照している場合、オペレーターはそれらの変更を検出せず、ロールアウトをトリガーしません。 kubeletはポッドと同じ動作を使用するため、ポッドのロールアウトを手動でトリガーする必要があります。