Kubernetes に Deployment を作成する

このドキュメントでは、Kubernetes で Spanner Omni デプロイを作成する方法について説明します。このデプロイは暗号化されていません。Spanner Omni を評価するためのテスト環境または概念実証環境をすばやく設定する場合は、暗号化なしでデプロイを作成するのが最も手っ取り早い方法です。mTLS やその他のセキュリティ対策を構成する必要がないためです。ただし、この構成は、ネットワーク トラフィックの暗号化やオープン アクセスなどのセキュリティ リスクがあるため、本番環境にはおすすめしません。単一サーバーまたは複数のゾーンにまたがるリージョン デプロイを選択できます。

Spanner Omni のプレビュー バージョンは、TLS 暗号化をサポートしていません。TLS 暗号化を使用してデプロイを作成できる機能を取得するには、Google にお問い合わせのうえ、Spanner Omni のフル バージョンの早期アクセスをリクエストしてください。

始める前に

Spanner Omni をデプロイする前に、環境が次の要件を満たしていることを確認してください。

  • Kubernetes クラスタを作成します。この構成は、Google Kubernetes Engine(GKE)と Amazon Elastic Kubernetes Service(Amazon EKS)をサポートしています。他の環境で動作させるには、構成をカスタマイズする必要がある場合があります。

  • Kubernetes クラスタが、Spanner Omni コンテナをホストする Artifact Registry アーティファクトにアクセスできることを確認します。

  • kubectl コマンドライン ツールHelm をインストールして構成します。

  • vSphere 仮想化プラットフォーム マシンに Kubernetes 環境を設定する場合は、仮想マシンの .vmx 構成ファイルに monitor_control.virtual_rdtsc = FALSE を追加して、タイムスタンプ カウンタ(TSC)の仮想化を無効にします。これにより、TrueTime が正しく動作します。

  • 環境が Spanner Omni のシステム要件を満たしていることを確認します。

  • デプロイのトポロジを選択します。

Helm 構成を準備する

Helm 構成を作成します。詳細については、Helm 構成を作成するをご覧ください。

デプロイの作成

特定のオーバーライドを使用して Helm チャートをインストールします。最も一般的なデプロイのコマンド例を次に示します。

例 1: モニタリング スタックを使用して GKE の単一サーバーで Spanner Omni を実行する

モニタリング スタックを使用して GKE の単一サーバーで Spanner Omni を実行するには、次のコマンドを実行します。

  kubectl create ns monitoring
  helm upgrade --install spanner-omni oci://us-central1-docker.pkg.dev/spanner-omni/helm-charts/spanner-omni --version 0.1.0 \
    --set global.platform=gke \
    --set deployment.singleServer=true \
    --set monitoring.enabled=true \
    --namespace spanner-ns \
    --create-namespace

例 2: GKE の複数のサーバーで Spanner Omni を実行する

GKE の単一ゾーン(us-central1-a)内の複数のサーバーで Spanner Omni を実行するには、次のコマンドを実行します。

  kubectl create ns monitoring
  helm upgrade --install spanner-omni oci://us-central1-docker.pkg.dev/spanner-omni/helm-charts/spanner-omni --version 0.1.0 \
    --set global.platform=gke \
    --set deployment.replicasPerZone=5 \
    --set deployment.rootServersPerZone=3 \
    --set-json 'locations=[{"name":"us-central1","zones":[{"name":"us-central1-a","shortName":"a"}]}]' \
    --set monitoring.enabled=true \
    --namespace spanner-ns \
    --create-namespace

例 3: 高可用性のリージョン デプロイ

このデプロイではデータのコピーが 3 つ保持されるため、ゾーンで停止が発生しても Spanner Omni は動作を継続できます。このデプロイを作成するには、次のコマンドを実行します。

  kubectl create ns monitoring
  helm upgrade --install spanner-omni oci://us-central1-docker.pkg.dev/spanner-omni/helm-charts/spanner-omni --version 0.1.0 \
    --set global.platform=gke \
    --set-json 'locations=[{"name":"us-central1","zones":[{"name":"us-central1-a","shortName":"a"},{"name":"us-central1-c","shortName":"b"},{"name":"us-central1-d","shortName":"c"}]}]' \
    --set monitoring.enabled=true \
    --namespace spanner-ns \
    --create-namespace

Pod のステータスを確認する

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

  kubectl get pods --watch --namespace spanner-ns

出力例:

  NAME          READY   STATUS    RESTARTS   AGE
  spanner-a-0   1/1     Running   0          4m
  spanner-a-1   1/1     Running   0          4m
  spanner-a-2   1/1     Running   0          4m
  spanner-a-3   1/1     Running   0          4m
  spanner-a-4   1/1     Running   0          4m
  spanner-b-0   1/1     Running   0          4m
  spanner-b-1   1/1     Running   0          4m
  spanner-b-2   1/1     Running   0          4m
  spanner-b-3   1/1     Running   0          4m
  spanner-b-4   1/1     Running   0          4m
  spanner-c-0   1/1     Running   0          4m
  spanner-c-1   1/1     Running   0          4m
  spanner-c-2   1/1     Running   0          4m
  spanner-c-3   1/1     Running   0          4m
  spanner-c-4   1/1     Running   0          4m

Spanner Omni を操作する

Pod が実行されたら、Spanner Omni CLI を使用してデプロイに接続し、操作できます。

  1. 次のコマンドを実行して、緊急対応用住所を取得します。

    kubectl get service spanner -n spanner-ns
    

    EXTERNAL-IP:PORT は、デプロイの DEPLOYMENT_ENDPOINT です。

  2. まだダウンロードしていない場合は、spanner-omni Cloud Storage バケットから Spanner Omni CLI をダウンロードします。

    Spanner Omni バケットに移動

  3. Spanner Omni CLI を使用して、GoogleSQL データベースまたは PostgreSQL データベースを作成し、操作します。

    GoogleSQL

    GoogleSQL データベースを作成して操作するには、次のコマンドを実行します。

    spanner databases create DATABASE_NAME --deployment_endpoint DEPLOYMENT_ENDPOINT
    spanner sql --database=DATABASE_NAME --deployment_endpoint DEPLOYMENT_ENDPOINT
    

    PostgreSQL

    PostgreSQL データベースを作成して操作するには、次のコマンドを実行します。

     spanner databases create POSTGRESQL_DATABASE_NAME --database_dialect POSTGRESQL --deployment_endpoint DEPLOYMENT_ENDPOINT
     spanner sql --database=POSTGRESQL_DATABASE_NAME --deployment_endpoint DEPLOYMENT_ENDPOINT
     ```
    
    You can also interact with a PostgreSQL database by following
    the instructions in [Connect using PGAdapter](/spanner-omni/pgadapter)
    to configure PGAdapter and use PostgreSQL tools, such as
    `psql`, with your PostgreSQL-dialect databases.
    

デプロイを観察する(省略可)

monitoring.enabled=true を使用して Spanner Omni を設定し、Spanner Omni がエクスポートする指標を取り込むように Prometheus を構成できます。これにより、デプロイの問題を分析してデバッグできます。詳しくは、以下をご覧ください。

サービスの詳細を取得するには、次のコマンドを実行します。

  # Prometheus service details. Default port is 9090.
  kubectl get service prometheus-service -n monitoring

  # Grafana service details. Default port is 3000.
  kubectl get service grafana -n monitoring

次のステップ