[非推奨] Helm Charts の入門 (ScalarDB Server)
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
ScalarDB Server は非推奨になりました。 代わりに ScalarDB Cluster を使用してください。
このドキュメントでは、Kubernetes クラスター上の Helm Chart をテスト環境として使用して、ScalarDB Server を開始する方法について説明します。 ここでは、テスト用の Mac または Linux 環境がすでにあることを前提としています。 このドキュメントでは Minikube を使用しますが、これから説明する手順はどの Kubernetes クラスターでも機能するはずです。
要件
※コンテナイメージ(scalardb-server
および scalardb-envoy
)を取得するには、AWS Marketplace またはAzure Marketplace で ScalarDB を購読する必要があります。 詳細については、以下のドキュメントを参照してください。
- How to install Scalar products through AWS Marketplace
- How to install Scalar products through Azure Marketplace
私たちが作るもの
次のように、次のコンポーネントを Kubernetes クラスターにデプロイします。
+--------------------------------------------------------------------------------------------------------------------------------------+
| [Kubernetes クラスター] |
| |
| [ポッド] [ポッド] [ポッド] [ポッド] |
| |
| +-------+ +-----------------+ |
| +---> | Envoy | ---+ +---> | ScalarDB Server | ---+ |
| | +-------+ | | +-----------------+ | |
| | | | | |
| +--------+ +---------+ | +-------+ | +-------------------+ | +-----------------+ | +------------+ |
| | クライアント | ---> | サービス | ---+---> | Envoy | ---+---> | サービス | ---+---> | ScalarDB Server | ---+---> | PostgreSQL | |
| +--------+ | (Envoy) | | +-------+ | | (ScalarDB Server) | | +-----------------+ | +------------+ |
| +---------+ | | +-------------------+ | | |
| | +-------+ | | +-----------------+ | |
| +---> | Envoy | ---+ +---> | ScalarDB Server | ---+ |
| +-------+ +-----------------+ |
| |
+--------------------------------------------------------------------------------------------------------------------------------------+
ステップ 1. Kubernetes クラスターを開始する
まず、Kubernetes クラスターを準備する必要があります。 minikube 環境を使用する場合は、Scalar Helm Charts の入門 を参照してください。 すでに Kubernetes クラスターを開始している場合は、この手順をスキップできます。
ステップ 2. PostgreSQL コンテナーを開始する
ScalarDB は、バックエンド データベースとして何らかのデータベース システムを使用します。 このドキュメントでは PostgreSQL を使用します。
次のようにして、Kubernetes クラスターに PostgreSQL をデプロイできます。
-
Bitnami Helm リポジトリを追加します。
helm repo add bitnami https://charts.bitnami.com/bitnami
-
PostgreSQLをデプロイします。
helm install postgresql-scalardb bitnami/postgresql \
--set auth.postgresPassword=postgres \
--set primary.persistence.enabled=false -
PostgreSQL コンテナが実行されているかどうかを確認します。
kubectl get pod
【コマンド実行結果】
NAME READY STATUS RESTARTS AGE
postgresql-scalardb-0 1/1 Running 0 2m42s
ステップ 3. Helm Charts を使用して Kubernetes クラスターに ScalarDB Server をデプロイする
-
Scalar helm リポジトリを追加します。
helm repo add scalar-labs https://scalar-labs.github.io/helm-charts
-
AWS/Azure Marketplace から ScalarDB コンテナー イメージをプルするためのシークレット リソースを作成します。
- AWS Marketplace
kubectl create secret docker-registry reg-ecr-mp-secrets \
--docker-server=709825985650.dkr.ecr.us-east-1.amazonaws.com \
--docker-username=AWS \
--docker-password=$(aws ecr get-login-password --region us-east-1) - Azure Marketplace
kubectl create secret docker-registry reg-acr-secrets \
--docker-server=<your private container registry login server> \
--docker-username=<Service principal ID> \
--docker-password=<Service principal password>
詳細については、以下のドキュメントを参照してください。
- AWS Marketplace
-
ScalarDB Server のカスタム値ファイル (scalardb-custom-values.yaml) を作成します。
-
AWS Marketplace
cat << 'EOF' > scalardb-custom-values.yaml
envoy:
image:
repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalardb-envoy"
version: "1.3.0"
imagePullSecrets:
- name: "reg-ecr-mp-secrets"
scalardb:
image:
repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalardb-server"
tag: "3.7.0"
imagePullSecrets:
- name: "reg-ecr-mp-secrets"
databaseProperties: |
scalar.db.storage=jdbc
scalar.db.contact_points=jdbc:postgresql://postgresql-scalardb.default.svc.cluster.local:5432/postgres
scalar.db.username={{ default .Env.SCALAR_DB_POSTGRES_USERNAME "" }}
scalar.db.password={{ default .Env.SCALAR_DB_POSTGRES_PASSWORD "" }}
secretName: "scalardb-credentials-secret"
EOF -
Azure Marketplace
cat << 'EOF' > scalardb-custom-values.yaml
envoy:
image:
repository: "<your private container registry>/scalarinc/scalardb-envoy"
version: "1.3.0"
imagePullSecrets:
- name: "reg-acr-secrets"
scalardb:
image:
repository: "<your private container registry>/scalarinc/scalardb-server"
tag: "3.7.0"
imagePullSecrets:
- name: "reg-acr-secrets"
databaseProperties: |
scalar.db.storage=jdbc
scalar.db.contact_points=jdbc:postgresql://postgresql-scalardb.default.svc.cluster.local:5432/postgres
scalar.db.username={{ default .Env.SCALAR_DB_POSTGRES_USERNAME "" }}
scalar.db.password={{ default .Env.SCALAR_DB_POSTGRES_PASSWORD "" }}
secretName: "scalardb-credentials-secret"
EOF
-
-
PostgreSQL のユーザー名とパスワードを含む Secret リソースを作成します。
kubectl create secret generic scalardb-credentials-secret \
--from-literal=SCALAR_DB_POSTGRES_USERNAME=postgres \
--from-literal=SCALAR_DB_POSTGRES_PASSWORD=postgres -
ScalarDB Server をデプロイします。
helm install scalardb scalar-labs/scalardb -f ./scalardb-custom-values.yaml
-
ScalarDB Server ポッドがデプロイされているかどうかを確認します。
kubectl get pod
【コマンド実行結果】
NAME READY STATUS RESTARTS AGE
postgresql-scalardb-0 1/1 Running 0 9m48s
scalardb-765598848b-75csp 1/1 Running 0 6s
scalardb-765598848b-w864f 1/1 Running 0 6s
scalardb-765598848b-x8rqj 1/1 Running 0 6s
scalardb-envoy-84c475f77b-kpz2p 1/1 Running 0 6s
scalardb-envoy-84c475f77b-n74tk 1/1 Running 0 6s
scalardb-envoy-84c475f77b-zbrwz 1/1 Running 0 6sScalarDB Server ポッドが適切にデプロイされている場合、STATUS が Running であることがわかります。
-
ScalarDB Server サービスがデプロイされているかどうかを確認します。
kubectl get svc
【コマンド実行結果】
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 47d
postgresql-scalardb ClusterIP 10.109.118.122 <none> 5432/TCP 10m
postgresql-scalardb-hl ClusterIP None <none> 5432/TCP 10m
scalardb-envoy ClusterIP 10.110.110.250 <none> 60051/TCP 41s
scalardb-envoy-metrics ClusterIP 10.107.98.227 <none> 9001/TCP 41s
scalardb-headless ClusterIP None <none> 60051/TCP 41s
scalardb-metrics ClusterIP 10.108.188.10 <none> 8080/TCP 41sScalarDB Server サービスが適切にデプロイされている場合は、CLUSTER-IP 列にプライベート IP アドレスが表示されます。 (注記:
scalardb-headless
には CLUSTER-IP がありません。)