Quickstart#
このセクションでは、 Kind または Minikube のいずれかを使用してローカルKubernetesクラスターにEDB CloudNativePGクラスターを展開することにより、ローカルマシンでPostgreSQLクラスターをテストする方法を説明します。
Red Hat OpenShift Container Platformユーザーは、 Red Hat OpenShift Local 旧Red Hat CodeReady ContainersでEDB CloudNativePGクラスターの認定オペレーターをテストできます。
警告
このセクションに含まれる手順は、デモンストレーション、テスト、および練習のみを目的としているため、実稼働環境では使用しないでください。
他のKubernetesアプリケーションと同様に、EDB CloudNativePGクラスターは、YAMLで書かれた通常のマニフェストを使用して展開されます。
これらの手順に従うことにより、ローカルのKubernetes / OpenshiftインストールでPostgreSQLクラスターを起動し、実験できるはずです。
重要
Kubernetesクラスターに接続するためには、マシンに`kubectl` がインストールされていること、またはOpenShift Localを使用する場合は`oc` がインストールされていることを確認します。 how to install `kubectl <https://kubernetes.io/docs/tasks/tools/install-kubectl/>`_ のKubernetesドキュメントに従ってください
または how to install `oc <Red Hat OpenShift>` のOpenshiftドキュメント
注釈
Openshiftを実行している場合は、このドキュメントで`kubectl` が記載されているたびに`oc` を使用してください。 kubectl コマンドは、 oc コマンドと互換性があります。
パート1-ローカルのKubernetes / Openshiftローカルプレイグラウンドのセットアップ#
最初の部分は、Minikube、Kind、またはOpenShift Localのインストールに関するものです。時間をかけてシステムについて読み、どれを続行するかを決定してください。いずれかの設定を行ったら、パート2に進んでください。
パート4 PrometheusとGrafanaを使用してクラスターを監視する では、ローカルテスト/評価のためにPrometheusとGrafanaを使用したモニタリングを設定する手順も提供します
Minikube#
Minikubeは、Kubernetesをローカルで簡単に実行できるツールです。 Minikubeは、Kubernetesを試してみるか、日常的に開発しようとしているユーザーのために、ラップトップの仮想マシンVM内でシングルノードKubernetesクラスターを実行します。通常、VirtualBoxと組み合わせて使用します。
詳細については、ローカルの個人環境の公式 Kubernetes documentation on how toinstall 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
OpenShift Local旧CodeReady ContainersCRC#
そして、バイナリをPATH のディレクトリ内に移動します。
次のコマンドを実行します。
crc setup
crc start
crc start 出力は、続行方法を説明します。
crc oc-envコマンドの出力を実行します。印刷した
oc loginコマンドを使用して、kubeadminとしてログインします。crc consoleを実行しているWebコンソールを開くこともできます。ユーザーとパスワードはoc loginコマンドの場合と同じです。OpenShift LocalにはStorageClassが付属していないため、構成する必要があります。 Dynamic volume provisioning wiki page をフォローする
rancher/local-path-provisioner をインストールします。
パート2 EDB CloudNativePGクラスターのインストール#
ラップトップでKubernetesインストールをアップして実行しているため、EDB CloudNativePG クラスターのインストールに進むことができます。
クラスター構成ファイルで指定されない限り、EDB CloudNativePGクラスターは、現在デフォルトでCommunity Postgresqlオペランドを展開します。詳細については、 EDB Postgresサーバーの展開 セクションを参照してください。
YAMLマニフェストを介したKubernetesのインストール セクションを参照して、PostgreSQLクラスターの展開を続行します。
パート3 PostgreSQLクラスターを展開する#
クラスター構成ファイルで指定されない限り、EDB CloudNativePGクラスターは、現在デフォルトでCommunity Postgresqlオペランドを展開します。詳細については、 EDB Postgresサーバーの展開 セクションを参照してください。
Kubernetesの他の展開と同様に、PostgreSQLクラスターを展開するには、目的のCluster
を定義する構成ファイルを適用する必要があります。
次のサンプルでは、デフォルトのストレージクラスを使用して単純なCluster
を定義して、ディスク領域を割り当てます。
apiVersion: postgresql.k8s.enterprisedb.io/v1
kind: Cluster
metadata:
name: cluster-example
spec:
instances: 3
storage:
size: 1Gi
apiVersion: postgresql.k8s.enterprisedb.io/v1
kind: Cluster
metadata:
name: cluster-example
spec:
instances: 3
storage:
size: 1Gi
3ノードCommunity PostgreSQLクラスターを作成するには、次のコマンドを実行する必要があります。
kubectl apply -f cluster-example.yaml
get pods コマンドでポッドが作成されていることを確認できます。
kubectl get pods
これにより、デフォルトの名前空間でポッドが検索されます。
Kubernetesインストールの他のワークロードからクラスターを分離するには、クラスターを展開する新しい名前空間をいつでも作成できます。または、ラベルを使用できます。オペレーターは、特定のクラスターに関連するすべてのオブジェクトにk8s.enterprisedb.io/cluster
ラベルを適用します。例
kubectl get pods -l k8s.enterprisedb.io/cluster=<CLUSTER>
重要
ラベルとして`k8s.enterprisedb.io/cluster` を使用していることに注意してください。過去に`postgresql` を見たり使用したりしたことがあるかもしれません。このラベルは非推奨であり、将来的に削除される予定です。 k8s.enterprisedb.io/cluster を使用してください。
EDB Postgresサーバーの展開#
デフォルトでは、オペレーターは、オペレーターがリリースされたときにCommunity
PostgreSQLの最新メジャーバージョンの利用可能な最新のマイナーバージョンをインストールします。
Cluster 定義のspec セクションでimageName
キーを設定することにより、これをオーバーライドできます。たとえば、 EDB
Postgres Advanced 16.4をインストールするには、次を使用できます。
apiVersion: postgresql.k8s.enterprisedb.io/v1
kind: Cluster
metadata:
# [...]
spec:
# [...]
imageName: docker.enterprisedb.com/k8s_enterprise/edb-postgres-advanced:16
#[...]
EDB Postgres Extended 16をインストールするには、次を使用できます。
apiVersion: postgresql.k8s.enterprisedb.io/v1
kind: Cluster
metadata:
# [...]
spec:
# [...]
imageName: docker.enterprisedb.com/k8s_enterprise/edb-postgres-extended:16
#[...]
重要
不変のインフラストラクチャパラダイムでは、常にコンテナイメージの特定のバージョンをポイントする必要があります。クラスター内の更新ポリシーとバージョンの一貫性の点で予期せぬシナリオが発生する可能性があるため、実稼働環境では`latest` や`13` のようなタグを使用しないでください。厳密な決定論的で反復可能な展開の場合、 <image>:<tag>@sha256:<digestValue> 形式を介してイメージ名にダイジェストを追加できます。
パート4 PrometheusとGrafanaを使用してクラスターを監視する#
重要
PrometheusとGrafanaのインストールは、このプロジェクトの範囲を超えています。このセクションの手順は、実験と説明のみを目的として提供されています。
このセクションでは、可観測性を実現するためにPrometheusとGrafanaを展開する方法、EDB CloudNativePG Clusterクラスター、およびアラート条件を定義するPrometheusルールセットをモニタするためのGrafanaダッシュボードを作成する方法を示します。
Kube-Prometheus stack 、 Helmチャートを利用します。これは、 Prometheus Community によって維持されます。追加のドキュメントと背景については、プロジェクトのWebサイトを参照してください。
Kube-Prometheus-stack Helmチャートは、 Prometheus Operator Alert Manager および Grafana 展開を含む Prometheus Operator をインストールします。
このHelmチャートの展開用の構成ファイルは、EDB CloudNativePG Clusterクラスターのオブザーバビリティに役立つ初期設定を提供します。
インストール#
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/EnterpriseDB/docs/main/product_docs/docs/postgres_for_kubernetes/1/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での表示#
この時点で、モニタリングがアクティブ化された状態で展開されたEDB CloudNativePG クラスターは、Prometheusを介して監視できます。
たとえば、PodMonitor を有効にした単純なクラスターを展開できます。
kubectl apply -f - <<EOF
- --
apiVersion: postgresql.k8s.enterprisedb.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
を使用したクラスターがあると仮定すると、EDB CloudNativePG Cluster
クラスターに関連する一連のメトリックを見つけることができます。詳細については、
*monitoring section* を参照してください。
local prometheus#
prometheusRule
を作成することにより、いくつかのアラートを定義できるようになりました。
kubectl apply -f \
https://raw.githubusercontent.com/EnterpriseDB/docs/main/product_docs/docs/postgres_for_kubernetes/1/samples/monitoring/prometheusrule.yaml
デフォルトのアラートが表示されます。
% kubectl get prometheusrules
NAME AGE
postgresql-operator-default-alerts 3m27s
Prometheusコンソールで、 Alerts メニューをクリックして、インストールしたばかりのアラートを表示できます。
Grafanaダッシュボード#
「プレーン」インストールでは、Grafanaは事前定義されたダッシュボードなしで展開されます。
ポートフォワードができます。
kubectl port-forward svc/prometheus-community-grafana 3000:80
http://localhost:3000/ でGrafanaにローカルにアクセスします
ユーザー名として資格情報がadmin
、パスワードとしてprom-operator を提供します
kube-stack-config.yaml で定義。
EDB CloudNativePG クラスターは、公式 Helm chart の一部としてGrafanaのデフォルトのダッシュボードを提供します。 grafana-dashboard.json をダウンロードすることもできます。
ファイルを作成し、GUIを介して手動でインポートします。
警告
前のダッシュボードの一部のグラフは、No data を表示するいくつかのグラフを生成する`kubelet_volume_stats_available_bytes` や`kubelet_volume_stats_capacity_bytes` など、これが作成された時点でアルファ段階にあったメトリックを利用しています。
local grafana#
ローカル設定では、PrometheusとGrafanaは、モニタリング機能を有効にして展開されたEDB CloudNativePG Clusterクラスターを自動的に検出および監視するように構成されていることに注意してください。