メインコンテンツまでスキップ
バージョン: 3.14

ScalarDB Cluster をローカルにデプロイする方法

注記

このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。

このガイドでは、テスト環境向けに特別に設計されたローカル Kubernetes クラスターで Helm Chart を使用して ScalarDB Cluster をデプロイする方法について説明します。

前提条件

警告

ScalarDB Cluster を使用するには、ライセンスキー (試用ライセンスまたは商用ライセンス) が必要です。ライセンスキーをお持ちでない場合は、お問い合わせください。

作成するもの

以下に示すように、ローカル Kubernetes クラスターに次のコンポーネントをデプロイします。

+----------------------------------------------------------------------------------------------------------------------------------------+
| [Kubernetes クラスター] |
| |
| [ポッド] [ポッド] [ポッド] |
| |
| +-------+ |
| +---> | Envoy | ---+ |
| | +-------+ | |
| | | |
| +---------+ | +-------+ | +--------------------+ |
| | サービス | ---+---> | Envoy | ---+---------> | サービス | ---+ |
| | (Envoy) | | +-------+ | | (ScalarDB Cluster) | | |
| +---------+ | | +--------------------+ | +------------------------+ |
| | +-------+ | | +---> | ScalarDB Cluster ノード | ---+ |
| +---> | Envoy | ---+ | | +------------------------+ | |
| +-------+ | | | |
| | | +------------------------+ | +------------+ |
| +---+---> | ScalarDB Cluster ノード | ---+---> | PostgreSQL | |
| | | +------------------------+ | +------------+ |
| | | | |
| | | +------------------------+ | |
| | +---> | ScalarDB Cluster ノード | ---+ |
| | +------------------------+ |
| +-----------------------------+ | |
| | サービス | ---+ |
| | (ScalarDB Cluster GraphQL) | |
| +-----------------------------+ |
| |
+----------------------------------------------------------------------------------------------------------------------------------------+

ステップ 1. PostgreSQL コンテナを起動する

ScalarDB Cluster は、バックエンドデータベースとして何らかのデータベースシステムを使用する必要があります。このガイドで使用するデータベースは PostgreSQL です。

次のようにして、Kubernetes クラスターに PostgreSQL をデプロイできます。

  1. 次のコマンドを実行して、Bitnami Helm リポジトリを追加します。

    helm repo add bitnami https://charts.bitnami.com/bitnami
  2. 次のコマンドを実行して PostgreSQL をデプロイします。

    helm install postgresql-scalardb-cluster bitnami/postgresql \
    --set auth.postgresPassword=postgres \
    --set primary.persistence.enabled=false
  3. 次のコマンドを実行して、PostgreSQL コンテナが実行されているかどうかを確認します。

    kubectl get pod

    次の出力が表示されます。

    NAME                            READY   STATUS    RESTARTS   AGE
    postgresql-scalardb-cluster-0 1/1 Running 0 17s

ステップ 2. Helm Chart を使用して Kubernetes クラスターに ScalarDB Cluster をデプロイする

  1. 次のコマンドを実行して Scalar Helm Charts リポジトリを追加します。

    helm repo add scalar-labs https://scalar-labs.github.io/helm-charts
  2. ライセンスキーと証明書を環境変数として設定します。ライセンスキーがない場合は、お問い合わせください。<CERT_PEM_FOR_YOUR_LICENSE_KEY> の値の詳細については、製品ライセンスキーの設定方法を参照してください。

    SCALAR_DB_CLUSTER_LICENSE_KEY='<YOUR_LICENSE_KEY>'
    SCALAR_DB_CLUSTER_LICENSE_CHECK_CERT_PEM='<CERT_PEM_FOR_YOUR_LICENSE_KEY>'
  3. 次のコマンドを実行して、ScalarDB Cluster のカスタム値ファイル (scalardb-cluster-custom-values.yaml) を作成します。

    cat << 'EOF' > scalardb-cluster-custom-values.yaml
    envoy:
    enabled: true
    service:
    type: "LoadBalancer"

    scalardbCluster:

    image:
    repository: "ghcr.io/scalar-labs/scalardb-cluster-node-byol-premium"

    scalardbClusterNodeProperties: |
    # ScalarDB Cluster configurations
    scalar.db.cluster.membership.type=KUBERNETES
    scalar.db.cluster.membership.kubernetes.endpoint.namespace_name=${env:SCALAR_DB_CLUSTER_MEMBERSHIP_KUBERNETES_ENDPOINT_NAMESPACE_NAME}
    scalar.db.cluster.membership.kubernetes.endpoint.name=${env:SCALAR_DB_CLUSTER_MEMBERSHIP_KUBERNETES_ENDPOINT_NAME}

    # Storage configurations
    scalar.db.storage=jdbc
    scalar.db.contact_points=jdbc:postgresql://postgresql-scalardb-cluster.default.svc.cluster.local:5432/postgres
    scalar.db.username=${env:SCALAR_DB_CLUSTER_POSTGRES_USERNAME}
    scalar.db.password=${env:SCALAR_DB_CLUSTER_POSTGRES_PASSWORD}

    # For ScalarDB Cluster GraphQL tutorial.
    scalar.db.graphql.enabled=true

    # For ScalarDB Cluster SQL tutorial.
    scalar.db.sql.enabled=true

    ### License key configurations
    scalar.db.cluster.node.licensing.license_key=${env:SCALAR_DB_CLUSTER_LICENSE_KEY}
    scalar.db.cluster.node.licensing.license_check_cert_pem=${env:SCALAR_DB_CLUSTER_LICENSE_CHECK_CERT_PEM}
    graphql:
    enabled: true
    service:
    type: "LoadBalancer"

    secretName: "scalardb-credentials-secret"
    EOF
