クラウドネイティブ 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

推薦する

ユビキタスAIが映画やテレビ番組の制作に新たな変化をもたらす

今日では、AI とクラウド コンピューティングに関する議論は、ニッチなテクノロジーや投資の分野だけで...

bacloud: ハイエンドサーバーが 50% オフ、月額 52.5 ユーロ、E5-2620v4、16gDDR4、2*250gSSD、50T トラフィック、Alipay

リトアニアの有名なホスティング プロバイダー bacloud は、自社のデータ センターで 3 つの...

BlazingSwitch-512M メモリ VPS/月額 1 ドル

Blazingswitch は、Authorize.net のビジネス認証に合格し、独自の ARIN...

リンク品質に影響を与える13の主な要因

Google はどのリンクをより重視し、どのリンクに高い重み付けをしますか。また、その理由は何ですか...

グローバルクラウドコンピューティング導入を検討するための10のガイドライン

グローバル市場への認知度が高まるにつれ、ほとんどの組織はコストを削減し、市場投入までの時間を短縮する...

BGPTO - 69 ドル シンガポール/香港 2xL5630/24g メモリ/2x1T ハードディスク/無制限トラフィック

- サーバー ブランド BGP.TO では、シンガポールと香港に直接接続できる独立したサーバーを割引...

サイト上の高品質のオリジナル記事はウェブサイトの最適化に役立ちます

ご存知のとおり、ウェブサイトの SEO 最適化のプロセスでは、コンテンツと外部リンクは常に議論の絶え...

新規デジタルオーシャンユーザーの皆様へ: デジタルオーシャン FAQ

多くの人がデジタルオーシャンについて比較的よく知っていますが、デジタルオーシャンについて知らない人や...

SEO の優位性: オンライン ブランディング

フォーブスは以前、マーケティング専門家のケン・クローグ氏による「SEOは死に絶え、ソーシャルでリアル...

分散ハイブリッド IT 環境でネットワークの可視性を向上させる方法

今日の企業は、特にデジタルトランスフォーメーションによって仮想およびリモート運用の「ニューノーマル」...

Webmaster.com からの毎日のレポート: Yahoo Mail は Sina Weibo および Taobao との連携を停止します

1. 中国のYahooメールは8月19日に閉鎖され、Alibaba Cloudが引き継ぐ北京時間4月...

レッドベイビーが売却を余儀なくされた理由:母子基盤を放棄し、デパートへ

徐柏鑫さんは低い声で話し、番組中一度も笑わなかった。蘇寧によるRedbaby買収に関するメディアコミ...

予算がなくてやめたいですか?お金がなくてもASOをプレイする方法を教えます!

上司は常にASOに成果を上げるよう促していますが、部下は常に ASO の予算不足を心配しています。長...

テスラの中国商標をめぐって謎の「ポソン」と「ミノン」が争う

チャン・バオシェン氏はテスラの幹部との最初の会合について語った。当時、彼はテスラから香港に行くよう招...

ウェブサイト最適化の詳細処理プロセス2:ウェブサイトテンプレート

詳細処理の最初の部分であるウェブサイトのコードについてはすでに説明しました。今日は 2 番目のレッス...