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

推薦する

Kubernetes を簡単に学ぶにはどうすればいいですか?

[[324142]]この記事では、Kubernetes に関する Alibaba の技術専門家の見解...

ユーラシアクラウド:ロサンゼルス「3つのネットワーク」cn2 gia vps、200G DDoS高防御、シンプルな評価、データ共有

Ouyayun(欧亜雲、ISP、ICP、工商、商標などを含む完全な資格を持つ国内商人)は今月、米国ロ...

raksmart: 香港\日本\米国、VPS 月額 1.99 ドルから、トラフィック無制限、Windows

raksmart は現在、VPS の特別プロモーションを実施しており、最大 70% オフの割引と、価...

SEO実践者と中小企業の関係の徹底分析:ネットワーク環境

インターネットの発展に伴い、1980年代と1990年代に生まれた人々は徐々に現代社会の主力となり、イ...

ウェブサイトのキーワードを選択する際のルールと注意事項について簡単に説明します。

SEO担当者として、毎日最初に行うことは、ツールを使用して、担当しているWebサイトのキーワードラン...

ramnode 35% オフ/アトランタ/G ポート/SSD/VPS

Ramnodeは2010年に設立されました。以前はホスト猫が観察段階にあったため、リリースされていま...

SEO最適化に欠かせないデータ分析は行いましたか?

ウェブサイトのSEO最適化には、データ分析が非常に重要です。一般的に言えば、SEO最適化には、頭の中...

TuringNet Hong Jun: 信頼できる AI サービス

[51CTO.comより引用] 2018年5月18日〜19日、51CTO主催のグローバルソフトウェア...

Baidu の 6 月と 7 月の SEO 変革についてどれくらいご存知ですか?

6月と7月の百度の狂気は広く知られています。7月18日の百度クリックデーから、ウェブマスターのウェブ...

非営利慈善団体ウェブサイト向けの Google SEO: ウェブサイト診断のヒント

ウェブサイト診断のヒント2012年1月18日午前10時46分投稿者: Google 中国語検索品質チ...

#おすすめのビジネス# ポークブン - 優れたドメイン名プロバイダー、低価格、300以上のサフィックス、生涯無料のプライバシー保護

pigbun.com は、ICANN に認定されたドメイン名商人です。この会社は米国ポートランドに所...

推奨: fliphost - $2.62/256M メモリ/100g ハードディスク/100m 無制限/ストレージ VPS

Fliphostは設立されてまだ1、2日しか経っていない。さらにQuery Foundry Info...

教育と訓練の寒い冬に巨大教育が崩壊

子供たちはこの夏休みに追加の授業を受ける必要はありません。 2018年、教育・研修業界は40年目に突...

WeChat 10年後、ビデオへの渇望

あと1か月も経たないうちに、WeChatは10周年を迎えます。過去10年間で、WeChatはテキスト...