インスタンスポッド構成#
予測ボリューム#
CloudNativePGは、 .spec.projectedVolumeTemplate
を介してPostgresポッド内のカスタムファイルのマウントをサポートします。これは、追加のデータファイルを必要とするいくつかのPostgres機能と拡張機能に役立ちます。
CloudNativePGでは、 .spec.projectedVolumeTemplate
フィールドはkubernetesの projected volume テンプレートであり、ユーザーは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
投影されたボリュームテンプレートを使用してシークレットと構成マップをマウントする完全な例は、
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 に依存しています
社内活動の一部。一時ボリュームは、ポッドの存続期間が唯一の期間存在し、ポッドが再起動されても持続しません。
一時ストレージ用のボリューム#
一時的なストレージに使用されるエフェメラルボリューム。サイズの上限は、クラスター仕様のspec.ephemeralVolumesSizeLimit.temporaryData
フィールドを介して構成できます。
共有メモリのボリューム#
このボリュームは、Postgresの共有メモリ領域として使用されます。これもエフェメラルタイプですが、インメモリに保存されます。サイズの上限は、クラスター仕様のspec.ephemeralVolumesSizeLimit.shm
フィールドを介して構成できます。これは、
PostgreSQL running with `posix shared memory dynamic allocation <PostgreSQLの構成>` の場合にのみ使用されます。
環境変数#
一部のシステム動作は、環境変数を使用してカスタマイズできます。一例はLDAPCONF
変数で、カスタムLDAP構成ファイルをポイントする場合があります。別の例は、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またはSecretを参照して、そのコンテンツを環境変数として使用できます。
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ポッドのローリング更新がトリガーされます。
env またはenvFrom
セクションがシークレットまたはConfigMapを参照している場合、オペレーターはそれらの変更を検出せず、ロールアウトをトリガーしません。
Kubeletはポッドと同じ動作を使用し、ユーザーはポッドのロールアウトを手動でトリガーする必要があります。