Before You Start

始める前に、KubernetesおよびPostgreSQLに固有の用語を検討することが不可欠です。

Kubernetesの用語

Resource

Description

[Node](https://kubernetes.io/docs/concepts/architecture/nodes/)

*ノード*はKubernetesの仮想マシンまたは物理的マシンのワーカーマシンで、ポッドの実行に必要なすべてのサービスはコントロールプレーンノードによって管理されます。

[Pod](https://kubernetes.io/docs/concepts/workloads/pods/pod/)

  • pod *は、Kubernetesクラスターに展開できる最小のコンピューティングユニットであり、ネットワークとストレージを共有する1つ以上のコンテナーで構成されます。

[Service](https://kubernetes.io/docs/concepts/services-networking/service/)

*サービス*は、ポッドのグループで実行されるアプリケーションをネットワークサービスとして公開し、アプリケーション全体のサービス検出、負荷分散、フェイルオーバーなどの重要な機能を標準化する抽象化です。

[Secret](https://kubernetes.io/docs/concepts/configuration/secret/)

*シークレット*は、パスワード、アクセスキー、トークンなどの少量の機密データを保存し、ポッドで使用するように設計されたオブジェクトです。

[Storage Class](https://kubernetes.io/docs/concepts/storage/storage-classes/)

*ストレージクラス*を使用すると、管理者は、プロビジョニング担当者(AWS EBSなど)、再生ポリシー、マウントオプション、ボリューム拡張などを含むクラスター内のストレージのクラスを定義できます。

[Persistent Volume](https://kubernetes.io/docs/concepts/storage/persistent-volumes/)

永続ボリューム*(PV)は、管理者が手動でプロビジョニングしたストレージ、または*ストレージクラス*コントローラが動的にプロビジョニングしたストレージを表すKubernetesクラスター内のリソースです。 PVは、*永続的なボリューム要求*を使用してポッドに関連付けられ、そのライフサイクルはそれを使用するポッドとは無関係です。通常、PVは、特にパブリッククラウドでは、ネットワークボリュームです。 [*local persistent volume (LPV)](https://kubernetes.io/docs/concepts/storage/volumes/#local)は、それを使用するポッドが実行されている特定のノードにのみ存在する永続的なボリュームです。

[Persistent Volume Claim](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims)

*永続ボリューム要求*(PVC)は、サイズ、アクセスモード、または特定のストレージクラスを含むストレージの要求を表します。ポッドがノードリソースを消費する方法と同様に、PVCはPVのリソースを消費します。

[Namespace](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/)

*名前空間*は、Kubernetesクラスターのロジカルかつ分離されたサブセットであり、より広い物理的クラスター内の*仮想クラスター*として見ることができます。名前空間を使用すると、管理者はプロジェクト、部門、チームなどに基づいて個別の環境を作成できます。

[RBAC](https://kubernetes.io/docs/reference/access-authn-authz/rbac/)

*ロールベースのアクセス制御*(RBAC)は、*ロールベースのセキュリティ*とも呼ばれ、ネットワークおよびシステムのリソースへのアクセスを許可されたユーザーのみに制限するためのコンピュータシステムセキュリティで使用されるメソッドです。 Kubernetesには、名前空間とクラスターレベルでロールを制御し、特定のリソースや個人に関連付けるためのネイティブAPIがあります。

[CRD](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/)

*カスタムリソース定義*(CRD)はKubernetes APIの拡張であり、開発者は*カスタムリソース*と呼ばれる新しいデータ型とオブジェクトを作成できます。

[Operator](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/)

*演算子*は、1つ以上のアプリケーションまたは特定のサービスを管理するときに人間の演算子によって通常実行されるステップを自動化するカスタムリソースです。演算子はKubernetesを支援して、リソースの定義された状態が常に観察された状態と一致するようにします。

[kubectl](https://kubernetes.io/docs/reference/kubectl/overview/)

`kubectl`は、Kubernetesクラスターの管理に使用されるコマンドラインツール。

CloudNativePGにはKubernetes 1.19以降が必要です。

PostgreSQLの用語

Resource

Description

Instance

「IPアドレス」と「TCPポート」のペア(通常5432)で実行およびリッスンするPostgresサーバプロセス。

Primary

読み取り操作と書き込み操作の両方を受け入れることができるPostgreSQLインスタンス。

Replica

クラスター内の唯一のプライマリインスタンスからレプリケートするPostgreSQLインスタンスは、先行書き込みログ(WAL)レコードのストリームを読み取ることで更新され続けます。レプリカは、*スタンバイ*または*二次的な*サーバーとも呼ばれます。 PostgreSQLは、物理的ストリーミングレプリケーション(async / sync)とファイルベースのログシッピング(async)に依存しています。

Hot Standby

*レプリカ*が読み取り専用ワークロードを受け入れることができるPostgreSQL機能。

Cluster

高可用性(HA)クラスターとしての使用:単一のプライマリとオプショナルの任意の数のレプリカで構成されるPostgreSQLインスタンスのセット。

Replica Cluster

通常はKubernetesクラスターの外部にある、選択したPostgreSQLクラスターからの連続リカバリモードのCloudNativePG Cluster。これは、プライベート、パブリック、ハイブリッド、およびマルチクラウドコンテキストでのマルチクラスター展開を可能にする機能です。

Designated Primary

別のPostgreSQLクラスターから継続的にリカバリされ、レプリカクラスターがプライマリになる場合にプライマリになるように指定されているレプリカクラスター内のPostgreSQLスタンバイインスタンス。

Superuser

PostgreSQLでは、*スーパーユーザ*は、`LOGIN`と`SUPERUSER`の両方の特権を持つ任意のロールです。セキュリティ上の理由から、CloudNativePGは、ローカルUnixドメインソケットを介して`peer`認証を介して`postgres`ユーザとして`postgres`データベースに接続することにより、管理タスクを実行します。

クラウドの用語

Resource

Description

Region

クラウド内の*リージョン*は、*可用性ゾーン*で編成された独立した独立した地理的領域です。リージョン内のゾーンには、往復のネットワークレイテンシがほとんどありません。

Zone

クラウド内の*可用性ゾーン*(*ゾーン*とも呼ばれる)は、リソースを展開できる領域内の領域です。通常、可用性ゾーンはデータセンターまたは同じデータセンターの隔離された建物に対応します。

次にすること

用語を理解したので、選択したクラウド環境に演算子をデプロイする前に test CloudNativePG on your laptop using a local cluster を決定することができます。