クイックスタート¶
このセクションでは、 種類 または 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は、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」の略です)。
クイックスタート の指示に従って
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
デフォルトでは、オペレーターは、オペレーターがリリースされたときに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 を含む
Prometheusオペレーターの例 と パート4-PrometheusとGrafanaでクラスターを監視する デプロイメントをインストールします。
CloudNativePGクラスターの可観測性に役立つ初期設定を提供する、このHelmチャートをデプロイするための構成ファイルが含まれています。
インストール¶
Helmチャートの使用 をまだインストールしていない場合は、 instructions に従ってシステムにインストールしてください。
prometheus-community
ヘルムチャートリポジトリを追加し、提供するサンプル構成を使用して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で表示する¶
この時点で、Monitoringを有効にしてデプロイされた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/
モニタリングスタックが正常にデプロイされ、enablePodMonitoring: 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
そして、資格情報admin をユーザー名として、prom-operator
をパスワードとして指定して、
http://localhost:3000/ でローカルにGrafanaにアクセスします(
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の両方が、Monitoringがアクティブ化されてデプロイされた他のCloudNativePGクラスターを取得することに注意してください。