Zalando Postgres Operator をすぐに使い始めましょう。使い方はご存知ですか?

Zalando Postgres Operator をすぐに使い始めましょう。使い方はご存知ですか?

前提条件

Postgres Operator は Kubernetes (K8s) フレームワーク用に設計されているため、最初にこれをセットアップします。ローカルテストの場合は、次のいずれかのソリューションを使用することをお勧めします。

  • minikube、VM 内に単一ノードの K8s クラスターを作成する (KVM または VirtualBox が必要)

https://github.com/kubernetes/minikube/releases

  • kind と k3d により、Docker 上で実行されるマルチノード K8s クラスターの作成が可能になります (Docker が必要)

https://kind.sigs.k8s.io/

出典: k3d.io

K8s インフラストラクチャと対話するには、CLI ランタイム kubectl をインストールします。

https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl-binary-via-curl

このクイックスタートでは、minikube をすでに起動しているか、ローカルの種類のクラスターを作成していることを前提としています。なお、Docker Desktop for Mac に組み込まれている K8s サポートを使用してこのチュートリアルに従うこともできます。 Docker に K8s サポートを組み込むには、minikube start と minikube delete を開始アクションに置き換える必要があります。

設定オプション

Postgres Operator は、新しい Postgres クラスターをデプロイする前にのみ構成できます。これは、ConfigMap またはカスタム OperatorConfiguration オブジェクトを介して 2 つの方法で機能します。設定の詳細については、こちらをご覧ください。

  • https://postgres-operator.readthedocs.io/en/latest/reference/operator_parameters/

展開オプション

Postgres Operator は次の方法でデプロイできます。

  • 手動展開
  • カスタマイズ
  • ヘルムチャート

Kubernetes での手動デプロイメント設定

Postgres Operator をインストールするには、yaml マニフェストを適用するだけです。 /manifests ディレクトリは例としてのみ提供されていることに注意してください。マニフェストを K8s 環境 (名前空間など) に適合させることを検討する必要があります。

 # まず、リポジトリをクローンしてディレクトリに移動します
git クローン https://github.com/zalando/postgres-operator.git
cd postgres オペレータ

# 次の順序でマニフェストを適用します
kubectl create -f manifests/configmap.yaml # 構成
kubectl create -f manifests/operator-service-account-rbac.yaml # IDと権限
kubectl create -f manifests/postgres-operator.yaml # デプロイメント
kubectl create -f manifests/api-service.yaml # UI経由でオペレーターAPIを使用する

上記のリソース (CRD を除く) を組み合わせた Kustomization マニフェストがあり、以下に示すように kubectl 1.14 以降で使用できます。

  • https://github.com/kubernetes-sigs/kusTOMize
  • https://github.com/zalando/postgres-operator/blob/master/manifests/kustomization.yaml
 kubectl apply -k github.com/zalando/postgres-operator/manifests

便宜上、run_operator_locally スクリプトを使用して、minikube 経由でオペレーターを自動的に起動します。酸最小クラスターを適用します。リスト。

  • https://github.com/zalando/postgres-operator/blob/master/manifests/minimal-postgres-manifest.yaml
 ./run_operator_locally.sh

OpenShift での手動デプロイメント設定

OpenShift に Postgres Operator をインストールするには、構成パラメータ kubernetes_use_configmaps を「true」に変更する必要があります。そうしないと、オペレーターと Patroni は、OpenShift でサポートされていないエンドポイントにリーダー キーと構成キーを保存します。これには、postgres-operator および postgres-pod クラスター ロールに対して若干異なるルール セットも必要です。

 oc create -f マニフェスト/オペレーターサービスアカウントrbac-openshift.yaml

ヘルムチャート

あるいは、提供されている Helm チャートを使用してオペレーターをインストールすることで、手動の手順を省くことができます。このリポジトリをクローンし、ディレクトリをリポジトリのルートに変更します。 Helm v3 がインストールされていれば、以下を実行できるはずです:

  • https://helm.sh/
 postgres-operator を helm でインストールします。

このチャートは、Helm 2 と Helm 3 の両方で機能します。v3 を使用する場合、v2 の crd-install フックはスキップされ、警告が発行されます。 Helm 2 を使用してアプリケーションをインストールするためのドキュメントは、v2 ドキュメントにあります。

  • ドキュメント

このチャートは次の場所でもホストされています:

  • https://opensource.zalando.com/postgres-operator/charts/postgres-operator/

Postgres Operatorが実行中かどうかを確認する

