[非推奨] ScalarDB Server のカスタム値ファイルを構成する
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
ScalarDB Server は非推奨になりました。 代わりに ScalarDB Cluster を使用してください。
このドキュメントでは、ScalarDB Server チャートのカスタム値ファイルを作成する方法について説明します。 パラメータの詳細を知りたい場合は、ScalarDB Server チャートの README を参照してください。
必要な構成
Scalar Envoy 構成
ScalarDB Server のカスタム値ファイルに Scalar Envoy 構成を設定する必要があります。 これは、ScalarDB Server を Kubernetes 環境にデプロイする場合、クライアント リクエストが gRPC リクエストのロード バランサーとして Scalar Envoy 経由で ScalarDB Server に送信されるためです。
Scalar Envoy 構成の詳細については、ドキュメント Scalar Envoy のカスタム値ファイルの構成 を参照してください。
envoy:
configurationsForScalarEnvoy:
...
scalardb:
configurationsForScalarDB:
...
画像構成
scalardb.image.repository
を設定する必要があります。 コンテナー リポジトリからイメージをプルできるように、必ず ScalarDB Server コンテナー イメージを指定してください。
scalardb:
image:
repository: <SCALARDB_SERVER_CONTAINER_IMAGE>
AWS または Azure を使用している場合、詳細については次のドキュメントを参照してください。
- How to install Scalar products through AWS Marketplace
- How to install Scalar products through Azure Marketplace
データベース構成
scalardb.databaseProperties
を設定する必要があります。 database.properties
をこのパラメータに設定してください。 ScalarDB Server の設定の詳細については、Configure ScalarDB Server を参照してください。
scalardb:
databaseProperties: |
scalar.db.server.port=60051
scalar.db.server.prometheus_exporter_port=8080
scalar.db.server.grpc.max_inbound_message_size=
scalar.db.server.grpc.max_inbound_metadata_size=
scalar.db.contact_points=localhost
scalar.db.username=cassandra
scalar.db.password=cassandra
scalar.db.storage=cassandra
scalar.db.transaction_manager=consensus-commit
scalar.db.consensus_commit.isolation_level=SNAPSHOT
scalar.db.consensus_commit.serializable_strategy=
scalar.db.consensus_commit.include_metadata.enabled=false
オプションの構成
リソース構成 (本番環境で推奨)
Kubernetes のリクエストと制限を使用してポッド リソースを制御したい場合は、scalardb.resources
を使用できます。
商用ライセンスの観点から、Scalar 製品の 1 つのポッドのリソースは 2vCPU / 4GB メモリに制限されていることに注意してください。 また、AWS Marketplace から提供される従量課金制のコンテナを取得する場合、resources.limits
で 2vCPU / 4GB を超えるメモリ構成でそれらのコンテナを実行することはできません。 この制限を超えると、ポッドは自動的に停止されます。
これらは、Kubernetes のリクエストと制限と同じ構文を使用して構成できます。 そのため、Kubernetes の要求と制限の詳細については、公式ドキュメント Pod およびコンテナーのリソース管理 を参照してください。
scalardb:
resources:
requests:
cpu: 2000m
memory: 4Gi
limits:
cpu: 2000m
memory: 4Gi
シークレット構成 (運用環境で推奨)
環境変数を使用して scalardb.databaseProperties
内の一部のプロパティ (資格情報など) を設定したい場合は、scalardb.secretName
を使用して、いくつかの資格情報を含む Secret リソースを指定できます。
たとえば、環境変数を使用してバックエンド データベースの資格情報 (scalar.db.username
および scalar.db.password
) を設定でき、これによりポッドの安全性が高まります。
Secret リソースの使用方法の詳細については、ドキュメント Secret リソースを使用して資格情報を環境変数としてプロパティ ファイルに渡す方法 を参照してください。
scalardb:
secretName: "scalardb-credentials-secret"
アフィニティ構成 (運用環境で推奨)
Kubernetes のアフィニティと反アフィニティを使用してポッドのデプロイメントを制御したい場合は、scalardb.affinity
を使用できます。
Kubernetes のアフィニティと同じ構文を使用して構成できます。 そのため、Kubernetes のアフィニティ設定の詳細については、公式ドキュメント Assigning Pods to Nodes を参照してください。
scalardb:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchExpressions:
- key: app.kubernetes.io/name
operator: In
values:
- scalardb
- key: app.kubernetes.io/app
operator: In
values:
- scalardb
topologyKey: kubernetes.io/hostname
weight: 50
Prometheus/Grafana 構成 (運用環境で推奨)
kube-prometheus-stack を使用して ScalarDB Server ポッドを監視する場合は、scalardb.grafanaDashboard.enabled
、scalardb.serviceMonitor
を使用して、kube-prometheus-stack の ConfigMap、ServiceMonitor、および PrometheusRule リソースをデプロイできます。 enabled
および scalardb.prometheusRule.enabled
。
scalardb:
grafanaDashboard:
enabled: true
namespace: monitoring
serviceMonitor:
enabled: true
namespace: monitoring
interval: 15s
prometheusRule:
enabled: true
namespace: monitoring
SecurityContext 設定 (デフォルト値を推奨)
ScalarDB Server ポッドに SecurityContext と PodSecurityContext を設定したい場合は、scalardb.securityContext
と scalardb.podSecurityContext
を使用できます。
KubernetesのSecurityContextやPodSecurityContextと同じ構文を使用して設定できます。 したがって、Kubernetes の SecurityContext および PodSecurityContext 構成の詳細については、公式ドキュメント Configure a Security Context for a Pod or Container を参照してください。
scalardb:
podSecurityContext:
seccompProfile:
type: RuntimeDefault
securityContext:
capabilities:
drop:
- ALL
runAsNonRoot: true
allowPrivilegeEscalation: false
レプリカ構成 (環境に応じてオプション)
scalardb.replicaCount
を使用して、ScalarDB Serverのレプリカ(ポッド)の数を指定できます。
scalardb:
replicaCount: 3
ロギング構成 (環境に応じてオプション)
ScalarDB Server のログレベルを変更したい場合は、scalardb.storageConfiguration.dbLogLevel
を使用できます。
scalardb:
storageConfiguration:
dbLogLevel: INFO
汚染と許容の構成 (環境に応じてオプション)
Kubernetes のテイントと許容を使用してポッドのデプロイメントを制御したい場合は、scalardb.tolerations
を使用できます。
Kubernetes の許容と同じ構文を使用して、テイントと許容を構成できます。 Kubernetes での許容設定の詳細については、Kubernetes の公式ドキュメント Taints and Tolerations を参照してください。
scalardb:
tolerations:
- effect: NoSchedule
key: scalar-labs.com/dedicated-node
operator: Equal
value: scalardb