Labels and annotations#

Kubernetesのリソースはフラット構造で編成され、階層情報やそれらの間の関係はありません。ただし、このようなリソースとオブジェクトは、 ラベル と アノテーション を介してリンクし、関係にすることができます。

注釈

詳細については、 annotations および labels に関するKubernetesドキュメントを参照してください。

簡単に言うと

  • アノテーションは、外部ツールとの統合を促進することを目的に、追加の非識別情報をリソースに割り当てるために使用されます。

  • ラベルは、オブジェクトをグループ化し、Kubernetesネイティブセレクター機能を介して照会するために使用されます。

EDB CloudNativePGクラスター展開で使用する1つ以上のラベルまたはアノテーションを選択できます。次に、クラスターのメタデータでこれらのラベルまたはアノテーションを定義すると、それによって作成されたすべてのリソースポッドを含むすべてに継承されるようにオペレーターを構成する必要があります。

注釈

ラベルとアノテーションの継承は、ポッドテンプレートなどの代替アプローチの代わりにEDB CloudNativePGクラスターによって採用された技術です。

事前定義されたラベル#

これらの事前定義されたラベルは、EDB CloudNativePG クラスターによって管理されます。

k8s.enterprisedb.io/backupDate ISO 8601形式のバックアップの日付 YYYYMMDD

k8s.enterprisedb.io/backupName バックアップ識別子、Backup およびVolumeSnapshot リソースでのみ使用可能

k8s.enterprisedb.io/backupMonth バックアップが取られた年/月

k8s.enterprisedb.io/backupTimeline バックアップが取られたインスタンスのタイムライン

k8s.enterprisedb.io/backupYear バックアップが取られた年

k8s.enterprisedb.io/cluster クラスターの名前

k8s.enterprisedb.io/immediateBackup バックアップがimmediate がtrue に設定されているScheduledBackup オブジェクトから作成された最初のバックアップである場合、 Backup リソースに適用されます

k8s.enterprisedb.io/instanceName PostgreSQLインスタンスの名前古い非推奨のpostgresql ラベルを置き換えます

k8s.enterprisedb.io/jobRole ジョブのロールつまり import 、initdb 、join , …

k8s.enterprisedb.io/onlineBackup バックアップがオンラインであるかホットか、Postgresがダウンしているときに取得されたかコールド

postgresql 非推奨、PostgreSQLインスタンスの名前。代わりにk8s.enterprisedb.io/instanceName を使用してください

k8s.enterprisedb.io/podRole プーラー展開専用のポッドとデータベースインスタンスに使用されるポッドを区別します

k8s.enterprisedb.io/poolerName PgBouncerプーラーの名前

k8s.enterprisedb.io/pvcRole PG_DATA やPG_WAL などのPVCの目的

k8s.enterprisedb.io/reload ConfigMap およびSecret リソースで使用できます。 true に設定されている場合、リソースの変更はオペレーターによって自動的にリロードされます。

k8s.enterprisedb.io/userType Secret 、 superuser Postgresスーパーユーザーアクセスまたはapp EDB CloudNativePGクラスター用語のアプリケーションレベルのユーザーのいずれかに関連付けられているPostgreSQLユーザーのタイプを指定し、EDB CloudNativePGクラスター通常はpostgres およびapp )。

role - 非推奨 ポッドで実行されているインスタンスがprimary またはreplica であるかどうか。このラベルは非推奨です。代わりにk8s.enterprisedb.io/instanceRole を使用する必要があります。

k8s.enterprisedb.io/scheduled-backup 使用可能な場合、特定のBackup オブジェクトを作成したScheduledBackup リソースの名前

k8s.enterprisedb.io/instanceRole ポッドで実行されているインスタンスがprimary またはreplica かどうか。

事前定義されたアノテーション#

これらの事前定義されたアノテーションは、EDB CloudNativePG クラスターによって管理されます。

