クイックスタート¶
このセクションでは、 親切 または ミニキューブ のローカル 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 は、Kubernetes をローカルで簡単に実行できるようにするツールです。 Minikube は、ラップトップの仮想マシン (VM) 内で単一ノードの Kubernetes クラスターを実行し、Kubernetes を試したり、日常的に 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」を表します)。
クイックスタート の手順に従って、環境に
kind
をインストールし、次を使用して Kubernetes クラスターを作成します。
kind create cluster --name pg
パート 2 - CloudNativePG をインストールする¶
ラップトップで Kubernetes がインストールされて実行されているので、CloudNativePG のインストールに進むことができます。
インストールとアップグレード セクションを参照してから、PostgreSQL
クラスターのデプロイに進んでください。
パート 3 - PostgreSQL クラスターをデプロイする¶
Kubernetes での他のデプロイと同様に、PostgreSQL
クラスターをデプロイするには、目的の Cluster
を定義する構成ファイルを適用する必要があります。
cluster-example.yaml サンプル ファイルは、デフォルトのストレージ
クラスを使用して単純な Cluster を定義し、ディスク
スペースを割り当てます。
# Example of PostgreSQL cluster
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: cluster-example
spec:
instances: 3
# Example of rolling update strategy:
# - unsupervised: automated update of the primary once all
# replicas have been upgraded (default)
# - supervised: requires manual supervision to perform
# the switchover of the primary
primaryUpdateStrategy: unsupervised
# Require 1Gi of space
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 ルールを示します。
Prometheus Community によって維持される Kube-Prometheus stack 、Helm
チャートを活用します。追加のドキュメントと背景については、プロジェクトの Web サイトを参照してください。
- Kube-Prometheus-stack Helm チャートは、 Alert Manager を含む
プロメテウス オペレーターの例 と パート 4 - Prometheus と Grafana を使用してクラスターを監視する デプロイメントをインストールします。
CloudNativePG クラスターの可観測性に役立つ初期設定を提供する、この Helm チャートのデプロイ用の構成ファイルが含まれています。
インストール¶
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 のインストールから、Prometheus Operator が 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¶
prometheusRule
を作成することで、いくつかのアラートを定義できるようになりました。
kubectl apply -f \
https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/main/docs/src/samples/monitoring/cnpg-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 で定義)。
サンプルの Grafana ダッシュボードをインストールできるようになりました。
kubectl apply -f \
https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/main/docs/src/samples/monitoring/grafana-configmap.yaml
これは、Grafana ページによって数秒で取得されます。 CloudNativePG
ダッシュボードが表示されます。
![]()
local grafana¶
このセットアップ例では、Prometheus と Grafana の両方が、モニタリングを有効にしてデプロイされた他の CloudNativePG クラスターをピックアップすることに注意してください。