クイックスタート

このセクションでは、

Kind または Minikube のローカルKubernetesクラスターでCloudNativePGを使用して、ラップトップ/コンピューターでPostgreSQLクラスターをテストする方法について説明します。

警告

このセクションに含まれる手順は、デモンストレーション、テスト、および練習のみを目的としているため、実稼働環境では使用しないでください。

他のKubernetesアプリケーションと同様に、CloudNativePGはYAMLで書かれた通常のマニフェストを使用して展開されます。

このページの手順に従うと、ローカルのKubernetesインストールでPostgreSQLクラスターを起動し、実験できるはずです。

重要

Kubernetesクラスターに接続するためには、マシンに`kubectl` がインストールされていることを確認してください。 how to install `kubectl <https://kubernetes.io/docs/tasks/tools/install-kubectl/>`_ のKubernetesドキュメントに従ってください。

パート1:ローカルKubernetesプレイグラウンドをセットアップする

最初の部分は、MinikubeまたはKindのインストールに関するものです。時間をかけてシステムについて読み、どれを続行するかを決定してください。いずれかの設定を行ったら、パート2に進んでください。

パート4 PrometheusとGrafanaを使用してクラスターを監視する では、ローカルテスト/評価のためにPrometheusとGrafanaを使用したモニタリングを設定する手順も提供します

Minikube

Minikubeは、Kubernetesをローカルで簡単に実行できるツールです。 Minikubeは、Kubernetesを試してみるか、日常的に開発しようとしているユーザーのために、ラップトップの仮想マシンVM内でシングルノードKubernetesクラスターを実行します。通常、VirtualBoxと組み合わせて使用します。

詳細については、ローカルの個人環境の公式Kubernetes documentation on how to install Minikubeで見つけることができます。インストールしたら、次のコマンドを実行してminikubeクラスターを作成します。

minikube start

これにより、Kubernetesクラスターが作成され、使用する準備が整います。次のコマンドで動作することを確認します。

kubectl get nodes

minikube という名前のノードが1つ表示されます。

種類

仮想マシンハイパーバイザーを使用したくない場合、 Kindは、Dockerコンテナ「ノード」を使用してローカルKubernetesクラスターを実行するためのツールです。Kindは、確かに「Kubernetes IN Docker」の略です。

Quickstart の指示に従って、環境にkind

をインストールし、次のKubernetesクラスターを作成します。

kind create cluster --name pg

パート2 CloudNativePGのインストール

ラップトップでKubernetesインストールをアップして実行しているため、CloudNativePGのインストールに進むことができます。

インストールとアップグレード セクションを参照して、PostgreSQLクラスターの展開を続行してください。

パート3 PostgreSQLクラスターを展開する

Kubernetesの他の展開と同様に、PostgreSQLクラスターを展開するには、目的のCluster を定義する構成ファイルを適用する必要があります。

は

apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
  name: cluster-example
spec:
  instances: 3

  storage:
    size: 1Gi

サンプルファイルは、デフォルトのストレージクラスを使用して単純なCluster を定義して、ディスク領域を割り当てます。

apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
  name: cluster-example
spec:
  instances: 3

  storage:
    size: 1Gi

3ノードPostgreSQLクラスターを作成するには、次のコマンドを実行する必要があります。

kubectl apply -f cluster-example.yaml

get pods コマンドでポッドが作成されていることを確認できます。

kubectl get pods

これにより、デフォルトの名前空間でポッドが検索されます。 Kubernetesインストールの他のワークロードからクラスターを分離するには、クラスターを展開する新しい名前空間をいつでも作成できます。または、ラベルを使用できます。オペレーターは、特定のクラスターに関連するすべてのオブジェクトにcnpg.io/cluster ラベルを適用します。例

kubectl get pods -l cnpg.io/cluster=<CLUSTER>

重要

ラベルとして`cnpg.io/cluster` を使用していることに注意してください。過去に`postgresql` を見たり使用したりしたことがあるかもしれません。このラベルは非推奨であり、将来的に削除される予定です。 cngp.io/cluster を使用してください。

デフォルトでは、オペレーターは、オペレーターがリリースされたときにPostgreSQLの最新メジャーバージョンの利用可能な最新のマイナーバージョンをインストールします。 Cluster 定義のspec セクションでimageName キーを設定することにより、これをオーバーライドできます。例、PostgreSQL 13.6をインストールするには

apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
   # [...]
spec:
   # [...]
   imageName: ghcr.io/cloudnative-pg/postgresql:13.6
   #[...]

重要

不変のインフラストラクチャパラダイムでは、常にコンテナイメージの特定のバージョンをポイントする必要があります。クラスター内の更新ポリシーとバージョンの一貫性の点で予期せぬシナリオが発生する可能性があるため、実稼働環境では`latest` や`13` のようなタグを使用しないでください。厳密な決定論的で反復可能な展開の場合、 <image>:<tag>@sha256:<digestValue> 形式を介してイメージ名にダイジェストを追加できます。

パート4 PrometheusとGrafanaを使用してクラスターを監視する

