インスタンスポッド構成 ====================== .. raw:: html 予測される量 ------------ 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`` にファイルとしてマウントされます。 .. code:: yaml 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をマウントする完全な例を見つけることができます。 :: apiVersion: postgresql.cnpg.io/v1 kind: Cluster metadata: name: cluster-example-projected-volume spec: instances: 3 projectedVolumeTemplate: sources: - secret: name: sample-secret items: - key: tls.crt path: certificate/tls.crt - key: tls.key path: certificate/tls.key - configMap: name: sample-configmap items: - key: key1 path: config/key1 - key: key2 path: config/key2 storage: size: 1Gi - -- apiVersion: v1 data: tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQekNDQWVXZ0F3SUJBZ0lRSHVDY2lKcDVkZis0dHZBcDBrTk9rekFLQmdncWhrak9QUVFEQWpCTk1TTXcKSVFZRFZRUUxFeHB3YjNOMFozSmxjM0ZzTFc5d1pYSmhkRzl5TFhONWMzUmxiVEVtTUNRR0ExVUVBeE1kY0c5egpkR2R5WlhOeGJDMXZjR1Z5WVhSdmNpMWpZUzF6WldOeVpYUXdIaGNOTWpJd09USTVNRGMxTVRBNVdoY05Nakl4Ck1qSTRNRGMxTVRBNVdqQk5NVXN3U1FZRFZRUURFMEp3YjNOMFozSmxjM0ZzTFc5d1pYSmhkRzl5TFhkbFltaHYKYjJzdGMyVnlkbWxqWlM1d2IzTjBaM0psYzNGc0xXOXdaWEpoZEc5eUxYTjVjM1JsYlM1emRtTXdXVEFUQmdjcQpoa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVJRd2lhUm0wSmN4TzlBVlE0MVlqVlRqNUhDSVVFblFQOXNZRXFKCmYvNE1mVm53NkdDOThjNDNmQTVuS2UwSnQ5ZEV3QXREYktkdkRoeDlUTmIzdVY0K280R21NSUdqTUE0R0ExVWQKRHdFQi93UUVBd0lEcURBVEJnTlZIU1VFRERBS0JnZ3JCZ0VGQlFjREFUQU1CZ05WSFJNQkFmOEVBakFBTUI4RwpBMVVkSXdRWU1CYUFGQjN6cUVKbWFORENoRDdkWGptSWRlNEhUY0pFTUUwR0ExVWRFUVJHTUVTQ1FuQnZjM1JuCmNtVnpjV3d0YjNCbGNtRjBiM0l0ZDJWaWFHOXZheTF6WlhKMmFXTmxMbkJ2YzNSbmNtVnpjV3d0YjNCbGNtRjAKYjNJdGMzbHpkR1Z0TG5OMll6QUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpQkMwS2M5WWxYelBpL0lhTkRnWHkwawpYTDJpNlZzSHRORTFxN3MzWXh6Mm53SWhBS2IxUW5EVTlqRnNVK0l5a292TitVU1ZpVm5vU2MvZ2RXWkxmMnhoCjZ2WUsKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo= tls.key: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUtucWxVQjFqU2sxWW5VZzAyb0tGbXlRdDJLUEZwaFc0K1lmQUFmUFdRenVvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFVU1JbWtadENYTVR2UUZVT05XSTFVNCtSd2lGQkowRC9iR0JLaVgvK0RIMVo4T2hndmZITwpOM3dPWnludENiZlhSTUFMUTJ5bmJ3NGNmVXpXOTdsZVBnPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo= kind: Secret metadata: name: sample-secret type: kubernetes.io/tls - -- apiVersion: v1 data: key1: value1 key2: value2 key3: value3 kind: ConfigMap metadata: name: sample-configmap エフェメラルボリューム ---------------------- CloudNativePGは `ephemeral volumes `_ に依存しています 社内活動の一部。一時ボリュームは、ポッドの存続期間が唯一の期間存在し、ポッドが再起動されても持続しません。 一時ストレージのボリューム要求テンプレート ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ オペレーターはデフォルトで\ ``emptyDir`` ボリュームを使用しますが、 ``.spec.ephemeralVolumesSizeLimit field`` を使用してカスタマイズできます。これは、 ``.spec.ephemeralVolumeSource`` フィールドでボリューム要求テンプレートを指定することにより、オーバーライドできます。 次の例では、\ ``1Gi`` エフェメラルボリュームが設定されます。 .. code:: yaml 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`` フィールドを使用して、サイズの上限を構成できます。このフィールドは、 :ref:`PostgreSQL running with `posix` shared memory dynamic allocation ` の場合にのみ使用します。 環境変数 -------- 環境変数を使用して、一部のシステム動作をカスタマイズできます。一例は、カスタムLDAP構成ファイルをポイントできる\ ``LDAPCONF`` 変数です。別の例は、PostgreSQLコンテナが使用するタイムゾーンを表す\ ``TZ`` 環境変数です。 CloudNativePGでは、クラスター仕様の\ ``env`` および\ ``envFrom`` スタンザを使用して、カスタム環境変数を設定できます。 この例では、デフォルトのクラスターレベルのタイムゾーンとして\ ``Australia/Sydney`` タイムゾーンを使用してPostgreSQLクラスターを定義します。 .. code:: yaml 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またはシークレットを参照して、コンテンツを環境変数として使用できます。 .. code:: yaml 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はポッドと同じ動作を使用するため、ポッドのロールアウトを手動でトリガーする必要があります。