注記

このガイドでは、ScalarDB Cluster GraphQL および Envoy のサービスタイプは LoadBalancer に設定されています。

  1. 資格情報とライセンスキーを含む scalardb-credentials-secret という名前のシークレットリソースを作成します。

    kubectl create secret generic scalardb-credentials-secret \
    --from-literal=SCALAR_DB_CLUSTER_POSTGRES_USERNAME=postgres \
    --from-literal=SCALAR_DB_CLUSTER_POSTGRES_PASSWORD=postgres \
    --from-literal=SCALAR_DB_CLUSTER_LICENSE_KEY="${SCALAR_DB_CLUSTER_LICENSE_KEY}" \
    --from-file=SCALAR_DB_CLUSTER_LICENSE_CHECK_CERT_PEM=<(echo ${SCALAR_DB_CLUSTER_LICENSE_CHECK_CERT_PEM} | sed 's/\\n/\
    /g') \
    -n default
  2. ScalarDB Cluster のチャートバージョンを設定します。

    SCALAR_DB_CLUSTER_VERSION=3.14.0
    SCALAR_DB_CLUSTER_CHART_VERSION=$(helm search repo scalar-labs/scalardb-cluster -l | grep -F "${SCALAR_DB_CLUSTER_VERSION}" | awk '{print $2}' | sort --version-sort -r | head -n 1)
  3. ScalarDB Cluster をデプロイします。

    helm install scalardb-cluster scalar-labs/scalardb-cluster -f scalardb-cluster-custom-values.yaml --version ${SCALAR_DB_CLUSTER_CHART_VERSION} -n default
  4. ScalarDB Cluster ポッドがデプロイされているかどうかを確認します。

    kubectl get pod

    次の出力が表示されます。

    NAME                                      READY   STATUS    RESTARTS   AGE
    postgresql-scalardb-cluster-0 1/1 Running 0 84s
    scalardb-cluster-envoy-59899dc588-477tg 1/1 Running 0 35s
    scalardb-cluster-envoy-59899dc588-dpvhx 1/1 Running 0 35s
    scalardb-cluster-envoy-59899dc588-lv9hx 1/1 Running 0 35s
    scalardb-cluster-node-866c756c79-5v2tk 1/1 Running 0 35s
    scalardb-cluster-node-866c756c79-9zhq5 1/1 Running 0 35s
    scalardb-cluster-node-866c756c79-t6v86 1/1 Running 0 35s

    ScalarDB Cluster Node Pod と Envoy Pod が適切にデプロイされている場合、各 Pod の STATUSRunning になります。

  5. 次のコマンドを実行して、ScalarDB Cluster のサービスリソースがデプロイされているかどうかを確認します。

    kubectl get svc

    次の出力が表示されます。

    NAME                             TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)           AGE
    kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 260d
    postgresql-scalardb-cluster ClusterIP 10.110.97.40 <none> 5432/TCP 86s
    postgresql-scalardb-cluster-hl ClusterIP None <none> 5432/TCP 86s
    scalardb-cluster-envoy LoadBalancer 10.105.121.51 localhost 60053:30641/TCP 49s
    scalardb-cluster-envoy-metrics ClusterIP 10.111.131.189 <none> 9001/TCP 49s
    scalardb-cluster-graphql LoadBalancer 10.105.74.214 localhost 8080:30514/TCP 49s
    scalardb-cluster-headless ClusterIP None <none> 60053/TCP 49s
    scalardb-cluster-metrics ClusterIP 10.110.132.22 <none> 9080/TCP 49s

    ScalarDB Cluster と Envoy のサービスリソースが適切にデプロイされている場合、CLUSTER-IP 列にプライベート IP アドレスが表示されます。

    注記

    scalardb-cluster-headless には CLUSTER-IP アドレスがありません。

    また、TYPELoadBalancer に設定されている ScalarDB Cluster GraphQL (scalardb-cluster-graphql) のサービスリソースと Envoy (scalardb-cluster-envoy) のサービスリソースに割り当てられた EXTERNAL-IP アドレスも確認できます。

    また、環境から LoadBalancer サービスにアクセスする方法は、Kubernetes ディストリビューションごとに異なります。例:

    LoadBalancer サービスにアクセスする方法の詳細については、使用している Kubernetes ディストリビューションの公式ドキュメントを参照してください。

すべてのリソースを削除する

以下のコマンドを実行すると、このガイドで作成したすべてのリソースを削除できます。

helm uninstall scalardb-cluster postgresql-scalardb-cluster

詳細

ScalarDB Cluster の他のユースケースについて詳しく知るには、次のチュートリアルをお試しください。