重要

PrometheusとGrafanaのインストールは、このプロジェクトの範囲を超えています。このセクションの手順は、実験と説明のみを目的として提供されています。

このセクションでは、可観測性を実現するためにPrometheusとGrafanaを展開する方法、CloudNativePGクラスターを監視するためのGrafanaダッシュボードを作成する方法、およびアラート条件を定義するPrometheusルールセットを示します。

Kube-Prometheus stack , Helmチャートを利用します。これは、 Prometheus Community によって維持されます。追加のドキュメントと背景については、プロジェクトのWebサイトを参照してください。

Kube-Prometheus-stack Helmチャートは、 Prometheus Operator

Alert Manager を含む Grafana 展開をインストールします。

このHelmチャートの展開のための構成ファイルが含まれており、CloudNativePGクラスターのオブザーバビリティに役立つ初期設定を提供します。

インストール

Helm をまだインストールしていない場合は、 instructions の指示に従ってシステムにインストールしてください。

prometheus-community Helmチャートリポジトリを追加し、提供するサンプル構成を使用して Kube Prometheusスタック をインストールする必要があります。

これは、次のコマンドで実行できます。

helm repo add prometheus-community \
  https://prometheus-community.github.io/helm-charts

helm upgrade --install \
  -f https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/main/docs/src/samples/monitoring/kube-stack-config.yaml \
  prometheus-community \
  prometheus-community/kube-prometheus-stack

完了すると、Prometheus、Grafana、およびAlert Managerがkube-stack-config.yaml ファイルの値でインストールされます。

  • Prometheusインストールから、 any PodMonitor *monitoring* を参照してください。

  • Grafanaインストールは、Grafanaダッシュボード ConfigMap を監視します。

参考

上記のコマンドの詳細については、 helm install ドキュメントを参照してください。

いくつかのカスタムリソースが作成されたことがわかります。

% kubectl get crds
NAME                                        CREATED AT
…
alertmanagers.monitoring.coreos.com         <timestamp>
…
prometheuses.monitoring.coreos.com          <timestamp>
prometheusrules.monitoring.coreos.com       <timestamp>
…

および一連のサービス

% kubectl get svc
NAME                                      TYPE        PORT(S)
…                                         …           …
prometheus-community-grafana              ClusterIP   80/TCP
prometheus-community-kube-alertmanager    ClusterIP   9093/TCP
prometheus-community-kube-operator        ClusterIP   443/TCP
prometheus-community-kube-prometheus      ClusterIP   9090/TCP

Prometheusでの表示

この時点で、モニタリングをアクティブ化して展開されたCloudNativePGクラスターは、Prometheusを介して監視できます。

たとえば、PodMonitor を有効にした単純なクラスターを展開できます。

kubectl apply -f - <<EOF
- --
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
  name: cluster-with-metrics
spec:
  instances: 3

  storage:
    size: 1Gi

  monitoring:
    enablePodMonitor: true
EOF

Prometheusにアクセスするには、Prometheusサービスをポート転送します。

kubectl port-forward svc/prometheus-community-kube-prometheus 9090

次に、次のPrometheusコンソールにローカルにアクセスします。 http://localhost:9090/

モニタリングスタックが正常に展開され、enablePodMonitor: true を使用したクラスターがあると仮定すると、CloudNativePGクラスターに関連する一連のメトリックを見つける必要があります。詳細については、

*monitoring section* を参照してください。

local prometheus

local prometheus

prometheusRule を作成することにより、いくつかのアラートを定義できるようになりました。

kubectl apply -f \
  https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/main/docs/src/samples/monitoring/prometheusrule.yaml

デフォルトのアラートが表示されます。

% kubectl get prometheusrules
NAME                                                       AGE
cnpg-default-alerts                                        3m27s

Prometheusコンソールで、 Alerts メニューをクリックして、インストールしたばかりのアラートを表示できます。

Grafanaダッシュボード

「プレーン」インストールでは、Grafanaは事前定義されたダッシュボードなしで展開されます。

ポートフォワードができます。

  kubectl port-forward svc/prometheus-community-grafana 3000:80

`http://localhost:3000/ <http://localhost:3000/>`_ でGrafanaにローカルにアクセスします

ユーザー名として資格情報がadmin 、パスワードとしてprom-operator を提供します kube-stack-config.yaml で定義。

CloudNativePGは、公式

Helm chart の一部としてGrafanaのデフォルトのダッシュボードを提供します。 grafana-dashboard.json をダウンロードできます。

ファイルを作成し、GUIを介して手動でインポートします。

警告

前のダッシュボードの一部のグラフは、No data を表示するいくつかのグラフを生成する`kubelet_volume_stats_available_bytes` や`kubelet_volume_stats_capacity_bytes` など、これが作成された時点でアルファ段階にあったメトリックを利用しています。

local grafana

local grafana

この設定例では、PrometheusとGrafanaの両方が、モニタリングがアクティブ化された状態で展開された他のCloudNativePGクラスターを選択することに注意してください。