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

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.15.1
    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 の他のユースケースについて詳しく知るには、次のチュートリアルをお試しください。

This website uses cookies to enhance the visitor experience. By continuing to use this website, you acknowledge that you have read and understood our privacy policy and consent to the use of cookies to help improve your browsing experience and provide you with personalized content.