クラウドネイティブ PostgreSQL クラスター - PGO: 5 分で開始

クラウドネイティブ PostgreSQL クラスター - PGO: 5 分で開始


前提条件

ホストに次のユーティリティがインストールされていることを確認してください。

  • kubectl
  • ギット

インストール

ステップ1: サンプルをダウンロードする

まず、GitHub にアクセスして、Postgres Operator の例のリポジトリをフォークします。

https://github.com/CrunchyData/postgres-operator-examples/fork

リポジトリをフォークしたら、次のようなコマンドを使用して作業環境にダウンロードできます。

 YOUR_GITHUB_UN = "<あなたの GitHub ユーザー名>"
git クローン-- 深さ1 "[email protected]:${YOUR_GITHUB_UN}/postgres-operator-examples.git"
cd postgres - 演算子-

ステップ2: Postgres OperatorであるPGOをインストールする

次のコマンドを使用して、Crunchy Data の Postgres Operator である PGO をインストールできます。

 kubectl apply -k kustomize / インストール

これにより、postgres-operator という名前空間が作成され、PGO をデプロイするために必要なすべてのオブジェクトが作成されます。

インストールのステータスを確認するには、次のコマンドを実行します。

 kubectl - n postgres - オペレータがポッドを取得する\
-- セレクター= postgres - 演算子クランチデータcom / コントロールプレーン= postgres - 演算子\
-- フィールドセレクター= ステータス フェーズ= 実行中

PGO Pod が正常に実行されている場合は、次のような出力が表示されます。

 名前準備完了ステータス再起動年齢
postgres - 演算子- 9 dd545d64 - t4h8d 1 / 1 実行中0 3

Postgres クラスターの作成

簡単な Postgres クラスターを作成しましょう。次のコマンドを実行することでこれを実行できます。

 kubectl apply -k kustomize / postgres

知らせ:

  • クラスターにはすでにデフォルトのストレージクラスがあることに注意してください

これにより、postgres-operator 名前空間に hippo という名前の Postgres クラスターが作成されます。次のコマンドを使用して、クラスターの進行状況を追跡できます。

 kubectl -n postgres - オペレーターはpostgresclusters 説明しますpostgres - 演算子クランチデータcom カバ

Postgres クラスタへの接続

Postgres クラスターの作成の一環として、Postgres Operator は PostgreSQL ユーザー アカウントを作成します。このアカウントの資格情報は、-pguser- という名前の Secret に保存されます。

このシークレットのプロパティは、PostgreSQL クラスターにログインするための情報を提供します。これらには以下が含まれます:

  • user: ユーザーアカウントの名前。
  • パスワード: ユーザー アカウントのパスワード。
  • dbname: ユーザーがデフォルトでアクセスできるデータベースの名前。
  • ホスト: データベース ホストの名前。これは、メインの Postgres インスタンスのサービスを参照します。
  • port: データベースがリッスンしているポート。
  • uri: Postgres データベースにログインするためのすべての情報を提供する PostgreSQL 接続 URI。
  • jdbc-uri: PostgreSQL JDBC 接続 URI。JDBC ドライバーを介して Postgres データベースにログインするためのすべての情報を提供します。

PgBouncer 接続プールを使用して Postgres クラスターをデプロイする場合、ユーザー シークレットには次のような追加の値が設定されます。

  • pgbouncer-host: PgBouncer 接続プールのホスト名。これは、PgBouncer 接続プール サービスを参照します。
  • pgbouncer-port: PgBouncer 接続プールがリッスンしているポート。
  • pgbouncer-uri: PgBouncer 接続プールを介して Postgres データベースにログインするためのすべての情報を提供する PostgreSQL 接続 URI。
  • pgbouncer-jdbc-uri: PgBouncer 接続プールを介して JDBC ドライバーを使用して Postgres データベースにログインするためのすべての情報を提供する PostgreSQL JDBC 接続 URI。

