Kubernetes ツールを使用して PostgreSQL サーバーを作成する

Note

この記事で紹介しているテクノロジはプレビュー機能であり、「Microsoft Azure プレビューの追加利用規約」に従うことを条件として提供されます。

最新の更新プログラムについては、リリース ノートを参照してください。

前提条件

データ コントローラーが既に作成されている必要があります。

Kubernetes ツールを使用して PostgreSQL サーバーを作成するには、Kubernetes ツールがインストールされている必要があります。 この記事の例では kubectl を使用しますが、Kubernetes ダッシュボード、ochelm などの Kubernetes の他のツールや Kubernetes yaml/json を使い慣れている場合は、それらのツールでも同様のアプローチを使用できます。

kubectl ツールをインストールする

概要

PostgreSQL サーバーを作成するには、postgres 管理者のログインとパスワードを安全に格納する Kubernetes シークレットを作成し、postgresqls カスタム リソース定義に基づいて PostgreSQL サーバーのカスタム リソースを作成する必要があります。

yaml ファイルを作成する

テンプレート yaml ファイルを出発点として使用して、PostgreSQL サーバーのカスタム yaml ファイルを独自に作成することができます。 このファイルをローカル コンピューターにダウンロードし、テキスト エディターで開きます。 yaml ファイルの構文の強調表示とリンティングがサポートされている VS Code などのテキスト エディターを使用すると便利です。

yaml ファイルの例:

apiVersion: v1
data:
  username: <your base64 encoded username>
  password: <your base64 encoded password>
kind: Secret
metadata:
  name: pg1-login-secret
type: Opaque
---
apiVersion: arcdata.microsoft.com/v1beta3
kind: postgresql
metadata:
  name: pg1
spec:
  scheduling:
    default:
      resources:
        limits:
          cpu: "4"
          memory: 4Gi
        requests:
          cpu: "1"
          memory: 2Gi
  services:
    primary:
      type: LoadBalancer # Modify service type based on your Kubernetes environment
  storage:
    data:
      volumes:
      - className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
        size: 5Gi
    logs:
      volumes:
      - className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
        size: 5Gi

ログインとパスワードのカスタマイズ。

Kubernetes シークレットは base64 でエンコードされた文字列として格納されます。1 つはユーザー名、1 つはパスワード用です。 管理者のログインとパスワードを base64 でエンコードし、それをプレースホルダーの場所 data.passworddata.username に配置する必要があります。 テンプレートで使用されている <> の記号は含めないでください。

オンライン ツールを使用して、希望するユーザー名とパスワードを base64 でエンコードできます。また、プラットフォームに応じて組み込みの CLI ツールを使用することもできます。

PowerShell

[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('<your string to encode here>'))

#Example
#[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('example'))

Linux/macOS

echo -n '<your string to encode here>' | base64

#Example
# echo -n 'example' | base64

名前のカスタマイズ

このテンプレートには、name 属性の値として pg1 が指定されています。 この値は変更できますが、DNS 名前付け標準に従う文字を使用する必要があります。 名前を変更する場合は、一致するようにシークレットの名前も変更します。 たとえば、PostgreSQL サーバーの名前を pg2 に変更した場合は、シークレットの名前を pg1-login-secret から pg2-login-secret に変更する必要があります

リソース要件のカスタマイズ

必要に応じて、RAM とコアの制限および要求のリソース要件を変更できます。

Note

詳細については、Kubernetes リソースのガバナンスに関する記事を参照してください。

リソースの制限と要求の要件:

  • コア数の制限値は、課金のために必要です。
  • それ以外のリソースの要求と制限は省略可能です。
  • コア数の制限と要求を指定する場合は、正の整数値にする必要があります。
  • コア数の要求を指定する場合は、少なくとも 1 コアを指定する必要があります。
  • メモリ値の形式は、Kubernetes の表記に従います。

サービスの種類のカスタマイズ

必要に応じて、サービスの種類を NodePort に変更できます。 ランダムなポート番号が割り当てられます。

ストレージのカスタマイズ

ストレージのストレージ クラスを環境に合わせてカスタマイズできます。 使用可能なストレージ クラスがわからない場合は、コマンド kubectl get storageclass を実行して表示できます。 テンプレートの既定値は default です。 この値は、既定値 "として設定された" ストレージ クラスがあるということではなく、default という "名前が付けられた" ストレージ クラスがあることを意味します。 必要に応じて、ストレージのサイズを変更することもできます。 詳細については、「ストレージの構成」を参照してください。

PostgreSQL サーバーの作成

PostgreSQL サーバーの yaml ファイルをカスタマイズしたので、次のコマンドを実行して PostgreSQL サーバーを作成できます。

kubectl create -n <your target namespace> -f <path to your yaml file>

#Example
#kubectl create -n arc -f C:\arc-data-services\postgres.yaml

作成状態の監視

PostgreSQL サーバーの作成が完了するまで数分間かかります。 次のコマンドを使用して、別のターミナル ウィンドウで進行状況を監視できます。

Note

下のコマンド例では、pg1 という名前の PostgreSQL サーバーと、arc という名前の Kubernetes 名前空間を作成していることを前提としています。 異なる名前空間や PostgreSQL サーバー名を使用した場合は、arcpg1 を実際の名前に置き換えることができます。

kubectl get postgresqls/pg1 --namespace arc
kubectl get pods --namespace arc

kubectl describe コマンドを実行して、特定のポッドの作成状態を確認することもできます。 describe コマンドは、何らの問題をトラブルシューティングするのに役立ちます。 次に例を示します。

kubectl describe pod/<pod name> --namespace arc

#Example:
#kubectl describe pod/pg1-0 --namespace arc

作成の問題のトラブルシューティング

作成で問題が発生した場合は、「トラブルシューティング ガイド」を参照してください。