このドキュメントでは、Kubernetes に Spanner Omni デプロイを作成する方法について説明します。このデプロイは暗号化されません。Spanner Omni を評価するためのテスト環境または概念実証環境を迅速に設定する場合は、暗号化なしでデプロイを作成するのが最も簡単な方法です。mTLS やその他のセキュリティ対策を構成する必要がないためです。 ただし、暗号化されていないネットワーク トラフィックやオープンアクセスなどのセキュリティ リスクがあるため、この構成は本番環境ではおすすめしません。シングルサーバーまたは複数のゾーンにまたがるリージョン デプロイを選択できます。
Spanner Omni のプレビュー版では TLS 暗号化がサポートされておらず、デプロイの作成から 90 日後にデータの書き込みが停止します。すべての機能を備えたエディションに早期アクセスするには、 Google にお問い合わせください。
始める前に
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
整合性を確保するためにクォーラムを確保するには、ゾーンあたりのルートサーバーの数を 1 ~ 9 の奇数にする必要があります。サーバーの数が偶数の場合、デプロイが失敗する可能性があります。ゾーンを構成するときに、サーバーをルートサーバーとして指定します。開発またはテストには 1 つ、高可用性の本番環境ゾーンには 3 つを使用することをおすすめします。
例 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 を使用してデプロイに接続し、操作できます。
次のコマンドを実行して、緊急対応用住所を取得します。
kubectl get service spanner -n spanner-nsEXTERNAL-IP:PORTは、DEPLOYMENT_ENDPOINT です。まだダウンロードしていない場合は、
spanner-omniCloud Storage バケットから Spanner Omni CLI をダウンロードします。Spanner Omni CLI を使用して、GoogleSQL または PostgreSQL データベースを作成し、操作します。
GoogleSQL
GoogleSQL データベースを作成して操作するには、次のコマンドを実行します。
spanner databases create DATABASE_NAME --deployment_endpoint DEPLOYMENT_ENDPOINT spanner sql --database=DATABASE_NAME --deployment_endpoint DEPLOYMENT_ENDPOINTPostgreSQL
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