すべての接続は TLS を使用することに注意してください。 PGO は Postgres クラスターの PKI を設定します。独自の PKI / 証明機関を導入することもできます。これについてはこのドキュメントの後半で説明します。

Pgバウンサー

  • https://www.pgbouncer.org/

ターミナルでpsql経由で接続する

直接接続

PostgreSQL クラスターと同じネットワーク上にいる場合は、次のコマンドを使用して直接接続できます。

 psql $ ( kubectl - n postgres - 演算子get secrets hippo - pguser - hippo - o go - template = '{{.data.uri | base64decode}}' )

ポート転送を使用して接続する

新しいターミナルで、ポート転送を作成します。

 PG_CLUSTER_PRIMARY_POD = $ ( kubectl get pod - n postgres - 演算子- o 名前\
-l postgres - 演算子 クランチデータcom / cluster = hippopostgres - 演算子クランチデータcom / 役割= マスター)
kubectl - n postgres - オペレーターポート- 転送"${PG_CLUSTER_PRIMARY_POD}" 5432 : 5432

PostgreSQL クラスターへの接続を確立します。

 PG_CLUSTER_USER_SECRET_NAME = カバ- pguser - カバ

PGPASSWORD = $ ( kubectl get secrets - n postgres - 演算子"${PG_CLUSTER_USER_SECRET_NAME}" - o go - テンプレート= '{{.data.password | base64decode}}' ) \
PGUSER = $ ( kubectl get secrets - n postgres - 演算子"${PG_CLUSTER_USER_SECRET_NAME}" - o go - テンプレート= '{{.data.user | base64decode}}' ) \
PGD​​ATABASE = $ ( kubectl get secrets - n postgres - 演算子"${PG_CLUSTER_USER_SECRET_NAME}" - o go - テンプレート= '{{.data.dbname | base64decode}}' ) \
psql -h ローカルホスト

PostgreSQL クラスターへの実用的な Keycloak 接続

ユーザー シークレットで提供される情報により、アプリケーションを PostgreSQL データベースに直接接続できるようになります。

たとえば、Keycloak を接続してみましょう。 Keycloak は、PostgreSQL データベースを搭載した人気のオープン ソース ID 管理ツールです。作成した hippo クラスターを使用して、次のマニフェスト ファイルをデプロイできます。

キークローク

  • https://www.keycloak.org/
 cat << EOF >> キークローク. ヤム
apiバージョン: アプリ/ v1
種類: デプロイメント
メタデータ:
名前: キークローク
名前空間: postgres - 演算子
ラベル:
アプリKubernetesio / 名前: キークローク
仕様:
セレクター:
マッチラベル:
アプリKubernetesio / 名前: キークローク
テンプレート
メタデータ:
ラベル:
アプリKubernetesio / 名前: キークローク
仕様:
コンテナ:
- 画像岸壁io / keycloak / keycloak : 最新
名前: キークローク
引数: [ "start-dev" ]
環境:
- 名前: DB_VENDOR
: "postgres"
- 名前: DB_ADDR
valueFrom : { secretKeyRef : { 名前: hippo - pguser - hippoキー: ホスト} }
- 名前: DB_PORT
valueFrom : { secretKeyRef : { name : hippo - pguser - hippokey : port } }
- 名前: DB_DATABASE
valueFrom : { secretKeyRef : { name : hippo - pguser - hippokey : dbname } }
- 名前: DB_USER
valueFrom : { secretKeyRef : { name : hippo - pguser - hippokey : user } }
- 名前: DB_PASSWORD
valueFrom : { secretKeyRef : { name : hippo - pguser - hippokey : password } }
- 名前: KEYCLOAK_ADMIN
: "admin"
- 名前: KEYCLOAK_ADMIN_PASSWORD
: "admin"
- 名前: PROXY_ADDRESS_FORWARDING
: "true"
ポート:
- 名前: http
コンテナポート: 8080
- 名前: https
コンテナポート: 8443
再起動ポリシー: 常に
終了
kubectl apply -f キークローク.yaml
kubectl - n postgres - オペレーターポート- 転送$ { KEYCLOAK_POD } 8086 : 8080 -- アドレス= '0.0.0.0'
# 0.0 .0 .0 から転送: 8086 -> 8080