container.apparmor.security.beta.kubernetes.io/* 名前付けたコンテナに適用するAppArmorプロファイルの名前。 AppArmorを使用してポッドアクセスを制限する を参照

詳細については。

k8s.enterprisedb.io/backupEndTime バックアップが終了した時刻。

k8s.enterprisedb.io/backupEndWAL バックアップ終了時のWAL。

k8s.enterprisedb.io/backupStartTime バックアップが開始された時刻。

k8s.enterprisedb.io/backupStartWAL バックアップ開始時のWAL。

k8s.enterprisedb.io/coredumpFilter Postgresプロセスのコアダンプを制御するフィルター、ビットマスクで表現されます。デフォルトでは、ダンプから共有メモリセグメントを除外するように0x31 に設定されます。 PostgreSQLコアダンプ を参照

詳細については、

k8s.enterprisedb.io/clusterManifest このリソースPVCなどを所有するCluster のマニフェスト。このラベルは、古い非推奨のk8s.enterprisedb.io/hibernateClusterManifest ラベルを置き換えます。

k8s.enterprisedb.io/fencedInstances JSON形式で表現された、フェンスする必要があるインスタンスのリスト。リストに* 要素が含まれる場合、クラスター全体がフェンスされます。

k8s.enterprisedb.io/forceLegacyBackup テスト目的のみでCluster リソースに適用され、バージョン3.4 2023年1月より前の--name オプションが使用できなかった場合のbarman-cloud-backup の動作をシミュレートします。

k8s.enterprisedb.io/hash リソースのハッシュ値。

k8s.enterprisedb.io/hibernation Cluster リソースに適用されて、 declarative hibernation feature を制御します。許可される値はon およびoff です。

k8s.enterprisedb.io/managedSecrets オペレーターによって管理され、各PostgresクラスターのServiceAccount リソースに自動的に設定されるシークレットをプルします。

k8s.enterprisedb.io/nodeSerial ポッドリソースで、Postgresクラスター内のインスタンスのシリアル番号を識別します。

k8s.enterprisedb.io/operatorVersion オペレーターのバージョン。

k8s.enterprisedb.io/pgControldata pg_controldata コマンドの出力。このアノテーションは、古い非推奨のk8s.enterprisedb.io/hibernatePgControlData アノテーションを置き換えます。

k8s.enterprisedb.io/podEnvHash k8s.enterprisedb.io/podSpec アノテーションにもポッド環境が含まれるため、非推奨。

k8s.enterprisedb.io/podSpec オペレーターによって生成されたポッドのspec のスナップショット。このアノテーションは、古い非推奨のk8s.enterprisedb.io/podEnvHash アノテーションを置き換えます。

k8s.enterprisedb.io/poolerSpecHash プーラーリソースのハッシュ。

k8s.enterprisedb.io/pvcStatus PVCの現在のステータス initializing 、ready 、またはdetached 。

k8s.enterprisedb.io/reconcilePodSpec アノテーションをCluster またはPooler に適用して、再起動を防止できます。

Cluster でdisabled に設定されている場合、オペレーターはPodSpecの変更によるインスタンスが再起動しないようにします。これには、次の変更が含まれます。

- Topology or affinity
- Scheduler
- Volumes or containers

Pooler でdisabled に設定されている場合、オペレーターはspec.instances への変更を除き、展開仕様の変更を制限します。

k8s.enterprisedb.io/reconciliationLoop Cluster でdisabled に設定されている場合、オペレーターは調整ループの実行を防止します。

k8s.enterprisedb.io/reloadedAt 最新のクラスターreload 時間が含まれます。 reload は、プラグインを介してユーザーによってトリガーされます。

k8s.enterprisedb.io/skipEmptyWalArchiveCheck Cluster リソースでtrue に設定されている場合、オペレーターは、データを書き込む前にWALアーカイブが空であることを確認するチェックを無効にします。自分の責任で使用してください。

k8s.enterprisedb.io/skipWalArchiving Cluster リソースでenabled に設定されている場合、オペレーターはWALアーカイブを無効にします。これにより、archive_mode がoff に設定され、すべてのPostgreSQLインスタンスの再起動が必要です。自分の責任で使用してください。

k8s.enterprisedb.io/snapshotStartTime スナップショットが開始された時刻。

k8s.enterprisedb.io/snapshotEndTime スナップショットが使用する準備ができているとしてマークされた時間。

kubectl.kubernetes.io/restartedAt 利用可能な場合、最後にPostgresクラスターの再起動が要求された時間。

前提条件#

デフォルトでは、クラスターのメタデータで定義されたラベルまたはアノテーションは、関連付けられたリソースに継承されません。ラベル/アノテーションの継承を有効にするには、 Operator configuration で提供されている手順に従ってください。

以下はその例の続きであり、次のことに制限します。

  • アノテーション categories

  • ラベル app 、environment 、およびworkload

注釈

注釈とラベルの両方に、コンテキストに最も適した名前を自由に選択してください。名前付けにワイルドカードを使用し、すべてのラベルに`mycompany/*` を使用したり、mycompany/ で始まるアノテーションを継承するように設定したりするなどの戦略を採用することもできます。

クラスターのメタデータの定義#

クラスターを定義するときに、リソースがデプロイされる前に、次のようにメタデータを設定できます。

apiVersion: postgresql.k8s.enterprisedb.io/v1
kind: Cluster
metadata:
  name: cluster-example
  annotations:
    categories: database
  labels:
    environment: production
    workload: database
    app: sso
spec:
     # ... <snip>

クラスターが展開されると、たとえば、ポッドにラベルが正しく設定されたことを確認できます。

kubectl get pods --show-labels

現在の制限#

現在、EDB CloudNativePGクラスターは、ラベルまたは注釈の削除を自動的に伝播しません。したがって、以前に基になるポッドに伝播されたクラスターからアノテーションまたはラベルが削除される場合、オペレーターは、関連するリソースでそれを削除しません。