オペレータの起動には数秒かかる場合があります。 Postgres クラスター マニフェストを適用する前に、オペレーター ポッドが実行されていることを確認します。

 # yamlマニフェストを使用してオペレーターを作成した場合
kubectl get pod -l name=postgres-operator

# Helmチャートを使用してオペレーターを作成した場合
kubectl get pod -l app.kubernetes.io/name=postgres-operator

オペレーターが実行状態にならない場合は、kubectl describe を使用して、デプロイメントまたはポッドの最新の K8s イベントを確認するか、オペレーターのログを確認します。

 kubectl は "$(kubectl get pod -l name=postgres-operator" をログに記録します
--output='名前')"

オペレーターUIを展開する

次の段落では、kubectl を使用してコマンドラインから PostgreSQL クラスターにアクセスして管理する方法について説明します。ただし、ブラウザベースの Postgres Operator UI を通じて実行することもできます。 UI をデプロイする前に、オペレーターが実行されており、その REST API が K8s サービスを通じてアクセスできることを確認してください。この API の URL は、UI のデプロイメント マニフェストで構成する必要があります。

  • https://postgres-operator.readthedocs.io/en/latest/operator-ui/
  • https://github.com/zalando/postgres-operator/blob/master/manifests/api-service.yaml
  • https://github.com/zalando/postgres-operator/blob/master/ui/manifests/deployment.yaml#L43

UI をデプロイするには、すべてのマニフェスト ファイルを適用するか、UI Helm チャートを使用します。

 # 手動展開
kubectl apply -f ui/マニフェスト/

# またはカスタマイズ
kubectl apply -k github.com/zalando/postgres-operator/ui/manifests

# またはヘルムチャート
postgres-operator-ui を helm でインストールします。

オペレーターと同様に、UI ポッドが実行状態にあるかどうかを確認します。

 # yamlマニフェストを使用してオペレーターを作成した場合
kubectl get pod -l name=postgres-operator-ui

# Helmチャートを使用してオペレーターを作成した場合
kubectl get pod -l app.kubernetes.io/name=postgres-operator-ui

これで、UI ポッドをポート転送し (ラベル セレクターに注意)、ブラウザーに localhost:8081 と入力することで、Web インターフェイスにアクセスできるようになります。

 kubectl ポート転送 svc/postgres-operator-ui 8081:80

利用可能なオプションについては、UI ドキュメントで詳しく説明されています。

https://postgres-operator.readthedocs.io/en/latest/operator-ui/

Postgresクラスタを作成する

オペレーター ポッドが実行中の場合、postgresql リソースに関する新しいイベントをリッスンします。ここで、最初の Postgres クラスター マニフェストを送信します。

 # Postgres クラスターを作成する
kubectl create -f マニフェスト/最小限の postgres マニフェスト.yaml

クラスター マニフェストが送信され、検証されると、オペレーターはサービス リソースとエンドポイント リソースを作成し、マニフェストで指定されたインスタンスの数に応じて新しいポッドを起動する StatefulSet を作成します。すべてのリソースはクラスターのように名前が付けられます。データベース ポッドは、-0 から始まる数値サフィックスによって識別できます。 Zalando の Spilo コンテナ イメージを実行します。サービスとエンドポイントに関しては、マスター ポッド用に 1 つ、すべてのレプリカ用に 1 つ (-repl サフィックス) あります。すべてのコンポーネントが表示されているかどうかを確認します。タグ application=spilo でフィルタリングし、タグ spilo-role を一覧表示して、現在マスターとなっているユーザーを確認します。

 # デプロイされたクラスターを確認する
kubectl で postgresql を取得する

# 作成されたデータベースポッドを確認する
kubectl get pods -l application=spilo -L spilo-role

# 作成されたサービスリソースを確認する
kubectl get svc -l application=spilo -L spilo-role

psql経由でPostgresクラスタに接続する

データベース ポッドでポート転送を作成して、Postgres に接続できます。手順についてはユーザーガイドを参照してください。 minikube を使用すると、マスター ポッドを指す K8s サービスから接続文字列を取得することも簡単です。

 HOST_PORT=$(minikube サービス acid-minimal-cluster --url | sed 's,.*/,,') をエクスポートします。
PGHOST をエクスポートします。($HOST_PORT をエコーし​​ます。| -d: -f 1 をカットします)
PGPORT=$ をエクスポートします($HOST_PORT をエコーし​​ます | cut -d: -f 2)

