ScalarDL Ledger のカスタム値ファイルを構成する
このドキュメントでは、ScalarDL Ledger チャートのカスタム値ファイルを作成する方法について説明します。パラメータの詳細を知りたい場合は、ScalarDL Ledger chartの README を参照してください。
必要な構成
Scalar Envoy 構成
ScalarDL Ledger のカスタム値ファイルで Scalar Envoy 構成を設定する必要があります。これは、ScalarDL Ledger を Kubernetes 環境にデプロイする場合、クライアントリクエストが gRPC リクエストのロードバランサーとして Scalar Envoy 経由で ScalarDL Ledger に送信されるためです。
Scalar Envoy 構成の詳細については、ドキュメント Scalar Envoy のカスタム値ファイルの構成を参照してください。
envoy:
configurationsForScalarEnvoy:
...
ledger:
configurationsForScalarDLLedger:
...
画像構成
ledger.image.repository を設定する必要があります。コンテナリポジトリからイメージをプルできるように、ScalarDL Ledger コンテナイメージを必ず指定してください。
ledger:
image:
repository: <SCALARDL_LEDGER_CONTAINER_IMAGE>
Scalar 製品のコンテナリポジトリの詳細については、Scalar 製品のコンテナイメージを取得する方法を参照してください。
Ledger/データベースの構成
ledger.ledgerProperties を設定する必要があります。ledger.properties をこのパラメータに設定してください。ScalarDL Ledger の構成の詳細については、ledger.properties を参照してください。
ledger:
ledgerProperties: |
scalar.db.contact_points=localhost
scalar.db.username=cassandra
scalar.db.password=cassandra
scalar.db.storage=cassandra
scalar.dl.ledger.proof.enabled=true
scalar.dl.ledger.auditor.enabled=true
scalar.dl.ledger.proof.private_key_path=/keys/ledger-key-file
キー/証明書の構成
scalar.dl.ledger.proof.enabled を true に設定した場合 (この設定は ScalarDL Auditor を使用する場合に必要です)、秘密鍵ファイルを scalar.dl.ledger.proof.private_key_path に設定する必要があります。
この場合、秘密鍵ファイルを ScalarDL Ledger ポッドにマウントする必要があります。
秘密鍵ファイルをマウントする方法の詳細については、ScalarDL Helm Charts のポッドに秘密鍵ファイルと証明書ファイルをマウントするを参照してください。
オプションの構成
リソース構成 (本番環境で推奨)
Kubernetes のリクエストと制限を使用してポッドリソースを制御したい場合は、ledger.resources を使用できます。
商用ライセンスの観点から、Scalar 製品の1つのポッドのリソースは 2vCPU / 4GB メモリに制限されていることに注意してください。また、AWS Marketplace から提供される従量課金制のコンテナを取得する場合、resources.limits で 2vCPU / 4GB を超えるメモリ構成でそれらのコンテナを実行することはできません。この制限を超えると、ポッドは自動的に停止されます。
これらは、Kubernetes のリクエストと制限と同じ構文を使用して構成できます。そのため、Kubernetes の要求と制限の詳細については、公式ドキュメント Resource Management for Pods and Containers を参照してください。
ledger:
resources:
requests:
cpu: 2000m
memory: 4Gi
limits:
cpu: 2000m
memory: 4Gi
シークレット構成 (運用環境で推奨)
環境変数を使用して ledger.ledgerProperties 内の一部のプロパティ (資格情報など) を設定したい場合は、ledger.secretName を使用して、いくつかの資格情報を含む Secret リソースを指定できます。
たとえば、環境変数を使用してバックエンドデータベースの資格情報 (scalar.db.username および scalar.db.password) を設定でき、これによりポッドの安全性が高まります。
Secret リソースの使用方法の詳細については、ドキュメント Secret リソースを使用して資格情報を環境変数としてプロパティファイルに渡す方法を参照してください。
ledger:
secretName: "ledger-credentials-secret"
アフィニティ構成 (運用環境で推奨)
Kubernetes のアフィニティと反アフィニティを使用してポッドのデプロイメントを制御したい場合は、ledger.affinity を使用できます。
Kubernetes のアフィニティと同じ構文を使用して構成できます。そのため、Kubernetes のアフィニティ設定の詳細については、公式ドキュメント Assigning Pods to Nodes を参照してください。
ledger:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchExpressions:
- key: app.kubernetes.io/name
operator: In
values:
- scalardl
- key: app.kubernetes.io/app
operator: In
values:
- ledger
topologyKey: kubernetes.io/hostname
weight: 50
Prometheus/Grafana 構成 (運用環境で推奨)
kube-prometheus-stack を使用して ScalarDL Ledger ポッドを監視する場合は、ledger.grafanaDashboard.enabled、ledger.serviceMonitor を使用して、kube-prometheus-stack の ConfigMap、ServiceMonitor、および PrometheusRule リソースをデプロイできます。enabled および ledger.prometheusRule.enabled。
ledger:
grafanaDashboard:
enabled: true
namespace: monitoring
serviceMonitor:
enabled: true
namespace: monitoring
interval: 15s
prometheusRule:
enabled: true
namespace: monitoring
SecurityContext 設定 (デフォルト値を推奨)
ScalarDL Ledger ポッドに SecurityContext と PodSecurityContext を設定したい場合は、ledger.securityContext と ledger.podSecurityContext を使用できます。
KubernetesのSecurityContextやPodSecurityContextと同じ構文を使用して設定できます。したがって、Kubernetes の SecurityContext および PodSecurityContext 構成の詳細については、公式ドキュメント Configure a Security Context for a Pod or Container を参照してください。
ledger:
podSecurityContext:
seccompProfile:
type: RuntimeDefault
securityContext:
capabilities:
drop:
- ALL
runAsNonRoot: true
allowPrivilegeEscalation: false
TLS 構成 (環境に応じてオプション)
TLS は、次の通信で有効にできます:
- ScalarDL Ledger とクライアント間の通信。
- ScalarDL Ledger と ScalarDL Auditor 間の通信。
証明書管理にはいくつかのオプションがあります。
- 秘密鍵と証明書ファイルの管理
- cert-manager を使用して秘密鍵と証明書ファイルを自動的に管理します。
- メンテナンスや運用のコストを削減できます。たとえば、cert-manager は証明書の有効期限が切れる前に自動的に更新し、Scalar Helm Chart は秘密鍵と証明書ファイルを Scalar 製品ポッドに自動的にマウントします。
- cert-manager がサポートしていない CA は使用できません。サポートされている発行元は cert-manager ドキュメントで確認できます。
- 秘密鍵と証明書ファイルを手動で管理します。
- ご自身のお好みの方法で、秘密鍵と証明書ファイルを発行・管理することができます。
- cert-manager がサポートしていない場合でも、任意の証明書を使用できます。
- 証明書の有効期限が切れた場合は、シークレットリソースを更新する必要があります。
- cert-manager を使用して秘密鍵と証明書ファイルを自動的に管理します。
- 証明書の種類
- 信頼できる CA (サードパーティによる署名付き証明書) を使用します。
- サードパーティの証明書発行者からの信頼できる証明書を使用できます。
- パケットを暗号化できます。
- 信頼できる証明書を発行するには費用を支払う必要があります。
- 自己署名証明書を使用します。
- 証明書発行にかかるコストを削減できます。
- 証明書の信頼性は信頼できる CA よりも低くなりますが、パケットを暗号化できます。
- 信頼できる CA (サードパーティによる署名付き証明書) を使用します。
つまり、次の4つのオプションがあります。
- 自動管理で自己署名 CA を使用します。
- 自動管理で信頼できる CA を使用します。
- 手動管理で自己署名 CA を使用します。
- 手動管理で信頼できる CA を使用します。
セキュリティ要件に基づいて、どの方法を使用するかを検討する必要があります。各方法のガイダンスと関連ドキュメントについては、次の意思決定ツリーを参照してください。