http://127.0.0.1:8086 にアクセスしてください

kustomize/keycloak フォルダーに、Postgres Operator を使用して Keycloak をデプロイする方法の完全な例があります。

知らせ:

  • quay.io/keycloak/keycloak:latest、科学的にイメージをプルする
  • keycloak.yamlに上記の変更を加えました

おめでとうございます。Postgres クラスターが起動し、アプリケーションが接続されて実行されています。 👏 👏 👏

postgresclusters カスタム リソース定義の詳細については、ドキュメントと kubectl explain を参照してください。

 kubectl postgresclusters の説明

postgresclusters カスタムリソース定義

  • https://access.crunchydata.com/documentation/postgres-operator/5.0.4/references/crd/

<<:  コンテナ クラウド アーキテクチャ | Kubernetes ネットワーク モデルを理解する

>>:  Longhorn の高度な使用法: バックアップ、リカバリ、ReadWriteMany

推薦する

夜も更けたので、分散ロックについて学んでみましょう

[[354141]]この記事はWeChatの公開アカウント「故郷でJavaを学ぶ」から転載したもので...

医療ウェブサイトの最適化のためのキーワードの選び方

以前、医療ウェブサイトを最適化する際に注意すべき10のポイントについて説明しました。今日は、医療ウェ...

ユーザーエクスペリエンスの時代において、私たちはあまりにも自己中心的に考えすぎているのでしょうか?

今日、私は友人としばらくオンラインでチャットをし、良い教訓を学びました。トピックの内容は非常にシンプ...

企業向けWebサイト構築のメリットや機能とは?

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

ホストキー: オランダの GPU サーバー、4 時間で配信、8*GTX1080Ti または 4*RTX2080Ti をサポート

Hostkey のオランダのデータセンターは、ビデオスライスサーバー、トランスコーディングサーバー、...

spinservers 中国電信ネットワークサーバーレビュー: 3 つのネットワークへの完全な直接接続

spinserversは今月初め、中国電信のネットワークに接続されたサンノゼデータセンターに独立した...

VPS トライアル、VPS トライアルに関連するトピックについて話し合った後、トライアル用の VPS を一括で推奨します。

今日は、VPS トライアル (VPS を試す) についてお話します。多くの初心者は、VPS やクラウ...

外部リンクがウェブサイトのランキングにまだ効果的かどうかの簡単な分析

かつて、「外部リンクは王様、コンテンツは女王」がSEO業界の黄金律になりました。企業のウェブサイトで...

budgetnode がメモリを 2 倍に、年間 12 ドルで 512MB メモリ、Voxility が DDoS 保護を無料で提供

budgetnode.com は、プロモーションを記念して、同じ価格でメモリを 2 倍にした新しいア...

ショートビデオマーケティング:「黄金の7秒」に戻り、「盆栽」精神を捨て去る

広告には「7秒」の印象理論があります。広告が消費者を引き付けられるかどうかの鍵は、最初の7秒にありま...

FlashウェブサイトのSEO最適化の操作方法

私たちが普段行っているウェブ最適化のほとんどは、静的ウェブサイトや一定量の情報を持つ動的ウェブサイト...

友情リンクの効果を最大化する

ウェブサイトを構築したら、宣伝を始めるべきでしょうか? ユーザーにインターネット上であなたのサイトを...

ウェブサイトのタイトルを正しく書く方法

ユーザーがキーワードを検索するときに最初に比較するのは、Web サイトのタイトルです。ユーザーはタイ...

Vaicdn: クラウドサーバー20%割引、「深セン-香港」専用回線、Huawei高帯域幅、Alibaba高帯域幅、「デジタル通貨」決済

vaicdnはHuawei Cloudの1級認定ディーラーであり、仮想通貨による支払いを受け付けてい...