クラスターで作成された K8s シークレットからパスワードを取得します。暗号化されていない接続はデフォルトで拒否されるため、SSL モードを次のように設定する必要があります。

 PGPASSWORD=$(kubectl get secret postgres.acid-minimal-cluster.credentials -o 'jsonpath={.data.password}' | base64 -d) をエクスポートします。
PGSSLMODE=require をエクスポートする
psql -U ポストグレ

Postgres クラスタの削除

Postgres クラスターを削除するには、postgresql カスタム リソースを削除するだけです。

 kubectl 削除 postgresql 酸最小限のクラスター

これにより、関連付けられている StatefulSet、データベース ポッド、サービス、およびエンドポイントが削除されます。 PersistentVolume が解放され、PodDisruptionBudget が削除されます。ただし、シークレットは削除されず、バックアップはそのまま残ります。

クラスターがまだ起動中またはその段階で停止しているときにクラスターを削除すると、postgresql リソースが削除され、孤立したコンポーネントが残る可能性があります。これにより、新しい Postgres クラスターを作成するときに問題が発生する可能性があります。新規セットアップの場合は、ローカルの minikube または kind クラスターを削除して最初からやり直すことができます。

https://github.com/zalando/postgres-operator/issues/551

<<:  分散クラウドコンピューティングとデータガバナンスの詳細な説明

>>:  デロイトは、企業の着実かつ急速な成長を支援するために、Amazon Web Services をベースにしたセキュリティ オペレーション センターを構築しました。

推薦する

vpsace-2g メモリ/2g Vswap/100g ハードディスク/2T トラフィック/月額 7 USD

vpsace のヘンは、Intel Xeon E3-1240v2 CPU、32G メモリ、4×1 T...

ウェブマスターネットワークからの毎日のレポート:EUがグーグルへの課税を引き上げ、ヤフーは27億ドルの損害賠償を支払うよう命じられた

1. EUはグーグルなどの米国のインターネット大手への課税を強化する計画海外メディアの報道によると、...

ウェブマスターネットワークからの毎日のレポート:美容eコマースは秘密の戦争状態にあり、中小規模の音楽ウェブサイトが影響を受けている

1. オンラインゲーム業界のグレーチェーンが暴露:詐欺サイトがフランチャイズシステムを通じて会員を募...

SEOは簡単ですか?

SEOをうまく行うことと運営を成功させることの間には長い道のりがある数日前、Dianshi の友人が...

ウェブサイトのおすすめ: RunfacesはFacebookのギャップを埋めるビデオソーシャルネットワーキングサイトです

Runfaces のスローガン: 「興味に基づいた動画を通じて新しい人々と出会う」ユーザーの個人ホー...

Amazon と Red Hat が AWS 上の Red Hat OpenShift コンテナ プラットフォームのマネージド サービスを発表

最近、エンタープライズレベルのオープンソースソリューションの世界的大手プロバイダーである Amazo...

音楽ウェブサイトのSEO最適化の方法についての簡単な説明

音楽ウェブサイトの SEO 最適化は比較的簡単です。各曲のタイトルがキーワードとなっており、曲名から...

仮想マシンバイトコード実行エンジン

いわゆる「仮想マシン バイトコード実行エンジン」は、実際には、クラス ファイルに指定されたバイトコー...

クラウドが持続可能な開発を推進する方法

クラウドは、企業の持続可能性を高める上で重要な役割を果たします。実行可能な未来を築くために必要な研究...

コンテナ管理: コンテナの無秩序な増加とコストの増加を防ぐ方法

クラウド コンテナなど、優れたものがどんどん使用されるようになると、パブリック クラウドのコストは増...

清華紫光クラウドは、「クラウド、データ、インテリジェンス」の3次元機能を構築し続け、クラウドとインテリジェンスをユビキタス化する。

今日のデジタル経済時代では、クラウドへの移行はほとんどの企業の間でコンセンサスとなっています。クラウ...

400 フォンが企業ウェブサイトの主役になった理由について簡単に説明します

昨今、あらゆる分野の発展はインターネットと切り離せないものとなっていますが、企業にとってはなおさらで...

ウェブサイトの脆弱性検出:ユーザーパスワード取得ウェブサイトの脆弱性のセキュリティ分析と活用

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますSINE ...

初心者の SEO 担当者は、日々の最適化作業を適切に実行するにはどうすればよいでしょうか?

SEO(検索エンジン最適化)、または検索エンジン最適化とは、簡単に言えば、適切な手段を使用してウェブ...