From ed72b3780e98b80e35399944cd9e416ce3e54ed5 Mon Sep 17 00:00:00 2001 From: josh-wong Date: Thu, 21 Nov 2024 13:53:14 +0000 Subject: [PATCH] AUTO: Sync Helm Charts docs to ScalarDB docs site repo --- .../conf/scalar-loki-stack-custom-values.yaml | 80 ++ .../conf/scalar-prometheus-custom-values.yaml | 167 +++ .../configure-custom-values-envoy.mdx | 392 +++++++ .../configure-custom-values-file.mdx | 24 + ...tom-values-scalar-admin-for-kubernetes.mdx | 139 +++ ...configure-custom-values-scalar-manager.mdx | 126 ++ ...m-values-scalardb-analytics-postgresql.mdx | 192 ++++ ...nfigure-custom-values-scalardb-cluster.mdx | 400 +++++++ ...nfigure-custom-values-scalardb-graphql.mdx | 227 ++++ .../configure-custom-values-scalardb.mdx | 205 ++++ ...nfigure-custom-values-scalardl-auditor.mdx | 345 ++++++ ...onfigure-custom-values-scalardl-ledger.mdx | 320 ++++++ ...e-custom-values-scalardl-schema-loader.mdx | 91 ++ .../helm-charts/getting-started-logging.mdx | 100 ++ .../getting-started-monitoring.mdx | 270 +++++ .../getting-started-scalar-helm-charts.mdx | 81 ++ .../getting-started-scalar-manager.mdx | 216 ++++ ...-started-scalardb-analytics-postgresql.mdx | 532 +++++++++ ...rted-scalardb-cluster-tls-cert-manager.mdx | 595 ++++++++++ .../getting-started-scalardb-cluster-tls.mdx | 624 ++++++++++ .../helm-charts/getting-started-scalardb.mdx | 386 +++++++ ...rted-scalardl-auditor-tls-cert-manager.mdx | 948 +++++++++++++++ .../getting-started-scalardl-auditor-tls.mdx | 1020 +++++++++++++++++ .../getting-started-scalardl-auditor.mdx | 910 +++++++++++++++ .../getting-started-scalardl-ledger.mdx | 615 ++++++++++ ...-to-deploy-scalar-admin-for-kubernetes.mdx | 37 + .../how-to-deploy-scalar-products.mdx | 70 ++ ...o-deploy-scalardb-analytics-postgresql.mdx | 44 + .../how-to-deploy-scalardb-cluster.mdx | 77 ++ .../how-to-deploy-scalardb-graphql.mdx | 49 + .../helm-charts/how-to-deploy-scalardb.mdx | 40 + .../how-to-deploy-scalardl-auditor.mdx | 45 + .../how-to-deploy-scalardl-ledger.mdx | 47 + .../mount-files-or-volumes-on-scalar-pods.mdx | 141 +++ .../use-secret-for-credentials.mdx | 245 ++++ 35 files changed, 9800 insertions(+) create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/conf/scalar-loki-stack-custom-values.yaml create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/conf/scalar-prometheus-custom-values.yaml create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-envoy.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-file.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalar-admin-for-kubernetes.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalar-manager.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardb-analytics-postgresql.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardb-cluster.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardb-graphql.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardb.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardl-auditor.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardl-ledger.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardl-schema-loader.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-logging.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-monitoring.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalar-helm-charts.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalar-manager.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardb-analytics-postgresql.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardb-cluster-tls-cert-manager.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardb-cluster-tls.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardb.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardl-auditor-tls-cert-manager.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardl-auditor-tls.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardl-auditor.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardl-ledger.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalar-admin-for-kubernetes.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalar-products.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalardb-analytics-postgresql.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalardb-cluster.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalardb-graphql.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalardb.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalardl-auditor.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalardl-ledger.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/mount-files-or-volumes-on-scalar-pods.mdx create mode 100644 i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/use-secret-for-credentials.mdx diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/conf/scalar-loki-stack-custom-values.yaml b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/conf/scalar-loki-stack-custom-values.yaml new file mode 100644 index 00000000..997537a5 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/conf/scalar-loki-stack-custom-values.yaml @@ -0,0 +1,80 @@ +promtail: + config: + snippets: + # -- `scapeConfigs` is exactly the part of https://grafana.com/docs/loki/latest/clients/promtail/configuration/#scrape_configs + # -- The value will be created as a Kubernetes ConfigMap and then mounted to the Promtail Pod. + # -- Not really need to change this value. It's set to scrape all logs of ScalarDL/DB Pods by using regular expression. + scrapeConfigs: | + # -- the `scalardl` job scrapes all the logs from Scalar Ledger Pods, Scalar Auditor Pods, and the corresponding Envoy Pods + - job_name: scalardl + pipeline_stages: + - docker: {} + kubernetes_sd_configs: + - role: pod + relabel_configs: + - source_labels: + - __meta_kubernetes_pod_node_name + target_label: __host__ + - action: replace + source_labels: + - __meta_kubernetes_pod_name + target_label: pod + - action: keep + regex: (.*)scalardl-(.+) + source_labels: + - pod + - replacement: /var/log/pods/*$1/*.log + separator: / + source_labels: + - __meta_kubernetes_pod_uid + - __meta_kubernetes_pod_container_name + target_label: __path__ + # -- the `scalardb` job scrapes all the logs of ScalarDB Server Pods and the corresponding Envoy Pods + - job_name: scalardb + pipeline_stages: + - docker: {} + kubernetes_sd_configs: + - role: pod + relabel_configs: + - source_labels: + - __meta_kubernetes_pod_node_name + target_label: __host__ + - action: replace + source_labels: + - __meta_kubernetes_pod_name + target_label: pod + - action: keep + regex: (.*)scalardb-(.+) + source_labels: + - pod + - replacement: /var/log/pods/*$1/*.log + separator: / + source_labels: + - __meta_kubernetes_pod_uid + - __meta_kubernetes_pod_container_name + target_label: __path__ + # -- the `scalar-admin-for-kubernetes` job scrapes all the logs of Scalar Admin for Kubernetes Pods + - job_name: scalar-admin-for-kubernetes + pipeline_stages: + - docker: {} + - cri: {} + kubernetes_sd_configs: + - role: pod + relabel_configs: + - source_labels: + - __meta_kubernetes_pod_node_name + target_label: __host__ + - action: replace + source_labels: + - __meta_kubernetes_pod_name + target_label: pod + - action: keep + regex: (.*)scalar-admin-for-kubernetes-(.+) + source_labels: + - pod + - replacement: /var/log/pods/*$1/*.log + separator: / + source_labels: + - __meta_kubernetes_pod_uid + - __meta_kubernetes_pod_container_name + target_label: __path__ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/conf/scalar-prometheus-custom-values.yaml b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/conf/scalar-prometheus-custom-values.yaml new file mode 100644 index 00000000..816ead1b --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/conf/scalar-prometheus-custom-values.yaml @@ -0,0 +1,167 @@ +defaultRules: + # -- Default PrometheusRules are not enabled + create: false + +alertmanager: + # -- alertmanager is enabled + enabled: true + + # -- Only check own namespace + alertmanagerConfigNamespaceSelector: null + +grafana: + # -- grafana is enabled + enabled: true + + # -- Default Grafana dashboards are not enabled + defaultDashboardsEnabled: false + + sidecar: + datasources: + enabled: true + defaultDatasourceEnabled: false + label: grafana_datasource + labelValue: "1" + dashboards: + enabled: true + label: grafana_dashboard + labelValue: "1" + # -- Resource limits & requests + resources: {} + # requests: + # memory: 400Mi + + # -- Grafana's primary configuration + grafana.ini: + security: + # -- allow Grafana to be embedded (not set the X-Frame-Options header) + # -- If you use Scalar Manager, you need to set allow_embedding to true. + # -- https://grafana.com/docs/grafana/latest/administration/configuration/#allow_embedding + allow_embedding: false + + # -- Additional data source configurations + additionalDataSources: + - name: Prometheus + type: prometheus + uid: prometheus + url: http://scalar-monitoring-kube-pro-prometheus:9090/ + access: proxy + editable: false + isDefault: false + jsonData: + timeInterval: 30s + # - name: Loki + # type: loki + # uid: loki + # url: http://scalar-logging-loki:3100/ + # access: proxy + # editable: false + # isDefault: false + +kubeApiServer: + # -- Scraping kube-apiserver is disabled + enabled: false + +kubeControllerManager: + # -- Scraping kube-controller-manager is disabled + enabled: false + +coreDns: + # -- Scraping CoreDNS is disabled + enabled: false + +kubeEtcd: + # -- Scraping etcd is disabled + enabled: false + +kubeScheduler: + # -- Scraping kube-scheduler is disabled + enabled: false + +kubeProxy: + # -- Scraping kube-proxy is disabled + enabled: false + +kubelet: + # -- Scraping kubelet is disabled + enabled: false + +kubeStateMetrics: + # -- kube-state-metrics is disabled + enabled: false + +nodeExporter: + # -- node-exporter is disabled + enabled: false + +prometheusOperator: + # -- Prometheus Operator is enabled + enabled: true + + admissionWebhooks: + patch: + # -- Resource limits & requests + resources: {} + # requests: + # memory: 400Mi + + namespaces: + # -- Only check own namespace + releaseNamespace: true + + kubeletService: + # -- kubelet service for scraping kubelets is disabled + enabled: false + + ## -- Resource limits & requests + resources: {} + # requests: + # memory: 400Mi + +prometheus: + # -- Prometheus is enabled + enabled: true + + prometheusSpec: + # -- All PrometheusRules are enabled + ruleSelectorNilUsesHelmValues: false + + # -- Only check own namespace + ruleNamespaceSelector: {} + + # -- All ServiceMonitors are enabled + serviceMonitorSelectorNilUsesHelmValues: false + + # -- Only check own namespace + serviceMonitorNamespaceSelector: {} + + # -- All PodMonitors are enabled + podMonitorSelectorNilUsesHelmValues: false + + # -- Only check own namespace + podMonitorNamespaceSelector: {} + + # -- All Probes are enabled + probeSelectorNilUsesHelmValues: false + + # -- Only check own namespace + probeNamespaceSelector: {} + + ## -- Resource limits & requests + resources: {} + # requests: + # memory: 400Mi + + ## -- Prometheus StorageSpec for persistent data + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/user-guides/storage.md + storageSpec: {} + ## Using PersistentVolumeClaim + ## + # volumeClaimTemplate: + # spec: + # storageClassName: gluster + # accessModes: ["ReadWriteOnce"] + # resources: + # requests: + # storage: 50Gi + # selector: {} diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-envoy.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-envoy.mdx new file mode 100644 index 00000000..635a29f3 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-envoy.mdx @@ -0,0 +1,392 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# Scalar Envoy のカスタム値ファイルを構成する + +このドキュメントでは、Scalar Envoy チャートのカスタム値ファイルを作成する方法について説明します。 パラメータの詳細を知りたい場合は、Scalar Envoy チャートの [README](https://github.com/scalar-labs/helm-charts/blob/main/charts/envoy/README.md) を参照してください。 + +## Scalar Envoy チャートのカスタム値を構成する + +Scalar Envoy チャートは他のチャート (scalardb、scalardb-cluster、scalardl、scalardl-audit) 経由で使用されるため、Scalar Envoy チャートのカスタム値ファイルを作成する必要はありません。 Scalar Envoy を設定したい場合は、`envoy.*` 設定を他のチャートに追加する必要があります。 + +たとえば、ScalarDB Server 用に Scalar Envoy を構成する場合は、次のように ScalarDB のカスタム値ファイルでいくつかの Scalar Envoy 構成を構成できます。 + +* 例 (scalardb-custom-values.yaml) + ```yaml + envoy: + configurationsForScalarEnvoy: + ... + + scalardb: + configurationsForScalarDB: + ... + ``` + +## 必要な構成 + +### サービス構成 + +Kubernetes のサービス リソース タイプを指定するには、`envoy.service.type` を設定する必要があります。 + +Kubernetes クラスターの内部からのみクライアント リクエストを受け入れる場合 (たとえば、クライアント アプリケーションを Scalar 製品と同じ Kubernetes クラスターにデプロイする場合)、`envoy.service.type` を `ClusterIP` に設定できます。 この構成では、クラウド サービス プロバイダーが提供するロード バランサーは作成されません。 + +```yaml +envoy: + service: + type: ClusterIP +``` + +クラウド サービス プロバイダーが提供するロード バランサーを使用して、Kubernetes クラスターの外部からのクライアント リクエストを受け入れる場合は、`envoy.service.type` を `LoadBalancer` に設定する必要があります。 + +```yaml +envoy: + service: + type: LoadBalancer +``` + +アノテーションを介してロードバランサを設定したい場合は、アノテーションを `envoy.service.annotations` に設定することもできます。 + +```yaml +envoy: + service: + type: LoadBalancer + annotations: + service.beta.kubernetes.io/aws-load-balancer-internal: "true" + service.beta.kubernetes.io/aws-load-balancer-type: "nlb" +``` + +## オプションの構成 + +### リソース構成 (本番環境で推奨) + +Kubernetes のリクエストと制限を使用してポッド リソースを制御したい場合は、`envoy.resources` を使用できます。 + +これらは、Kubernetes のリクエストと制限と同じ構文を使用して構成できます。 そのため、Kubernetes の要求と制限の詳細については、公式ドキュメント [Resource Management for Pods and Containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) を参照してください。 + +```yaml +envoy: + resources: + requests: + cpu: 1000m + memory: 2Gi + limits: + cpu: 2000m + memory: 4Gi +``` + +### アフィニティ構成 (運用環境で推奨) + +Kubernetes のアフィニティと反アフィニティを使用してポッドのデプロイメントを制御したい場合は、`envoy.affinity` を使用できます。 + +Kubernetes のアフィニティと同じ構文を使用して構成できます。 そのため、Kubernetes のアフィニティ設定の詳細については、公式ドキュメント [Assigning Pods to Nodes](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) を参照してください。 + +```yaml +envoy: + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: app.kubernetes.io/name + operator: In + values: + - scalardb-cluster + - key: app.kubernetes.io/app + operator: In + values: + - envoy + topologyKey: kubernetes.io/hostname + weight: 50 +``` + +### Prometheus および Grafana 構成 (実稼働環境で推奨) + +[kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack) を使用して Scalar Envoy ポッドを監視する場合は、`envoy.grafanaDashboard.enabled`、`envoy.serviceMonitor` を使用して、kube-prometheus-stack の ConfigMap、ServiceMonitor、および PrometheusRule リソースをデプロイできます。 `envoy.prometheusRule.enabled` と `envoy.prometheusRule.enabled`。 + +```yaml +envoy: + grafanaDashboard: + enabled: true + namespace: monitoring + serviceMonitor: + enabled: true + namespace: monitoring + interval: 15s + prometheusRule: + enabled: true + namespace: monitoring +``` + +### SecurityContext 設定 (デフォルト値を推奨) + +Scalar Envoy ポッドに SecurityContext と PodSecurityContext を設定する場合は、`envoy.securityContext` と `envoy.podSecurityContext` を使用できます。 + +KubernetesのSecurityContextやPodSecurityContextと同じ構文を使用して設定できます。 したがって、Kubernetes の SecurityContext および PodSecurityContext 構成の詳細については、公式ドキュメント [Configure a Security Context for a Pod or Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) を参照してください。 + +```yaml +envoy: + podSecurityContext: + seccompProfile: + type: RuntimeDefault + securityContext: + capabilities: + drop: + - ALL + runAsNonRoot: true + allowPrivilegeEscalation: false +``` + +### 画像構成 (デフォルト値を推奨) + +イメージ リポジトリとバージョンを変更したい場合は、`envoy.image.repository` を使用して、プルする Scalar Envoy コンテナ イメージのコンテナ リポジトリ情報を指定できます。 + +```yaml +envoy: + image: + repository: +``` + +AWS または Azure を使用している場合、詳細については次のドキュメントを参照してください。 + +* [How to install Scalar products through AWS Marketplace](../scalar-kubernetes/AwsMarketplaceGuide.mdx) +* [How to install Scalar products through Azure Marketplace](../scalar-kubernetes/AzureMarketplaceGuide.mdx) + +### TLS 構成 (環境に応じてオプション) + +以下の通信で TLS を有効にできます。 + +- クライアントと Scalar Envoy 間のダウンストリーム接続。 +- Scalar Envoy と Scalar 製品間のアップストリーム接続。 + +さらに、次の 2 つの観点からいくつかのオプションがあります。 + +1. 秘密鍵と証明書ファイルの管理 + 1. [cert-manager](https://cert-manager.io/docs/) を使用して秘密鍵と証明書ファイルを自動的に管理します。 + - メンテナンスや運用のコストを削減できます。たとえば、cert-manager は証明書の有効期限が切れる前に自動的に更新し、Scalar Helm Chart は秘密鍵と証明書ファイルを Scalar 製品ポッドに自動的にマウントします。 + - cert-manager がサポートしていない CA は使用できません。サポートされている発行元は [cert-manager ドキュメント](https://cert-manager.io/docs/configuration/issuers/)で確認できます。 + 1. 秘密鍵と証明書ファイルを手動で管理します。 + - ご自身のお好みの方法で、秘密鍵と証明書ファイルを発行・管理することができます。 + - cert-manager がサポートしていない場合でも、任意の証明書を使用できます。 + - 証明書の有効期限が切れた場合は、シークレット リソースを更新する必要があります。 +1. 証明書の種類 + 1. 信頼できる CA (サードパーティによる署名付き証明書) を使用します。 + - サードパーティの証明書発行者からの信頼できる証明書を使用できます。 + - パケットを暗号化できます。 + - 信頼できる証明書を発行するには費用を支払う必要があります。 + 1. 自己署名証明書を使用します。 + - 証明書発行にかかるコストを削減できます。 + - 証明書の信頼性は信頼できる CA よりも低くなりますが、パケットを暗号化できます。 + +つまり、次の 4 つのオプションがあります。 + +1. 自動管理で自己署名 CA を使用します。 +1. 自動管理で信頼できる CA を使用します。 +1. 手動管理で自己署名 CA を使用します。 +1. 手動管理で信頼できる CA を使用します。 + +セキュリティ要件に基づいて、どの方法を使用するかを検討する必要があります。各方法のガイダンスと関連ドキュメントについては、次の意思決定ツリーを参照してください。 + +```mermaid +flowchart TD + A[cert-manager を使用して
秘密鍵と証明書ファイルを
自動的に管理しますか?] + A -->|はい、証明書を自動的に
管理したいです。| B + A -->|いいえ、証明書は自分で手動で
管理したいです。| C + B[自己署名 CA と
信頼された CA の
どちらを使用しますか?] + C[自己署名 CA と
信頼された CA の
どちらを使用しますか?] + B -->|自己署名 CA を
使用したいです。| D + B -->|信頼できる CA
を使用したいです。| E + C -->|自己署名 CA
を使用したいです。| F + C -->|信頼できる CA
を使用したいです。| G + D[cert-manager で自己署名 CA を使用して
秘密鍵と証明書ファイルを管理する

を参照してください。] + E[cert-manager で信頼できる CA を使用して
秘密鍵と証明書ファイルを管理する

を参照してください。] + F[秘密鍵と証明書ファイルを使用するを参照し、
生成した自己署名証明書を使用します。] + G[秘密鍵と証明書ファイルを使用するを参照し、
第三者によって生成された
信頼できる証明書を使用します。] +``` + +#### ダウンストリーム接続で TLS を有効にする + +次の設定により、ダウンストリーム接続で TLS を有効にできます。 + +```yaml +envoy: + tls: + downstream: + enabled: true +``` + +##### 秘密鍵と証明書ファイルを使用する + +次の構成を使用して、秘密鍵と証明書ファイルを設定できます。 + +```yaml +envoy: + tls: + downstream: + enabled: true + certChainSecret: "envoy-tls-cert" + privateKeySecret: "envoy-tls-key" +``` + +この場合、次のように山括弧内の内容を置き換えて、Scalar Envoy の秘密鍵と証明書ファイルを含むシークレットリソースを作成する必要があります。 + +```console +kubectl create secret generic envoy-tls-cert --from-file=tls.crt=/ -n +kubectl create secret generic envoy-tls-key --from-file=tls.key=/ -n +``` + +秘密鍵と証明書ファイルの準備方法の詳細については、[Scalar 製品の秘密鍵と証明書ファイルの作成方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx) を参照してください。 + + +##### cert-manager で信頼できる CA を使用して秘密鍵と証明書ファイルを管理する + +次の構成を使用して、山括弧内の内容を説明に従って置き換えることで、cert-manager で秘密鍵と証明書ファイルを管理できます。 + +:::note + +* cert-manager を使用する場合は、cert-manager をデプロイし、`Issuers` リソースを準備する必要があります。詳細については、cert-manager のドキュメント、[インストール](https://cert-manager.io/docs/installation/) および [発行者構成](https://cert-manager.io/docs/configuration/) を参照してください。 +* デフォルトでは、Scalar Helm Chart は Scalar 製品の証明書要件を満たす `Certificate` リソースを作成します。デフォルトの証明書構成が推奨されますが、カスタム証明書構成を使用する場合は、Scalar 製品の証明書要件を満たす必要があります。詳細については、[Scalar 製品の秘密キーと証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx#certificate-requirements) を参照してください。 + +::: + +```yaml +envoy: + tls: + downstream: + enabled: true + certManager: + enabled: true + issuerRef: + name: + dnsNames: + - envoy.scalar.example.com +``` + +この場合、cert-manager は信頼できる発行者を使用して秘密鍵と証明書ファイルを発行します。cert-manager を使用すると、秘密鍵と証明書ファイルを手動でマウントする必要がなくなります。 + +##### cert-manager で自己署名 CA を使用して秘密鍵と証明書ファイルを管理する + +次の構成を使用して、cert-manager で秘密キーと自己署名証明書ファイルを管理できます。 + +:::note + +* cert-manager を使用する場合は、cert-manager をデプロイする必要があります。詳細については、cert-manager のドキュメント [インストール](https://cert-manager.io/docs/installation/) を参照してください。 +* デフォルトでは、Scalar Helm Chart は Scalar 製品の証明書要件を満たす `Certificate` リソースを作成します。デフォルトの証明書構成が推奨されますが、カスタム証明書構成を使用する場合は、Scalar 製品の証明書要件を満たす必要があります。詳細については、[Scalar 製品の秘密キーと証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx#certificate-requirements) を参照してください。 + +::: + +```yaml +envoy: + tls: + downstream: + enabled: true + certManager: + enabled: true + selfSigned: + enabled: true + dnsNames: + - envoy.scalar.example.com +``` + +この場合、Scalar Helm Charts と cert-manager が秘密鍵と自己署名証明書ファイルを発行します。秘密鍵と証明書ファイルを手動でマウントする必要はありません。 + +#### アップストリーム接続で TLS を有効にする + +次の設定により、アップストリーム接続で TLS を有効にできます。 + +```yaml +envoy: + tls: + upstream: + enabled: true +``` + +また、アップストリーム Scalar 製品のルート CA 証明書ファイルを設定する必要があります。どのアプローチを取るべきかを判断するには、次の意思決定ツリーを参照してください。 + +```mermaid +flowchart TD + A[cert-manager を利用しますか?] + A -->|はい| B + A -->|いいえ| D + B[cert-manager で自己証明書を利用しますか?] + B -->|いいえ| C[cert-manager を使用して Envoy とアップストリームの Scalar 製品に同じ 信頼できる CAを利用しますか?] + C -->|いいえ| D[手動で アップストリームのScalar製品のルートCA証明書を設定する必要があります。] + C ---->|Yes| E[Scalar Helm Chart はルート CA 証明書を自動的に設定します。`envoy.tls.upstream.caRootCertSecret` を明示的に設定する必要はありません。] + B ---->|Yes| E +``` + +##### アップストリーム Scalar 製品のルート CA 証明書ファイルを設定する + +次の構成を使用して、ルート CA 証明書ファイルを設定できます。 + +```yaml +envoy: + tls: + upstream: + enabled: true + caRootCertSecret: "envoy-upstream-scalardb-cluster-root-ca" +``` + +この場合、次のように CA 証明書ファイルを含むシークレット リソースを作成する必要があります。使用するアップストリーム (ScalarDB Cluster、ScalarDL Ledger、または ScalarDL Auditor) に基づいてルート CA 証明書ファイルを設定する必要があります。説明されているように、山括弧内の内容を必ず置き換えてください。 + + + + ```console + kubectl create secret generic envoy-upstream-scalardb-cluster-root-ca --from-file=ca.crt=/ -n + ``` + + + ```console + kubectl create secret generic envoy-upstream-scalardl-ledger-root-ca --from-file=ca.crt=/ -n + ``` + + + ```console + kubectl create secret generic envoy-upstream-scalardl-auditor-root-ca --from-file=ca.crt=/ -n + ``` + + + +秘密鍵と証明書ファイルを準備する方法の詳細については、[Scalar 製品のキーと証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx) を参照してください。 + +##### TLS通信のカスタム権限を設定する + +`envoy.tls.upstream.overrideAuthority` を使用して、TLS 通信のカスタム権限を設定できます。この値によって、実際に接続されているホストが変わることはありません。この値はテスト用ですが、DNS オーバーライドの代替としてテスト以外でも安全に使用できます。たとえば、使用している製品に応じて、`scalardbCluster.tls.certChainSecret`、`ledger.tls.certChainSecret`、または `auditor.tls.certChainSecret` を使用して設定した証明書チェーン ファイルに示されているホスト名を指定できます。Envoy はこの値を使用して、ScalarDB Cluster または ScalarDL との TLS 接続の証明書を検証します。 + +```yaml +envoy: + tls: + upstream: + enabled: true + overrideAuthority: "cluster.scalardb.example.com" +``` + +### レプリカ構成 (環境に応じてオプション) + +Scalar Envoy のレプリカ (ポッド) の数は、`envoy.replicaCount` を使用して指定できます。 + +```yaml +envoy: + replicaCount: 3 +``` + +### 汚染と許容の構成 (環境に応じてオプション) + +Kubernetes のテイントと許容を使用してポッドのデプロイメントを制御したい場合は、`envoy.tolerations` を使用できます。 + +Kubernetes の許容と同じ構文を使用して、テイントと許容を構成できます。 Kubernetes での許容設定の詳細については、Kubernetes の公式ドキュメント [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) を参照してください。 + +```yaml +envoy: + tolerations: + - effect: NoSchedule + key: scalar-labs.com/dedicated-node + operator: Equal + value: scalardb +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-file.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-file.mdx new file mode 100644 index 00000000..459392dc --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-file.mdx @@ -0,0 +1,24 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +--- + +# Scalar Helm Charts のカスタム値ファイルを構成する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +Scalar Helm Chart を使用して Scalar 製品をデプロイする場合は、環境に基づいてカスタム値ファイルを準備する必要があります。 各製品のカスタム値ファイルの作成方法の詳細については、次のドキュメントを参照してください。 + +* [ScalarDB Cluster](configure-custom-values-scalardb-cluster.mdx) +* [ScalarDB Analytics with PostgreSQL](configure-custom-values-scalardb-analytics-postgresql.mdx) +* [ScalarDL Ledger](configure-custom-values-scalardl-ledger.mdx) +* [ScalarDL Auditor](configure-custom-values-scalardl-auditor.mdx) +* [ScalarDL Schema Loader](configure-custom-values-scalardl-schema-loader.mdx) +* [Scalar Admin for Kubernetes](configure-custom-values-scalar-admin-for-kubernetes.mdx) +* [Scalar Manager](configure-custom-values-scalar-manager.mdx) +* [Envoy](configure-custom-values-envoy.mdx) +* [[Deprecated] ScalarDB Server](configure-custom-values-scalardb.mdx) +* [[Deprecated] ScalarDB GraphQL](configure-custom-values-scalardb-graphql.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalar-admin-for-kubernetes.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalar-admin-for-kubernetes.mdx new file mode 100644 index 00000000..0327f4e1 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalar-admin-for-kubernetes.mdx @@ -0,0 +1,139 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +--- + +# Scalar Admin for Kubernetes のカスタム値ファイルを構成する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Scalar Admin for Kubernetes チャートのカスタム値ファイルを作成する方法について説明します。 パラメーターの詳細については、Scalar Admin for Kubernetes チャートの [README](https://github.com/scalar-labs/helm-charts/blob/main/charts/scalar-admin-for-kubernetes/README.md) を参照してください。 + +## 必要な構成 + +このセクションでは、Scalar Admin for Kubernetes のカスタム値ファイルをセットアップするときに必要な構成について説明します。 + +### フラグ設定 + +Scalar Admin for Kubernetes を実行するには、配列として `scalarAdminForKubernetes.commandArgs` にいくつかのフラグを指定する必要があります。 フラグの詳細については、Scalar Admin for Kubernetes の [README](https://github.com/scalar-labs/scalar-admin-for-kubernetes/blob/main/README.md) を参照してください。 + +```yaml +scalarAdminForKubernetes: + commandArgs: + - -r + - + - -n + - + - -d + - + - -z + - +``` + +## オプションの構成 + +このセクションでは、Scalar Admin for Kubernetes のカスタム値ファイルをセットアップするときのオプションの構成について説明します。 + +### CronJob 構成 (環境に応じてオプション) + +デフォルトでは、Scalar Admin for Kubernetes チャートは、Scalar Admin for Kubernetes CLI ツールを 1 回実行するための [Job](https://kubernetes.io/docs/concepts/workloads/controllers/job/) リソースを作成します。 [CronJob](https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/) を使用して Scalar Admin for Kubernetes CLI ツールを定期的に実行する場合は、`scalarAdminForKubernetes.jobType` を `cronjob` に設定できます。 また、CronJob リソースのいくつかの構成を設定することもできます。 + +```yaml +scalarAdminForKubernetes: + cronJob: + timeZone: "Etc/UTC" + schedule: "0 0 * * *" +``` + +### リソース構成 (実稼働環境で推奨) + +Kubernetes でリクエストと制限を使用してポッド リソースを制御するには、`scalarAdminForKubernetes.resources` を使用できます。 + +Kubernetes のリクエストと制限と同じ構文を使用して、リクエストと制限を構成できます。 Kubernetes のリクエストと制限の詳細については、[Resource Management for Pods and Containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) を参照してください。 + +```yaml +scalarAdminForKubernetes: + resources: + requests: + cpu: 1000m + memory: 2Gi + limits: + cpu: 2000m + memory: 4Gi +``` + +### SecurityContext 設定 (デフォルト値を推奨) + +Scalar Admin for Kubernetes ポッドの SecurityContext と PodSecurityContext を設定するには、`scalarAdminForKubernetes.securityContext` と `scalarAdminForKubernetes.podSecurityContext` を使用できます。 + +Kubernetes の SecurityContext および PodSecurityContext と同じ構文を使用して、SecurityContext および PodSecurityContext を構成できます。 Kubernetes の SecurityContext および PodSecurityContext 構成の詳細については、[Configure a Security Context for a Pod or Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) を参照してください。 + +```yaml +scalarAdminForKubernetes: + podSecurityContext: + seccompProfile: + type: RuntimeDefault + securityContext: + capabilities: + drop: + - ALL + runAsNonRoot: true + allowPrivilegeEscalation: false +``` + +### 画像構成 (デフォルト値を推奨) + +イメージ リポジトリを変更する場合は、`scalarAdminForKubernetes.image.repository` を使用して、プルする Scalar Admin for Kubernetes イメージのコンテナ リポジトリ情報を指定できます。 + +```yaml +scalarAdminForKubernetes: + image: + repository: +``` + +### 汚染と許容の構成 (環境に応じてオプション) + +Kubernetes のテイントと許容を使用してポッドのデプロイメントを制御したい場合は、`scalarAdminForKubernetes.tolerations` を使用できます。 + +Kubernetes の許容と同じ構文を使用して、テイントと許容を構成できます。 Kubernetes での許容設定の詳細については、Kubernetes の公式ドキュメント [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) を参照してください。 + +```yaml +scalarAdminForKubernetes: + tolerations: + - effect: NoSchedule + key: scalar-labs.com/dedicated-node + operator: Equal + value: scalardb-analytics-postgresql +``` + +### TLS 構成 (環境に応じてオプション) + +次のような設定を実施することで、Scalar Admin for Kubernetes と一時停止ターゲット (ScalarDB Cluster または ScalarDL) の間での TLS 通信を有効にすることができます。 + +```yaml +scalarAdminForKubernetes: + commandArgs: + - (omit other options) + - --tls + - --ca-root-cert-path + - /tls/certs/ca.crt + - --override-authority + - cluster.scalardb.example.com +``` + +シークレットリソースを使用して、`/tls/certs/ca.crt` ファイルをポッドにマウントできます。 `scalarAdminForKubernetes.tls.caRootCertSecret` にルート CA 証明書ファイルを含むシークレットリソースの名前を指定してください。 + +```yaml +scalarAdminForKubernetes: + tls: + caRootCertSecret: "scalar-admin-tls-ca" +``` + +この場合、次のように、一時停止ターゲット (ScalarDB Cluster または ScalarDL) のルート CA 証明書ファイルを含むシークレットリソースを作成する必要があります。 + +```console +kubectl create secret generic scalar-admin-tls-ca --from-file=ca.crt=/path/to/your/ca/certificate/file -n +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalar-manager.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalar-manager.mdx new file mode 100644 index 00000000..02db429c --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalar-manager.mdx @@ -0,0 +1,126 @@ +--- +tags: + - Enterprise Option +--- + +# Scalar Manager のカスタム値ファイルを構成する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Scalar Manager チャートのカスタム値ファイルを作成する方法について説明します。 パラメータの詳細を知りたい場合は、Scalar Manager チャートの [README](https://github.com/scalar-labs/helm-charts/blob/main/charts/scalar-manager/README.md) を参照してください。 + +## 必要な構成 + +### サービス構成 + +Kubernetes のサービスリソースタイプを指定するには、`service.type` を設定する必要があります。 プロバイダーが提供するロードバランサーを使用する場合は、`service.type`を`LoadBalancer`に設定する必要があります。 + +```yaml +service: + type: LoadBalancer +``` + +#### Scalar Managerの公開に関するセキュリティ上の懸念 + +`service.type`を`LoadBalancer`に設定すると、Scalar Managerがクラスター外に公開されるため、セキュリティ上の懸念が生じる可能性があります。 + +現在、Scalar Managerには認証やアクセス制御のメカニズムがありません。 +このため、適切なセキュリティ対策なしにScalar Managerを直接パブリックネットワークに公開すると、不正なアクションにつながる可能性があります。 +これは、Scalar Managerが Scalar製品の一時停止ジョブのスケジューリングなどの機能を提供しているためです。 + +外部アクセスが必要な場合は、プライベートネットワークを使用するか、Kubernetesクラスターへのネットワークアクセスを適切に設定することをお勧めします。 + +### 画像構成 + +Scalar Manager のイメージをプルできるように、`api.image.repository` と `web.image.repository` を設定する必要があります。 + +```yaml +api: + image: + repository: +web: + image: + repository: +``` + +## オプション設定 +このセクションでは、Scalar Manager用のカスタム値ファイルを設定する際のオプション設定について説明します。 + +### Scalar Manager設定(環境に応じてオプション) +`api.applicationProperties`カスタム値を上書きして、Scalar Managerのデフォルト設定を変更できます。 + +```yaml +api: + applicationProperties: | + grafana.kubernetesServiceLabelName="app.kubernetes.io/name" + grafana.kubernetesServiceLabelValue="grafana" + grafana.kubernetesServicePortName="http-web" +``` + +Scalar Managerには、例えばScalar製品のデプロイメントやクラスター内のPrometheusおよびLokiサービスを検出するためのデフォルト設定があります。 +ほとんどのユースケースでは、特にkube-prometheus-stackのデプロイガイドやloki-stackのデプロイガイドに従っている場合、デフォルト設定を変更する必要はありません。 + +#### api.applicationPropertiesで設定できるプロパティ + +Scalar Managerの設定は、Javaアプリケーションプロパティの形式で、key=valueのペアです。 +これらのアプリケーションプロパティは、Scalar Manager Helm Chartのapi.applicationPropertiesカスタム値を使用して設定できます。 + +|名前|説明|デフォルト値| +|---|---|---| +|`grafana.kubernetesServiceLabelName`|KubernetesでGrafanaサービスを検出するために使用されるラベル名|`app.kubernetes.io/name`| +|`grafana.kubernetesServiceLabelValue`|`grafana.kubernetesServiceLabelName`に対応するラベル値|`grafana`| +|`grafana.kubernetesServicePortName`|KubernetesでGrafanaサービスポートを検出するために使用されるポート名|`http-web`| +|`prometheus.kubernetesServiceLabelName`|KubernetesでPrometheusサービスを検出するために使用されるラベル名|`app`| +|`prometheus.kubernetesServiceLabelValue`|`prometheus.kubernetesServiceLabelName`に対応するラベル値|`kube-prometheus-stack-prometheus`| +|`prometheus.kubernetesServicePortName`|KubernetesでPrometheusサービスポートを検出するために使用されるポート名|`http-web`| +|`loki.kubernetesServiceLabelName`|KubernetesでPrometheusサービスを検出するために使用されるラベル名|`app`| +|`loki.kubernetesServiceLabelValue`|`loki.kubernetesServiceLabelName`に対応するラベル値|`loki`| +|`loki.kubernetesServicePortName`|KubernetesでLokiサービスポートを検出するために使用されるポート名|`http-metrics`| +|`helm.scalarRepositoryName`|Scalar Helmリポジトリを表すために使用される名前|`scalar-labs`| +|`helm.scalarRepositoryUrl`|Scalar HelmリポジトリのURL|`https://scalar-labs.github.io/helm-charts`| +|`helm.scalarAdminForKubernetesChartName`|Scalar HelmリポジトリにおけるKubernetes用Scalar Adminの Helm Chart名|`scalar-admin-for-kubernetes`| +|`helm.scalarAdminForKubernetesChartVersion`|Kubernetes用Scalar Admin Helm Chartのバージョン|`1.0.0`| +|`configMapNamespace`|Scalar Managerが使用するConfigMapがデプロイされる名前空間|`default`| +|`configMapName`|Scalar Managerが使用するConfigMapの名前|`scalar-manager-metadata`| +|`paused-state-retention.storage`|一時停止状態を保持するために使用されるストレージタイプ|`configmap`| +|`paused-state-retention.max-number`|Scalar Managerが保持する一時停止状態の最大数|`100`| + +#### サービスディスカバリー + +Scalar Managerはラベルセレクターを使用して、Kubernetes内のGrafana、Prometheus、Lokiサービスを検出し、ポート名を使用してそれらに接続します。`*.kubernetesServiceLabelName`、`*.kubernetesServiceLabelValue`、`*.kubernetesServicePortName`の設定を変更することで、ラベルセレクターとポート名を修正できます。 + +一般的に、これらの設定を変更する必要はありません。ただし、Grafana、Prometheus、またはLokiサービスのHelm Chartをインストールする際にラベルやポート名をカスタマイズした場合は、これらの設定をカスタマイズに合わせて調整する必要があります。 + +##### Kubernetes用Scalar Adminの使用 + +Scalar Managerは、[Kubernetes用Scalar Admin](https://github.com/scalar-labs/scalar-admin-for-kubernetes) Helm Chartをインストールして、Scalar製品の一時停止ジョブのスケジューリングや実行を行います。以下の設定を使用して、Scalar Helmリポジトリをセットアップし、Helm Chartを配置します: + +- `helm.scalarRepositoryName` +- `helm.scalarRepositoryUrl` +- `helm.scalarAdminForKubernetesChartName` +- `helm.scalarAdminForKubernetesChartVersion` + +:::note +特別な理由がない限り、これらの設定を変更することはお勧めしません。 +::: + +##### Scalar Managerが使用するConfigMap + +Scalar Managerは、デフォルトのアプリケーションプロパティなどのメタデータを保存するためにConfigMapを使用します。ConfigMapは以下の設定で指定された名前空間にデプロイされます: + +- `configMapNamespace` +- `configMapName` + +:::note +競合するConfigMapを使用している場合など、特別な理由がない限り、これらの設定を変更することはお勧めしません。 +::: + +##### 一時停止状態の保持 + +Scalar Managerは、Scalar製品の一時停止状態をストレージに保持します。現在、Scalar ManagerはストレージとしてConfigMapのみを使用できるため、`paused-state-retention.storage`設定は`configmap`に設定する必要があります。`paused-state-retention.max-number`設定を設定することで、Scalar Managerが保持する一時停止状態の最大数を調整できます。 + +:::warning +ストレージにConfigMapを使用する場合、ConfigMapのサイズ制限があるため、`paused-state-retention.max-number`に大きな値を設定することはお勧めしません。ConfigMapに保存されるデータは1 MiBを超えることができないため、Scalar Managerが保持できる一時停止状態の最大数は約3,000です。 +::: diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardb-analytics-postgresql.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardb-analytics-postgresql.mdx new file mode 100644 index 00000000..d0273aab --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardb-analytics-postgresql.mdx @@ -0,0 +1,192 @@ +--- +tags: + - Community +--- + +# ScalarDB Analytics with PostgreSQL のカスタム値ファイルを構成する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、PostgreSQL チャートを使用した ScalarDB Analytics のカスタム値ファイルを作成する方法について説明します。 パラメーターの詳細については、ScalarDB Analytics with PostgreSQL チャートの [README](https://github.com/scalar-labs/helm-charts/blob/main/charts/scalardb-analytics-postgresql/README.md) を参照してください。 + +## 必要な構成 + +このセクションでは、PostgreSQL で ScalarDB Analytics のカスタム値ファイルを設定するときに必要な構成について説明します。 + +### データベース構成 + +PostgreSQL を使用した ScalarDB Analytics 経由でデータベースにアクセスするには、`database.properties` ファイルの構成に使用するのと同じ構文に従って、`scalardbAnalyticsPostgreSQL.databaseProperties` パラメータを設定する必要があります。 設定の詳細については、[ScalarDB Configurations](https://scalardb.scalar-labs.com/docs/latest/configurations/) を参照してください。 + +```yaml +scalardbAnalyticsPostgreSQL: + databaseProperties: | + scalar.db.contact_points=localhost + scalar.db.username=${env:SCALAR_DB_USERNAME:-} + scalar.db.password=${env:SCALAR_DB_PASSWORD:-} + scalar.db.storage=cassandra +``` + +### データベース名前空間の構成 + +PostgreSQL を使用した ScalarDB Analytics 経由で読み取りたいテーブルを含むすべてのデータベース名前空間に `schemaImporter.namespaces` を設定する必要があります。 + +```yaml +schemaImporter: + namespaces: + - namespace1 + - namespace2 + - namespace3 +``` + +## オプションの構成 + +このセクションでは、PostgreSQL で ScalarDB Analytics のカスタム値ファイルを設定する場合のオプションの構成について説明します。 + +### リソース構成 (実稼働環境で推奨) + +Kubernetes でリクエストと制限を使用してポッド リソースを制御するには、`scalardbAnalyticsPostgreSQL.resources` を使用できます。 + +Kubernetes のリクエストと制限と同じ構文を使用して、リクエストと制限を構成できます。 Kubernetes のリクエストと制限の詳細については、[Resource Management for Pods and Containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/)を参照してください。 + +```yaml +scalardbAnalyticsPostgreSQL: + resources: + requests: + cpu: 1000m + memory: 2Gi + limits: + cpu: 2000m + memory: 4Gi +``` + +### シークレット構成 (運用環境で推奨) + +環境変数を使用して `scalardbAnalyticsPostgreSQL.databaseProperties` で資格情報などのいくつかのプロパティを設定するには、`scalardbAnalyticsPostgreSQL.secretName` を使用していくつかの資格情報を含むシークレット リソースを指定します。 + +たとえば、環境変数を使用してバックエンド データベースの資格情報 (`scalar.db.username` および `scalar.db.password`) を設定できるため、ポッドの安全性が高まります。 + +シークレットリソースの使用方法の詳細については、[シークレットリソースを使用して資格情報を環境変数としてプロパティファイルに渡す方法(./use-secret-for-credentials.mdx) を参照してください。 + +```yaml +scalardbAnalyticsPostgreSQL: + secretName: "scalardb-analytics-postgresql-credentials-secret" +``` + +### アフィニティ構成 (運用環境で推奨) + +Kubernetes でアフィニティとアンチアフィニティを使用してポッドのデプロイメントを制御するには、`scalardbAnalyticsPostgreSQL.affinity` を使用できます。 + +Kubernetes のアフィニティとアンチアフィニティと同じ構文を使用して、アフィニティとアンチアフィニティを構成できます。 Kubernetes でのアフィニティの構成の詳細については、[Assigning Pods to Nodes](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) を参照してください。 + +```yaml +scalardbAnalyticsPostgreSQL: + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: app.kubernetes.io/name + operator: In + values: + - scalardb-analytics-postgresql + - key: app.kubernetes.io/app + operator: In + values: + - scalardb-analytics-postgresql + topologyKey: kubernetes.io/hostname +``` + +### SecurityContext 設定 (デフォルト値を推奨) + +PostgreSQL ポッドを使用して ScalarDB Analytics の SecurityContext と PodSecurityContext を設定するには、`scalardbAnalyticsPostgreSQL.securityContext`、`scalardbAnalyticsPostgreSQL.podSecurityContext`、および `schemaImporter.securityContext` を使用できます。 + +Kubernetes の SecurityContext および PodSecurityContext と同じ構文を使用して、SecurityContext および PodSecurityContext を構成できます。 Kubernetes の SecurityContext および PodSecurityContext 構成の詳細については、[Configure a Security Context for a Pod or Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) を参照してください。 + +```yaml +scalardbAnalyticsPostgreSQL: + podSecurityContext: + fsGroup: 201 + seccompProfile: + type: RuntimeDefault + securityContext: + capabilities: + drop: + - ALL + runAsNonRoot: true + runAsUser: 999 + allowPrivilegeEscalation: false + +schemaImporter: + securityContext: + capabilities: + drop: + - ALL + runAsNonRoot: true + allowPrivilegeEscalation: false +``` + +### 画像構成 (デフォルト値を推奨) + +イメージ リポジトリを変更する場合は、`scalardbAnalyticsPostgreSQL.image.repository` と `schemaImporter.image.repository` を使用して、プルする ScalarDB Analytics with PostgreSQL および Schema Importer イメージのコンテナ リポジトリ情報を指定できます。 + +```yaml +scalardbAnalyticsPostgreSQL: + image: + repository: + +schemaImporter: + image: + repository: +``` + +### レプリカ構成 (環境に応じてオプション) + +`scalardbAnalyticsPostgreSQL.replicaCount` を使用して、PostgreSQL レプリカ (ポッド) を使用した ScalarDB Analytics の数を指定できます。 + +```yaml +scalardbAnalyticsPostgreSQL: + replicaCount: 3 +``` + +### PostgreSQL database name configuration (optional based on your environment) + +You can specify the database name that you create in PostgreSQL. Schema Importer creates some objects, such as a view of ScalarDB Analytics with PostgreSQL, in this database. + +```yaml +scalardbAnalyticsPostgreSQL: + postgresql: + databaseName: scalardb +``` + +### PostgreSQL スーパーユーザーのパスワード設定 (環境に応じてオプション) + +PostgreSQL のスーパーユーザーのパスワードを含むシークレット名を指定できます。 + +```yaml +scalardbAnalyticsPostgreSQL: + postgresql: + secretName: scalardb-analytics-postgresql-superuser-password +``` + +:::note + +PostgreSQL で ScalarDB Analytics をデプロイする前に、この名前 (デフォルトでは `scalardb-analytics-postgresql-superuser-password`) でシークレット リソースを作成する必要があります。 詳細については、[シークレットリソースを準備する](how-to-deploy-scalardb-analytics-postgresql.mdx#シークレットリソースを準備する) を参照してください。 + +::: + +### 汚染と許容の構成 (環境に応じてオプション) + +Kubernetes でテイントと許容を使用してポッドのデプロイメントを制御したい場合は、`scalardbAnalyticsPostgreSQL.tolerations` を使用できます。 + +Kubernetes の許容と同じ構文を使用して、テイントと許容を構成できます。 Kubernetes での許容設定の詳細については、Kubernetes の公式ドキュメント [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) を参照してください。 + +```yaml +scalardbAnalyticsPostgreSQL: + tolerations: + - effect: NoSchedule + key: scalar-labs.com/dedicated-node + operator: Equal + value: scalardb-analytics-postgresql +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardb-cluster.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardb-cluster.mdx new file mode 100644 index 00000000..c8fafa8b --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardb-cluster.mdx @@ -0,0 +1,400 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +--- + +# ScalarDB Cluster のカスタム値ファイルを構成する + +このドキュメントでは、ScalarDB Cluster チャートのカスタム値ファイルを作成する方法について説明します。 パラメータの詳細については、ScalarDB Cluster チャートの [README](https://github.com/scalar-labs/helm-charts/blob/main/charts/scalardb-cluster/README.md) を参照してください。 + +## 必要な構成 + +### 画像構成 + +`scalardbCluster.image.repository`を設定する必要があります。 コンテナー リポジトリからイメージをプルできるように、必ず ScalarDB Cluster コンテナー イメージを指定してください。 + +```yaml +scalardbCluster: + image: + repository: +``` + +### データベース構成 + +`scalardbCluster.scalardbClusterNodeProperties` を設定する必要があります。 このパラメータには `scalardb-cluster-node.properties` を設定してください。 ScalarDB Cluster の構成の詳細については、[ScalarDB Cluster Configurations](https://scalardb.scalar-labs.com/docs/latest/scalardb-cluster/scalardb-cluster-configurations/) を参照してください。 + +```yaml +scalardbCluster: + scalardbClusterNodeProperties: | + 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} + scalar.db.contact_points=localhost + scalar.db.username=${env:SCALAR_DB_USERNAME} + scalar.db.password=${env:SCALAR_DB_PASSWORD} + scalar.db.storage=cassandra +``` + +Scalar Helm Chart を使用して Kubernetes 環境に ScalarDB Cluster をデプロイする場合は、次の 3 つのプロパティを常に設定する必要があることに注意してください。 これらのプロパティは固定値です。 プロパティは個別の環境に依存しないため、以下の値をコピーして `scalardbCluster.scalardbClusterNodeProperties` に貼り付けることで同じ値を設定できます。 + +```yaml +scalardbCluster: + scalardbClusterNodeProperties: | + 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} +``` + +## オプションの構成 + +### リソース構成 (実稼働環境で推奨) + +Kubernetes でリクエストと制限を使用してポッド リソースを制御するには、`scalardbCluster.resources` を使用できます。 + +商用ライセンスの場合、Scalar 製品の各ポッドのリソースは 2vCPU / 4GB メモリに制限されることに注意してください。 また、AWS Marketplace が提供する従量課金制のコンテナを使用する場合、`resources.limits` の 2vCPU / 4GB メモリ構成を超えるコンテナを実行することはできません。 このリソース制限を超えると、ポッドは自動的に停止します。 + +Kubernetes のリクエストと制限と同じ構文を使用して、リクエストと制限を構成できます。 Kubernetes のリクエストと制限の詳細については、[Resource Management for Pods and Containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) を参照してください。 + +```yaml +scalardbCluster: + resources: + requests: + cpu: 2000m + memory: 4Gi + limits: + cpu: 2000m + memory: 4Gi +``` + +### シークレット構成 (運用環境で推奨) + +環境変数を使用して `scalardbCluster.scalardbClusterNodeProperties` 内の一部のプロパティ (資格情報など) を設定するには、`scalardbCluster.secretName` を使用して、いくつかの資格情報を含む Secret リソースを指定します。 + +たとえば、環境変数を使用してバックエンド データベースの資格情報 (`scalar.db.username` および `scalar.db.password`) を設定できるため、ポッドの安全性が高まります。 + +Secret リソースの使用方法の詳細については、[Secret リソースを使用して資格情報を環境変数としてプロパティ ファイルに渡す方法](use-secret-for-credentials.mdx) を参照してください。 + +```yaml +scalardbCluster: + secretName: "scalardb-cluster-credentials-secret" +``` + +### アフィニティ構成 (運用環境で推奨) + +Kubernetes でアフィニティとアンチアフィニティを使用してポッドのデプロイメントを制御するには、`scalardbCluster.affinity` を使用できます。 + +Kubernetes のアフィニティとアンチアフィニティと同じ構文を使用して、アフィニティとアンチアフィニティを構成できます。 Kubernetes でのアフィニティの構成の詳細については、[Assigning Pods to Nodes](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) を参照してください。 + +```yaml +scalardbCluster: + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: app.kubernetes.io/name + operator: In + values: + - scalardb-cluster + - key: app.kubernetes.io/app + operator: In + values: + - scalardb-cluster + topologyKey: kubernetes.io/hostname + weight: 50 +``` + +### Prometheus および Grafana 構成 (実稼働環境で推奨) + +[kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack) を使用して ScalarDB Cluster ポッドを監視するには、`scalardbCluster.grafanaDashboard.enabled`、`scalardbCluster.serviceMonitor.enabled`、`scalardbCluster.prometheusRule.enabled` を `true` に設定します。 これらの構成を `true` に設定すると、チャートは必要なリソースをデプロイし、kube-prometheus-stack が自動的に監視を開始します。 + +```yaml +scalardbCluster: + grafanaDashboard: + enabled: true + namespace: monitoring + serviceMonitor: + enabled: true + namespace: monitoring + interval: 15s + prometheusRule: + enabled: true + namespace: monitoring +``` + +### SecurityContext 設定 (デフォルト値を推奨) + +ScalarDB Cluster ポッドの SecurityContext と PodSecurityContext を設定するには、`scalardbCluster.securityContext` と `scalardbCluster.podSecurityContext` を使用できます。 + +Kubernetes の SecurityContext および PodSecurityContext と同じ構文を使用して、SecurityContext および PodSecurityContext を構成できます。 Kubernetes の SecurityContext および PodSecurityContext 構成の詳細については、[Configure a Security Context for a Pod or Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) を参照してください。 + +```yaml +scalardbCluster: + podSecurityContext: + seccompProfile: + type: RuntimeDefault + securityContext: + capabilities: + drop: + - ALL + runAsNonRoot: true + allowPrivilegeEscalation: false +``` + +### TLS 構成 (環境に応じてオプション) + +TLS は、次の通信で有効にできます: + +- ScalarDB Cluster ノードとクライアント間の通信。 +- すべての ScalarDB Cluster ノード間の通信 (クラスターの内部通信)。 + +さらに、証明書管理にはいくつかのオプションがあります。詳細については、[Envoy の TLS 構成](./configure-custom-values-envoy.mdx#tls-構成-環境に応じてオプション) を参照してください。 + +セキュリティ要件に基づいて、どの方法を使用するかを検討する必要があります。各方法のガイダンスと関連ドキュメントについては、次の意思決定ツリーを参照してください。 + +```mermaid +flowchart TD + A[cert-manager を使用して
秘密鍵と証明書ファイルを
自動的に管理しますか?] + A -->|はい、証明書を自動的に
管理したいです。| B + A -->|いいえ、証明書は自分で手動で
管理したいです。| C + B[自己署名 CA と
信頼された CA の
どちらを使用しますか?] + C[自己署名 CA と
信頼された CA の
どちらを使用しますか?] + B -->|自己署名 CA を
使用したいです。| D + B -->|信頼できる CA
を使用したいです。| E + C -->|自己署名 CA
を使用したいです。| F + C -->|信頼できる CA
を使用したいです。| G + D[cert-manager で自己署名 CA を使用して
秘密鍵と証明書ファイルを管理する

を参照してください。] + E[cert-manager で信頼できる CA を使用して
秘密鍵と証明書ファイルを管理する

を参照してください。] + F[秘密鍵と証明書ファイルを使用するを参照し、
生成した自己署名証明書を使用します。] + G[秘密鍵と証明書ファイルを使用するを参照し、
第三者によって生成された
信頼できる証明書を使用します。] +``` + +#### TLS を有効にする + +次の構成を使用して、すべての ScalarDB Cluster 接続で TLS を有効にできます。 + +```yaml +scalardbCluster: + scalardbClusterNodeProperties: | + ...(omit)... + scalar.db.cluster.tls.enabled=true + scalar.db.cluster.tls.ca_root_cert_path=/tls/scalardb-cluster/certs/ca.crt + scalar.db.cluster.node.tls.cert_chain_path=/tls/scalardb-cluster/certs/tls.crt + scalar.db.cluster.node.tls.private_key_path=/tls/scalardb-cluster/certs/tls.key + scalar.db.cluster.tls.override_authority= + tls: + enabled: true +``` +##### 秘密鍵と証明書ファイルを使用する + +次の構成を使用して、秘密鍵と証明書ファイルを設定できます。 + +```yaml +scalardbCluster: + tls: + enabled: true + caRootCertSecret: "scalardb-cluster-tls-ca" + certChainSecret: "scalardb-cluster-tls-cert" + privateKeySecret: "scalardb-cluster-tls-key" +``` + +この場合、次のように山括弧内の内容を置き換えて、ScalarDB Cluster の秘密鍵と証明書ファイルを含むシークレットリソースを作成する必要があります。 + +```console +kubectl create secret generic scalardb-cluster-tls-ca --from-file=ca.crt=/ -n +kubectl create secret generic scalardb-cluster-tls-cert --from-file=tls.crt=/ -n +kubectl create secret generic scalardb-cluster-tls-key --from-file=tls.key=/ -n +``` + +秘密鍵と証明書ファイルを準備する方法の詳細については、[Scalar 製品の秘密鍵と証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx) を参照してください。 + +##### cert-manager で信頼できる CA を使用して秘密鍵と証明書ファイルを管理する + +次の構成を使用して、山括弧内の内容を説明に従って置き換えることで、cert-manager で秘密鍵と証明書ファイルを管理できます。 + +:::note + +* cert-manager を使用する場合は、cert-manager をデプロイし、`Issuers` リソースを準備する必要があります。詳細については、cert-manager のドキュメント、[インストール](https://cert-manager.io/docs/installation/) および [発行者構成](https://cert-manager.io/docs/configuration/) を参照してください。 +* デフォルトでは、Scalar Helm Chart は Scalar 製品の証明書要件を満たす `Certificate` リソースを作成します。デフォルトの証明書構成が推奨されますが、カスタム証明書構成を使用する場合は、Scalar 製品の証明書要件を満たす必要があります。詳細については、[Scalar 製品の秘密キーと証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx#certificate-requirements) を参照してください。 + +::: + +```yaml +scalardbCluster: + tls: + enabled: true + certManager: + enabled: true + issuerRef: + name: + dnsNames: + - cluster.scalardb.example.com +``` + +この場合、cert-manager は信頼できる発行者を使用して秘密鍵と証明書ファイルを発行します。秘密鍵と証明書ファイルを手動でマウントする必要はありません。 + +##### cert-manager で自己署名 CA を使用して秘密鍵と証明書ファイルを管理する + +次の構成を使用して、cert-manager で秘密キーと自己署名証明書ファイルを管理できます。 + +:::note + +* cert-manager を使用する場合は、cert-manager をデプロイする必要があります。詳細については、cert-manager のドキュメント [インストール](https://cert-manager.io/docs/installation/) を参照してください。 +* デフォルトでは、Scalar Helm Chart は Scalar 製品の証明書要件を満たす `Certificate` リソースを作成します。デフォルトの証明書構成が推奨されますが、カスタム証明書構成を使用する場合は、Scalar 製品の証明書要件を満たす必要があります。詳細については、[Scalar 製品の秘密キーと証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx#certificate-requirements) を参照してください。 + +::: + +```yaml +scalardbCluster: + tls: + enabled: true + certManager: + enabled: true + selfSigned: + enabled: true + dnsNames: + - cluster.scalardb.example.com +``` + +この場合、Scalar Helm Charts と cert-manager が秘密鍵と自己署名証明書ファイルを発行します。秘密鍵と証明書ファイルを手動でマウントする必要はありません。 + +##### TLS通信のカスタム権限を設定する + +`scalardbCluster.tls.overrideAuthority` を使用して、TLS 通信のカスタム権限を設定できます。この値によって、実際に接続されているホストが変わることはありません。この値はテスト用ですが、DNS オーバーライドの代替としてテスト以外でも安全に使用できます。たとえば、`scalardbCluster.tls.certChainSecret` を使用して設定した証明書チェーン ファイルで提示されるホスト名を指定できます。このチャートでは、`startupProbe` と `livenessProbe` にこの値を使用しています。 + +```yaml +scalardbCluster: + tls: + enabled: true + overrideAuthority: "cluster.scalardb.example.com" +``` + +### レプリカ構成 (環境に応じてオプション) + +`scalardbCluster.replicaCount` を使用して、ScalarDB Cluster のレプリカ (ポッド) の数を指定できます。 + +```yaml +scalardbCluster: + replicaCount: 3 +``` + +### ロギング構成 (環境に応じてオプション) + +ScalarDB Cluster のログ レベルを変更するには、`scalardbCluster.logLevel` を使用できます。 + +```yaml +scalardbCluster: + logLevel: INFO +``` + +### GraphQL 構成 (環境に応じてオプション) + +ScalarDB Cluster で GraphQL 機能を使用するには、`scalardbCluster.graphql.enabled` を `true` に設定して、GraphQL 機能用のリソースをデプロイします。 GraphQL 機能を使用する場合は、`scalardbCluster.scalardbClusterNodeProperties` で `scalar.db.graphql.enabled=true` を設定する必要があることに注意してください。 + +```yaml +scalardbCluster: + graphql: + enabled: true +``` + +また、クライアントからの GraphQL リクエストを受け入れる `Service` リソースを設定することもできます。 + +```yaml +scalardbCluster: + graphql: + service: + type: ClusterIP + annotations: {} + ports: + graphql: + port: 8080 + targetPort: 8080 + protocol: TCP +``` + +### SQL 構成 (環境に応じてオプション) + +ScalarDB Cluster で SQL 機能を使用するために、カスタム値ファイルに必要な構成はありません。 この機能は、`scalardbCluster.scalardbClusterNodeProperties` で `scalar.db.sql.enabled=true` を設定することで使用できます。 + +### Scalar Envoy 構成 (環境に応じてオプション) + +ScalarDB Cluster を `indirect` モードで使用するには、次のように Envoy を有効にする必要があります。 + +```yaml +envoy: + enabled: true +``` + +また、ScalarDB Cluster のカスタム値ファイルに Scalar Envoy 構成を設定する必要があります。 これは、`indirect` モードで Kubernetes 環境に ScalarDB Cluster をデプロイする場合、クライアントは gRPC リクエストのロード バランサーとして Scalar Envoy を介して ScalarDB Cluster にリクエストを送信する必要があるためです。 + +Scalar Envoy 構成の詳細については、[Scalar Envoy のカスタム値ファイルの構成](configure-custom-values-envoy.mdx) を参照してください。 + +```yaml +envoy: + configurationsForScalarEnvoy: + ... + +scalardbCluster: + configurationsForScalarDbCluster: + ... +``` + +### 汚染と許容の構成 (環境に応じてオプション) + +Kubernetes のテイントと許容を使用してポッドのデプロイメントを制御したい場合は、`scalardbCluster.tolerations` を使用できます。 + +Kubernetes の許容と同じ構文を使用して、テイントと許容を構成できます。 Kubernetes での許容設定の詳細については、Kubernetes の公式ドキュメント [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) を参照してください。 + +```yaml +scalardbCluster: + tolerations: + - effect: NoSchedule + key: scalar-labs.com/dedicated-node + operator: Equal + value: scalardb-cluster +``` + +### 暗号化設定 (環境に応じてオプション) + +[保存時の暗号化](https://scalardb.scalar-labs.com/docs/latest/scalardb-cluster/encrypt-data-at-rest/)を有効にして、バックエンドデータベース内のデータを保護できます。暗号化機能を使用する場合、次の 2つのデプロイメントオプションがあります。 + +1. HashiCorp Vault (HashiCorp Cloud Platform (HCP) Vault Dedicated) を使用して、DEK を管理および保存します。 +1. ScalarDB Cluster を使用して DEK を管理し、Kubernetes Secrets に保存します。 + +#### HashiCorp Vaultを使用する + +HashiCorp Vault (HCP Vault Dedicated) を使用してデータを暗号化できます。山括弧内の内容は説明に応じて置き換えます。 + +```yaml +scalardbCluster: + scalardbClusterNodeProperties: | + ...(omit)... + scalar.db.cluster.encryption.enabled=true + scalar.db.cluster.encryption.type=vault + scalar.db.cluster.encryption.vault.address=https://: + scalar.db.cluster.encryption.vault.token= + scalar.db.cluster.encryption.vault.transit_secrets_engine_path= + encryption: + enabled: true + type: "vault" +``` + +#### ScalarDB Cluster と Kubernetes Secrets を使用する + +ScalarDB Cluster と Kubernetes Secrets を使用して、次のようにデータを暗号化できます。山括弧内の内容は説明に応じて置き換えます。 + +```yaml +scalardbCluster: + scalardbClusterNodeProperties: | + ...(omit)... + scalar.db.cluster.encryption.enabled=true + scalar.db.cluster.encryption.type=self + scalar.db.cluster.encryption.self.kubernetes.secret.namespace_name=${env:SCALAR_DB_CLUSTER_ENCRYPTION_SELF_KUBERNETES_SECRET_NAMESPACE_NAME} + encryption: + enabled: true + type: "self" +``` + +この場合、ScalarDB Cluster の Helm Chart は名前空間情報を環境変数として自動的に設定するため、`${env:SCALAR_DB_CLUSTER_ENCRYPTION_SELF_KUBERNETES_SECRET_NAMESPACE_NAME}` を置き換える必要はありません。このため、`${env:SCALAR_DB_CLUSTER_ENCRYPTION_SELF_KUBERNETES_SECRET_NAMESPACE_NAME}` の値はそのままにしておいてかまいません。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardb-graphql.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardb-graphql.mdx new file mode 100644 index 00000000..f2512151 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardb-graphql.mdx @@ -0,0 +1,227 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +--- + +# [非推奨] ScalarDB GraphQL のカスタム値ファイルを構成する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +:::note + +ScalarDB GraphQL サーバーは非推奨になりました。 代わりに[ScalarDB Cluster](configure-custom-values-scalardb-cluster.mdx) を使用してください。 + +::: + +このドキュメントでは、ScalarDB GraphQL チャートのカスタム値ファイルを作成する方法について説明します。 パラメータの詳細を知りたい場合は、ScalarDB GraphQL チャートの [README](https://github.com/scalar-labs/helm-charts/blob/main/charts/scalardb-graphql/README.md) を参照してください。 + +## 必要な構成 + +### イングレス構成 + +クライアントリクエストをリッスンするには `ingress` を設定する必要があります。 複数の GraphQL サーバーをデプロイする場合、トランザクションを適切に処理するにはセッション アフィニティが必要です。 これは、GraphQL サーバーがトランザクションをメモリ内に保持するため、継続トランザクションを使用する GraphQL クエリは、トランザクションを開始したのと同じサーバーにルーティングする必要があるためです。 + +たとえば、NGINX Ingress Controller を使用する場合、次のように Ingress 構成を設定できます。 + +```yaml +ingress: + enabled: true + className: nginx + annotations: + nginx.ingress.kubernetes.io/session-cookie-path: / + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: INGRESSCOOKIE + nginx.ingress.kubernetes.io/session-cookie-hash: sha1 + nginx.ingress.kubernetes.io/session-cookie-max-age: "300" + hosts: + - host: "" + paths: + - path: /graphql + pathType: Exact +``` + +AWSのALBを利用する場合、以下のようにIngress設定を行うことができます。 + +```yaml +ingress: + enabled: true + className: alb + annotations: + alb.ingress.kubernetes.io/scheme: internal + alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=60 + alb.ingress.kubernetes.io/target-type: ip + alb.ingress.kubernetes.io/healthcheck-path: /graphql?query=%7B__typename%7D + hosts: + - host: "" + paths: + - path: /graphql + pathType: Exact +``` + +### 画像構成 + +`image.repository`を設定する必要があります。 コンテナー リポジトリからイメージをプルできるように、ScalarDB GraphQL コンテナー イメージを必ず指定してください。 + +```yaml +image: + repository: +``` + +AWS または Azure を使用している場合、詳細については次のドキュメントを参照してください。 + +* [How to install Scalar products through AWS Marketplace](../scalar-kubernetes/AwsMarketplaceGuide.mdx) +* [How to install Scalar products through Azure Marketplace](../scalar-kubernetes/AzureMarketplaceGuide.mdx) + +### データベース構成 + +`scalarDbGraphQlConfiguration`を設定する必要があります。 + +ScalarDB Server を ScalarDB GraphQL とともに使用する場合 (推奨)、ScalarDB Server ポッドにアクセスするように構成を設定する必要があります。 + +```yaml +scalarDbGraphQlConfiguration: + contactPoints: + contactPort: 60051 + storage: "grpc" + transactionManager: "grpc" + namespaces: +``` + +## オプションの構成 + +### リソース構成 (本番環境で推奨) + +Kubernetes のリクエストと制限を使用してポッド リソースを制御したい場合は、`resources` を使用できます。 + +商用ライセンスの観点から、Scalar 製品の 1 つのポッドのリソースは 2vCPU / 4GB メモリに制限されていることに注意してください。 また、AWS Marketplace から提供される従量課金制のコンテナを取得する場合、`resources.limits` で 2vCPU / 4GB を超えるメモリ構成でそれらのコンテナを実行することはできません。 この制限を超えると、ポッドは自動的に停止されます。 + +これらは、Kubernetes のリクエストと制限と同じ構文を使用して構成できます。 そのため、Kubernetes の要求と制限の詳細については、公式ドキュメント [Resource Management for Pods and Containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) を参照してください。 + +```yaml +resources: + requests: + cpu: 2000m + memory: 4Gi + limits: + cpu: 2000m + memory: 4Gi +``` + +### アフィニティ構成 (運用環境で推奨) + +Kubernetes のアフィニティと反アフィニティを使用してポッドのデプロイメントを制御したい場合は、`affinity` を使用できます。 + +Kubernetes のアフィニティと同じ構文を使用して構成できます。 そのため、Kubernetes のアフィニティ設定の詳細については、公式ドキュメント [Assigning Pods to Nodes](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) を参照してください。 + +```yaml +affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: app.kubernetes.io/app + operator: In + values: + - scalardb-graphql + topologyKey: kubernetes.io/hostname + weight: 50 +``` + +### Prometheus/Grafana 構成 (運用環境で推奨) + +[kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack) を使用して ScalarDB GraphQL ポッドを監視する場合は、`grafanaDashboard.enabled`、`serviceMonitor.enabled`、および `prometheusRule.enabled`。 + +```yaml +grafanaDashboard: + enabled: true + namespace: monitoring +serviceMonitor: + enabled: true + namespace: monitoring + interval: 15s +prometheusRule: + enabled: true + namespace: monitoring +``` + +### SecurityContext 設定 (デフォルト値を推奨) + +ScalarDB GraphQL ポッドに SecurityContext と PodSecurityContext を設定したい場合は、`securityContext` と `podSecurityContext` を使用できます。 + +KubernetesのSecurityContextやPodSecurityContextと同じ構文を使用して設定できます。 したがって、Kubernetes の SecurityContext および PodSecurityContext 構成の詳細については、公式ドキュメント [Configure a Security Context for a Pod or Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) を参照してください。 + +```yaml +podSecurityContext: + seccompProfile: + type: RuntimeDefault + +securityContext: + capabilities: + drop: + - ALL + runAsNonRoot: true + allowPrivilegeEscalation: false +``` + +### GraphQL サーバー構成 (環境に応じてオプション) + +graphql クエリを実行するパスを変更したい場合は、`scalarDbGraphQlConfiguration.path` を使用できます。 デフォルトでは、`http://:80/graphql` を使用して graphql クエリを実行できます。 + +`scalarDbGraphQlConfiguration.graphiql`を使用して[GraphiQL](https://github.com/graphql/graphiql/tree/main/packages/graphiql) を有効/無効にすることもできます。 + +```yaml +scalarDbGraphQlConfiguration: + path: /graphql + graphiql: "true" +``` + +### TLS 構成 (環境に応じてオプション) + +クライアントとイングレスの間で TLS を使用したい場合は、`ingress.tls` を使用できます。 + +秘密キーと証明書ファイルを含むシークレット リソースを作成する必要があります。 Ingress の Secret リソースの詳細については、公式ドキュメント [Ingress - TLS](https://kubernetes.io/docs/concepts/services-networking/ingress/#tls) を参照してください。 + +```yaml +ingress: + tls: + - hosts: + - foo.example.com + - bar.example.com + - bax.example.com + secretName: graphql-ingress-tls +``` + +### レプリカ構成 (環境に応じてオプション) + +ScalarDB GraphQL のレプリカ (ポッド) の数は、`replicaCount` を使用して指定できます。 + +```yaml +replicaCount: 3 +``` + +### ロギング構成 (環境に応じてオプション) + +ScalarDB GraphQL のログレベルを変更したい場合は、`scalarDbGraphQlConfiguration.logLevel` を使用できます。 + +```yaml +scalarDbGraphQlConfiguration: + logLevel: INFO +``` + +### 汚染と許容の構成 (環境に応じてオプション) + +Kubernetes のテイントと許容範囲を使用してポッドのデプロイメントを制御したい場合は、`tolerations` を使用できます。 + +Kubernetes の許容と同じ構文を使用して、テイントと許容を構成できます。 Kubernetes での許容設定の詳細については、Kubernetes の公式ドキュメント [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) を参照してください。 + +```yaml +tolerations: + - effect: NoSchedule + key: scalar-labs.com/dedicated-node + operator: Equal + value: scalardb +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardb.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardb.mdx new file mode 100644 index 00000000..9b8f87c9 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardb.mdx @@ -0,0 +1,205 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium + - Deprecated +--- + +# [非推奨] ScalarDB Server のカスタム値ファイルを構成する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +:::note + +ScalarDB Server は非推奨になりました。 代わりに [ScalarDB Cluster](configure-custom-values-scalardb-cluster.mdx) を使用してください。 + +::: + +このドキュメントでは、ScalarDB Server チャートのカスタム値ファイルを作成する方法について説明します。 パラメータの詳細を知りたい場合は、ScalarDB Server チャートの [README](https://github.com/scalar-labs/helm-charts/blob/main/charts/scalardb/README.md) を参照してください。 + +## 必要な構成 + +### Scalar Envoy 構成 + +ScalarDB Server のカスタム値ファイルに Scalar Envoy 構成を設定する必要があります。 これは、ScalarDB Server を Kubernetes 環境にデプロイする場合、クライアント リクエストが gRPC リクエストのロード バランサーとして Scalar Envoy 経由で ScalarDB Server に送信されるためです。 + +Scalar Envoy 構成の詳細については、ドキュメント [Scalar Envoy のカスタム値ファイルの構成](configure-custom-values-envoy.mdx) を参照してください。 + +```yaml +envoy: + configurationsForScalarEnvoy: + ... + +scalardb: + configurationsForScalarDB: + ... +``` + +### 画像構成 + +`scalardb.image.repository`を設定する必要があります。 コンテナー リポジトリからイメージをプルできるように、必ず ScalarDB Server コンテナー イメージを指定してください。 + +```yaml +scalardb: + image: + repository: +``` + +AWS または Azure を使用している場合、詳細については次のドキュメントを参照してください。 + +* [How to install Scalar products through AWS Marketplace](../scalar-kubernetes/AwsMarketplaceGuide.mdx) +* [How to install Scalar products through Azure Marketplace](../scalar-kubernetes/AzureMarketplaceGuide.mdx) + +### データベース構成 + +`scalardb.databaseProperties` を設定する必要があります。 `database.properties` をこのパラメータに設定してください。 ScalarDB Server の設定の詳細については、[Configure ScalarDB Server](https://scalardb.scalar-labs.com/docs/latest/scalardb-server.mdx#configure-scalardb-server) を参照してください。 + +```yaml +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 およびコンテナーのリソース管理](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) を参照してください。 + +```yaml +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 リソースを使用して資格情報を環境変数としてプロパティ ファイルに渡す方法](use-secret-for-credentials.mdx) を参照してください。 + +```yaml +scalardb: + secretName: "scalardb-credentials-secret" +``` + +### アフィニティ構成 (運用環境で推奨) + +Kubernetes のアフィニティと反アフィニティを使用してポッドのデプロイメントを制御したい場合は、`scalardb.affinity` を使用できます。 + +Kubernetes のアフィニティと同じ構文を使用して構成できます。 そのため、Kubernetes のアフィニティ設定の詳細については、公式ドキュメント [Assigning Pods to Nodes](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) を参照してください。 + +```yaml +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](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack) を使用して ScalarDB Server ポッドを監視する場合は、`scalardb.grafanaDashboard.enabled`、`scalardb.serviceMonitor` を使用して、kube-prometheus-stack の ConfigMap、ServiceMonitor、および PrometheusRule リソースをデプロイできます。 `enabled`および `scalardb.prometheusRule.enabled`。 + +```yaml +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](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) を参照してください。 + +```yaml +scalardb: + podSecurityContext: + seccompProfile: + type: RuntimeDefault + securityContext: + capabilities: + drop: + - ALL + runAsNonRoot: true + allowPrivilegeEscalation: false +``` + +### レプリカ構成 (環境に応じてオプション) + +`scalardb.replicaCount` を使用して、ScalarDB Serverのレプリカ(ポッド)の数を指定できます。 + +```yaml +scalardb: + replicaCount: 3 +``` + +### ロギング構成 (環境に応じてオプション) + +ScalarDB Server のログレベルを変更したい場合は、`scalardb.storageConfiguration.dbLogLevel` を使用できます。 + +```yaml +scalardb: + storageConfiguration: + dbLogLevel: INFO +``` + +### 汚染と許容の構成 (環境に応じてオプション) + +Kubernetes のテイントと許容を使用してポッドのデプロイメントを制御したい場合は、`scalardb.tolerations` を使用できます。 + +Kubernetes の許容と同じ構文を使用して、テイントと許容を構成できます。 Kubernetes での許容設定の詳細については、Kubernetes の公式ドキュメント [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) を参照してください。 + +```yaml +scalardb: + tolerations: + - effect: NoSchedule + key: scalar-labs.com/dedicated-node + operator: Equal + value: scalardb +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardl-auditor.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardl-auditor.mdx new file mode 100644 index 00000000..71e19669 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardl-auditor.mdx @@ -0,0 +1,345 @@ +--- +--- + +# ScalarDL Auditor のカスタム値ファイルを構成する + +このドキュメントでは、ScalarDL Auditor チャートのカスタム値ファイルを作成する方法について説明します。 パラメータの詳細を知りたい場合は、ScalarDL Auditor チャートの [README](https://github.com/scalar-labs/helm-charts/blob/main/charts/scalardl-audit/README.md) を参照してください。 + +## 必要な構成 + +### Scalar Envoy 構成 + +ScalarDL Auditor のカスタム値ファイルで Scalar Envoy 構成を設定する必要があります。 これは、ScalarDL Auditor を Kubernetes 環境にデプロイする場合、クライアント リクエストが gRPC リクエストのロード バランサーとして Scalar Envoy 経由で ScalarDL Auditor に送信されるためです。 + +Scalar Envoy 構成の詳細については、ドキュメント [Scalar Envoy のカスタム値ファイルの構成](configure-custom-values-envoy.mdx) を参照してください。 + +```yaml +envoy: + configurationsForScalarEnvoy: + ... + +auditor: + configurationsForScalarDLAuditor: + ... +``` + +### 画像構成 + +`auditor.image.repository` を設定する必要があります。 コンテナー リポジトリからイメージをプルできるように、必ず ScalarDL Auditor コンテナー イメージを指定してください。 + +```yaml +auditor: + image: + repository: +``` + +Scalar 製品のコンテナリポジトリの詳細については、[Scalar 製品のコンテナ イメージを取得する方法](../scalar-kubernetes/HowToGetContainerImages.mdx) を参照してください。 + +### Auditor / データベースの構成 + +`auditor.auditorProperties` を設定する必要があります。 `auditor.properties` をこのパラメータに設定してください。 ScalarDL Auditor の設定の詳細については、[auditor.properties](https://github.com/scalar-labs/scalar/blob/master/auditor/conf/auditor.properties) を参照してください。 + +```yaml +auditor: + auditorProperties: | + scalar.db.contact_points=localhost + scalar.db.username=cassandra + scalar.db.password=cassandra + scalar.db.storage=cassandra + scalar.dl.auditor.ledger.host= + scalar.dl.auditor.private_key_path=/keys/auditor-key-file + scalar.dl.auditor.cert_path=/keys/auditor-cert-file +``` + +### キー/証明書の構成 + +秘密鍵ファイルを `scalar.dl.auditor.private_key_path` に設定し、証明書ファイルを `scalar.dl.auditor.cert_path` に設定する必要があります。 + +秘密キー ファイルと証明書ファイルも ScalarDL Auditor ポッドにマウントする必要があります。 + +秘密キー ファイルと証明書ファイルをマウントする方法の詳細については、[ScalarDL Helm Charts のポッドにキーファイルと証明書ファイルをマウントする](mount-files-or-volumes-on-scalar-pods.mdx#scalardl-helm-charts-のポッドにキーファイルと証明書ファイルをマウントする) を参照してください。 + +## オプションの構成 + +### リソース構成 (本番環境で推奨) + +Kubernetes のリクエストと制限を使用してポッド リソースを制御したい場合は、`auditor.resources` を使用できます。 + +商用ライセンスの観点から、Scalar 製品の 1 つのポッドのリソースは 2vCPU / 4GB メモリに制限されていることに注意してください。 また、AWS Marketplace から提供される従量課金制のコンテナを取得する場合、`resources.limits` で 2vCPU / 4GB を超えるメモリ構成でそれらのコンテナを実行することはできません。 この制限を超えると、ポッドは自動的に停止されます。 + +これらは、Kubernetes のリクエストと制限と同じ構文を使用して構成できます。 そのため、Kubernetes の要求と制限の詳細については、公式ドキュメント [Resource Management for Pods and Containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) を参照してください。 + +```yaml +auditor: + resources: + requests: + cpu: 2000m + memory: 4Gi + limits: + cpu: 2000m + memory: 4Gi +``` + +### シークレット構成 + +環境変数を使用して `auditor.auditorProperties` 内の一部のプロパティ (資格情報など) を設定したい場合は、`auditor.secretName` を使用して、いくつかの資格情報を含む Secret リソースを指定できます。 + +たとえば、環境変数を使用してバックエンド データベースの資格情報 (`scalar.db.username` および `scalar.db.password`) を設定でき、これによりポッドの安全性が高まります。 + +Secret リソースの使用方法の詳細については、ドキュメント [Secret リソースを使用して資格情報を環境変数としてプロパティ ファイルに渡す方法](use-secret-for-credentials.mdx) を参照してください。 + +```yaml +auditor: + secretName: "auditor-credentials-secret" +``` + +### Affinity configurations (Recommended in the production environment) + +Kubernetes のアフィニティと反アフィニティを使用してポッドのデプロイメントを制御したい場合は、`auditor.affinity` を使用できます。 + +Kubernetes のアフィニティと同じ構文を使用して構成できます。 そのため、Kubernetes のアフィニティ設定の詳細については、公式ドキュメント [Assigning Pods to Nodes](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) を参照してください。 + +```yaml +auditor: + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: app.kubernetes.io/name + operator: In + values: + - scalardl-audit + - key: app.kubernetes.io/app + operator: In + values: + - auditor + topologyKey: kubernetes.io/hostname + weight: 50 +``` + +### Prometheus/Grafana 構成 (運用環境で推奨) + +[kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack) を使用して ScalarDL Auditor ポッドを監視する場合は、`auditor.grafanaDashboard.enabled`、`auditor.serviceMonitor` を使用して、kube-prometheus-stack の ConfigMap、ServiceMonitor、および PrometheusRule リソースをデプロイできます。 `enabled` および `auditor.prometheusRule.enabled`。 + +```yaml +auditor: + grafanaDashboard: + enabled: true + namespace: monitoring + serviceMonitor: + enabled: true + namespace: monitoring + interval: 15s + prometheusRule: + enabled: true + namespace: monitoring +``` + +### SecurityContext 設定 (デフォルト値を推奨) + +ScalarDL Auditor ポッドに SecurityContext と PodSecurityContext を設定したい場合は、`auditor.securityContext` と `auditor.podSecurityContext` を使用できます。 + +KubernetesのSecurityContextやPodSecurityContextと同じ構文を使用して設定できます。 したがって、Kubernetes の SecurityContext および PodSecurityContext 構成の詳細については、公式ドキュメント [Configure a Security Context for a Pod or Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) を参照してください。 + +```yaml +auditor: + podSecurityContext: + seccompProfile: + type: RuntimeDefault + securityContext: + capabilities: + drop: + - ALL + runAsNonRoot: true + allowPrivilegeEscalation: false +``` + +### TLS 構成 (環境に応じてオプション) + +TLS は、次の通信で有効にできます: + +- ScalarDL Auditor とクライアント間の通信。 +- ScalarDL Ledger と ScalarDL Auditor 間の通信。 + +さらに、証明書管理にはいくつかのオプションがあります。詳細については、[Envoy の TLS 構成](./configure-custom-values-envoy.mdx#tls-構成-環境に応じてオプション) を参照してください。 + +セキュリティ要件に基づいて、どの方法を使用するかを検討する必要があります。各方法のガイダンスと関連ドキュメントについては、次の意思決定ツリーを参照してください。 + +```mermaid +flowchart TD + A[cert-manager を使用して
秘密鍵と証明書ファイルを
自動的に管理しますか?] + A -->|はい、証明書を自動的に
管理したいです。| B + A -->|いいえ、証明書は自分で手動で
管理したいです。| C + B[自己署名 CA と
信頼された CA の
どちらを使用しますか?] + C[自己署名 CA と
信頼された CA の
どちらを使用しますか?] + B -->|自己署名 CA を
使用したいです。| D + B -->|信頼できる CA
を使用したいです。| E + C -->|自己署名 CA
を使用したいです。| F + C -->|信頼できる CA
を使用したいです。| G + D[cert-manager で自己署名 CA を使用して
秘密鍵と証明書ファイルを管理する

を参照してください。] + E[cert-manager で信頼できる CA を使用して
秘密鍵と証明書ファイルを管理する

を参照してください。] + F[秘密鍵と証明書ファイルを使用するを参照し、
生成した自己署名証明書を使用します。] + G[秘密鍵と証明書ファイルを使用するを参照し、
第三者によって生成された
信頼できる証明書を使用します。] +``` + +#### TLS を有効にする + +次の構成を使用して、すべての ScalarDL Auditor 接続で TLS を有効にすることができます。 + +```yaml +auditor: + auditorProperties: | + ...(omit)... + scalar.dl.auditor.server.tls.enabled=true + scalar.dl.auditor.server.tls.cert_chain_path=/tls/scalardl-auditor/certs/tls.crt + scalar.dl.auditor.server.tls.private_key_path=/tls/scalardl-auditor/certs/tls.key + scalar.dl.auditor.tls.enabled=true + scalar.dl.auditor.tls.ca_root_cert_path=/tls/scalardl-ledger/certs/ca.crt + scalar.dl.auditor.tls.override_authority=envoy.scalar.example.com + tls: + enabled: true +``` + +##### 秘密鍵と証明書ファイルを使用する + +次の構成を使用して、秘密鍵と証明書ファイルを設定できます。 + +```yaml +auditor: + tls: + enabled: true + caRootCertSecret: "scalardl-auditor-tls-ca" + certChainSecret: "scalardl-auditor-tls-cert" + privateKeySecret: "scalardl-auditor-tls-key" +``` + +この場合、次のように、山括弧内の内容を置き換えて、ScalarDL Ledger および ScalarDL Auditor の秘密キーと証明書ファイルを含むシークレットリソースを作成する必要があります。 + +```console +kubectl create secret generic scalardl-auditor-tls-ca --from-file=ca.crt=/ -n +kubectl create secret generic scalardl-auditor-tls-cert --from-file=tls.crt=/ -n +kubectl create secret generic scalardl-auditor-tls-key --from-file=tls.key=/ -n +kubectl create secret generic scalardl-auditor-tls-ca-for-ledger --from-file=ca.crt=/ -n +``` + +秘密鍵と証明書ファイルを準備する方法の詳細については、[Scalar 製品の秘密鍵と証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx) を参照してください。 + +##### cert-manager で信頼できる CA を使用して秘密鍵と証明書ファイルを管理する + +次の構成を使用して、山括弧内の内容を説明に従って置き換えることで、cert-manager で秘密鍵と証明書ファイルを管理できます。 + +:::note + +* cert-manager を使用する場合は、cert-manager をデプロイし、`Issuers` リソースを準備する必要があります。詳細については、cert-manager のドキュメント、[インストール](https://cert-manager.io/docs/installation/) および [発行者構成](https://cert-manager.io/docs/configuration/) を参照してください。 +* デフォルトでは、Scalar Helm Chart は Scalar 製品の証明書要件を満たす `Certificate` リソースを作成します。デフォルトの証明書構成が推奨されますが、カスタム証明書構成を使用する場合は、Scalar 製品の証明書要件を満たす必要があります。詳細については、[Scalar 製品の秘密キーと証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx#certificate-requirements) を参照してください。 + +::: + +```yaml +auditor: + tls: + enabled: true + certManager: + enabled: true + issuerRef: + name: + dnsNames: + - auditor.scalardl.example.com +``` + +この場合、cert-manager は信頼できる発行者を使用して秘密鍵と証明書ファイルを発行します。秘密鍵と証明書ファイルを手動でマウントする必要はありません。 + +##### cert-manager で自己署名 CA を使用して秘密鍵と証明書ファイルを管理する + +次の構成を使用して、cert-manager で秘密キーと自己署名証明書ファイルを管理できます。 + +:::note + +* cert-manager を使用する場合は、cert-manager をデプロイする必要があります。詳細については、cert-manager のドキュメント [インストール](https://cert-manager.io/docs/installation/) を参照してください。 +* デフォルトでは、Scalar Helm Chart は Scalar 製品の証明書要件を満たす `Certificate` リソースを作成します。デフォルトの証明書構成が推奨されますが、カスタム証明書構成を使用する場合は、Scalar 製品の証明書要件を満たす必要があります。詳細については、[Scalar 製品の秘密キーと証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx#certificate-requirements) を参照してください。 + +::: + +```yaml +auditor: + tls: + enabled: true + certManager: + enabled: true + selfSigned: + enabled: true + dnsNames: + - auditor.scalardl.example.com +``` + +この場合、Scalar Helm Charts と cert-manager が秘密鍵と自己署名証明書ファイルを発行します。秘密鍵と証明書ファイルを手動でマウントする必要はありません。 + +#### ScalarDL Ledger のルート CA 証明書を設定する + +ScalarDL Ledger 側で TLS を有効にする場合は、ScalarDL Auditor からアクセスできるように、ScalarDL Ledger の前にある Envoy のルート CA 証明書ファイルを設定する必要があります。どのアプローチを取るべきかを判断するには、次の意思決定ツリーを参照してください。 + +```mermaid +flowchart TD + A[cert-manager を利用しますか?] + A -->|はい| B + A -->|いいえ| D + B[cert-manager で自己証明書を利用しますか?] + B -->|いいえ| C[cert-manager を使用して ScalarDL Ledger と ScalarDL Auditor に同じ 信頼できる CAを利用しますか??] + C -->|いいえ| D[ScalarDL Ledger 用の Envoy のルート CA 証明書を手動で設定する必要があります。] + C ---->|はい| E[Scalar Helm Chart はルート CA 証明書を自動的に設定します。`auditor.tls.upstream.caRootCertSecret` を明示的に設定する必要はありません。] +``` + +Envoy のルート CA 証明書ファイルを手動で設定する必要がある場合は、次の構成を使用して設定できます。 + +```yaml +auditor: + tls: + enabled: true + caRootCertForLedgerSecret: "scalardl-auditor-tls-ca-for-ledger" +``` + +この場合、次のように山括弧内の内容を置き換えて、ルート CA 証明書ファイルを含むシークレットリソースを作成する必要があります。 + +```console +kubectl create secret generic scalardl-auditor-tls-ca-for-ledger --from-file=ca.crt=//scalardl-ledger -n +``` + +##### TLS通信のカスタム権限を設定する + +`auditor.tls.overrideAuthority` を使用して、TLS 通信のカスタム権限を設定できます。この値によって、実際に接続されているホストが変わることはありません。この値はテスト用ですが、DNS オーバーライドの代替としてテスト以外でも安全に使用できます。たとえば、`auditor.tls.certChainSecret` を使用して設定した証明書チェーン ファイルで提示されるホスト名を指定できます。このチャートでは、`startupProbe` と `livenessProbe` にこの値を使用しています。 + +### レプリカ構成 (環境に応じてオプション) + +ScalarDL Auditor のレプリカ (ポッド) の数は、`auditor.replicaCount` を使用して指定できます。 + +```yaml +auditor: + replicaCount: 3 +``` + +### ロギング構成 (環境に応じてオプション) + +ScalarDL Auditor のログレベルを変更したい場合は、`auditor.scalarAuditorConfiguration.auditorLogLevel` を使用できます。 + +```yaml +auditor: + scalarAuditorConfiguration: + auditorLogLevel: INFO +``` + +### 汚染と許容の構成 (環境に応じてオプション) + +Kubernetes のテイントと許容を使用してポッドのデプロイメントを制御したい場合は、`auditor.tolerations` を使用できます。 + +Kubernetes の許容と同じ構文を使用して、テイントと許容を構成できます。 Kubernetes での許容設定の詳細については、Kubernetes の公式ドキュメント [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) を参照してください。 + +```yaml +auditor: + tolerations: + - effect: NoSchedule + key: scalar-labs.com/dedicated-node + operator: Equal + value: scalardl-auditor +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardl-ledger.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardl-ledger.mdx new file mode 100644 index 00000000..79b0b6cc --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardl-ledger.mdx @@ -0,0 +1,320 @@ +--- +--- + +# ScalarDL Ledger のカスタム値ファイルを構成する + +このドキュメントでは、ScalarDL Ledger チャートのカスタム値ファイルを作成する方法について説明します。 パラメータの詳細を知りたい場合は、ScalarDL Ledger chartの [README](https://github.com/scalar-labs/helm-charts/blob/main/charts/scalardl/README.md) を参照してください。 + +## 必要な構成 + +### Scalar Envoy 構成 + +ScalarDL Ledger のカスタム値ファイルで Scalar Envoy 構成を設定する必要があります。 これは、ScalarDL Ledger を Kubernetes 環境にデプロイする場合、クライアント リクエストが gRPC リクエストのロード バランサーとして Scalar Envoy 経由で ScalarDL Ledger に送信されるためです。 + +Scalar Envoy 構成の詳細については、ドキュメント [Scalar Envoy のカスタム値ファイルの構成](configure-custom-values-envoy.mdx) を参照してください。 + +```yaml +envoy: + configurationsForScalarEnvoy: + ... + +ledger: + configurationsForScalarDLLedger: + ... +``` + +### 画像構成 + +`ledger.image.repository` を設定する必要があります。 コンテナ リポジトリからイメージをプルできるように、ScalarDL Ledger コンテナ イメージを必ず指定してください。 + +```yaml +ledger: + image: + repository: +``` + +Scalar 製品のコンテナリポジトリの詳細については、[Scalar 製品のコンテナ イメージを取得する方法](../scalar-kubernetes/HowToGetContainerImages.mdx) を参照してください。 + +### Ledger/データベースの構成 + +`ledger.ledgerProperties` を設定する必要があります。 `ledger.properties` をこのパラメータに設定してください。 ScalarDL Ledger の構成の詳細については、[ledger.properties](https://github.com/scalar-labs/scalar/blob/master/ledger/conf/ledger.properties) を参照してください。 + +```yaml +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 のポッドにキーファイルと証明書ファイルをマウントする](mount-files-or-volumes-on-scalar-pods.mdx#scalardl-helm-charts-のポッドにキーファイルと証明書ファイルをマウントする) を参照してください。 + +## オプションの構成 + +### リソース構成 (本番環境で推奨) + +Kubernetes のリクエストと制限を使用してポッド リソースを制御したい場合は、`ledger.resources` を使用できます。 + +商用ライセンスの観点から、Scalar 製品の 1 つのポッドのリソースは 2vCPU / 4GB メモリに制限されていることに注意してください。 また、AWS Marketplace から提供される従量課金制のコンテナを取得する場合、`resources.limits` で 2vCPU / 4GB を超えるメモリ構成でそれらのコンテナを実行することはできません。 この制限を超えると、ポッドは自動的に停止されます。 + +これらは、Kubernetes のリクエストと制限と同じ構文を使用して構成できます。 そのため、Kubernetes の要求と制限の詳細については、公式ドキュメント [Resource Management for Pods and Containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) を参照してください。 + +```yaml +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 リソースを使用して資格情報を環境変数としてプロパティ ファイルに渡す方法](use-secret-for-credentials.mdx) を参照してください。 + +```yaml +ledger: + secretName: "ledger-credentials-secret" +``` + +### アフィニティ構成 (運用環境で推奨) + +Kubernetes のアフィニティと反アフィニティを使用してポッドのデプロイメントを制御したい場合は、`ledger.affinity` を使用できます。 + +Kubernetes のアフィニティと同じ構文を使用して構成できます。 そのため、Kubernetes のアフィニティ設定の詳細については、公式ドキュメント [Assigning Pods to Nodes](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) を参照してください。 + +```yaml +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](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack) を使用して ScalarDL Ledger ポッドを監視する場合は、`ledger.grafanaDashboard.enabled`、`ledger.serviceMonitor` を使用して、kube-prometheus-stack の ConfigMap、ServiceMonitor、および PrometheusRule リソースをデプロイできます。 `enabled` および `ledger.prometheusRule.enabled`。 + +```yaml +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](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) を参照してください。 + +```yaml +ledger: + podSecurityContext: + seccompProfile: + type: RuntimeDefault + securityContext: + capabilities: + drop: + - ALL + runAsNonRoot: true + allowPrivilegeEscalation: false +``` + +### TLS 構成 (環境に応じてオプション) + +TLS は、次の通信で有効にできます: + +- ScalarDL Ledger とクライアント間の通信。 +- ScalarDL Ledger と ScalarDL Auditor 間の通信。 + +また、証明書管理にはいくつかのオプションがあります。詳細については、[Envoy ドキュメント側の TLS 構成](./configure-custom-values-envoy.mdx#tls-configurations-optional-based-on-your-environment)を参照してください。 + +Please consider which you use based on your security requirements. According to your decision, you can see the related document as follows: + +セキュリティ要件に基づいてどちらを使用するかを検討してください。決定に応じて、次の関連ドキュメントを参照できます。 + +```mermaid +flowchart TD + A[cert-manager を使用して
秘密鍵と証明書ファイルを
自動的に管理しますか?] + A -->|はい、証明書を自動的に
管理したいです。| B + A -->|いいえ、証明書は自分で手動で
管理したいです。| C + B[自己署名 CA と
信頼された CA の
どちらを使用しますか?] + C[自己署名 CA と
信頼された CA の
どちらを使用しますか?] + B -->|自己署名 CA を
使用したいです。| D + B -->|信頼できる CA
を使用したいです。| E + C -->|自己署名 CA
を使用したいです。| F + C -->|信頼できる CA
を使用したいです。| G + D[cert-manager で自己署名 CA を使用して
秘密鍵と証明書ファイルを管理する

を参照してください。] + E[cert-manager で信頼できる CA を使用して
秘密鍵と証明書ファイルを管理する

を参照してください。] + F[秘密鍵と証明書ファイルを使用するを参照し、
生成した自己署名証明書を使用します。] + G[秘密鍵と証明書ファイルを使用するを参照し、
第三者によって生成された
信頼できる証明書を使用します。] +``` + +#### TLSを有効にする + +次の設定を使用して、すべての ScalarDL Ledger 接続で TLS を有効にすることができます。 + +```yaml +ledger: + ledgerProperties: | + ...(omit)... + scalar.dl.ledger.server.tls.enabled=true + scalar.dl.ledger.server.tls.cert_chain_path=/tls/scalardl-ledger/certs/tls.crt + scalar.dl.ledger.server.tls.private_key_path=/tls/scalardl-ledger/certs/tls.key + tls: + enabled: true +``` + +##### 秘密鍵と証明書ファイルを使用する + +次の構成を使用して、秘密鍵と証明書ファイルを設定できます。 + +```yaml +ledger: + tls: + enabled: true + caRootCertSecret: "scalardl-ledger-tls-ca" + certChainSecret: "scalardl-ledger-tls-cert" + privateKeySecret: "scalardl-ledger-tls-key" +``` + +この場合、次のように山括弧内の内容を置き換えて、ScalarDL Ledger の秘密鍵と証明書ファイルを含む秘密リソースを作成する必要があります。 + +```console +kubectl create secret generic scalardl-ledger-tls-ca --from-file=ca.crt=/ -n +kubectl create secret generic scalardl-ledger-tls-cert --from-file=tls.crt=/ -n +kubectl create secret generic scalardl-ledger-tls-key --from-file=tls.key=/ -n +``` + +秘密鍵と証明書ファイルを準備する方法の詳細については、[Scalar 製品の秘密鍵と証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx) を参照してください。 + +##### cert-manager で信頼できる CA を使用して秘密鍵と証明書ファイルを管理する + +次の構成を使用して、cert-manager で秘密キーと証明書を管理できます。 + +:::note + +* cert-manager を使用する場合は、cert-manager をデプロイし、`Issuers` リソースを準備する必要があります。詳細については、cert-manager のドキュメント、[インストール](https://cert-manager.io/docs/installation/) および [発行者構成](https://cert-manager.io/docs/configuration/) を参照してください。 +* デフォルトでは、Scalar Helm Chart は Scalar 製品の証明書要件を満たす `Certificate` リソースを作成します。デフォルトの証明書構成が推奨されますが、カスタム証明書構成を使用する場合は、Scalar 製品の証明書要件を満たす必要があります。詳細については、[Scalar 製品の秘密キーと証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx#certificate-requirements) を参照してください。 + +::: + +```yaml +ledger: + tls: + enabled: true + certManager: + enabled: true + issuerRef: + name: your-trusted-ca + dnsNames: + - ledger.scalardl.example.com +``` + +この場合、cert-manager は信頼できる発行者を使用して秘密鍵と証明書を発行します。秘密鍵と証明書のファイルを手動でマウントする必要はありません。 + +##### cert-manager で自己署名 CA を使用して秘密鍵と証明書ファイルを管理する + +次の構成を使用して、cert-manager で秘密キーと自己署名証明書を管理できます。 + +:::note + +* cert-manager を使用する場合は、cert-manager をデプロイする必要があります。詳細については、cert-manager のドキュメント [インストール](https://cert-manager.io/docs/installation/) を参照してください。 +* デフォルトでは、Scalar Helm Chart は Scalar 製品の証明書要件を満たす `Certificate` リソースを作成します。デフォルトの証明書構成が推奨されますが、カスタム証明書構成を使用する場合は、Scalar 製品の証明書要件を満たす必要があります。詳細については、[Scalar 製品の秘密キーと証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx#certificate-requirements) を参照してください。 + +::: + +```yaml +ledger: + tls: + enabled: true + certManager: + enabled: true + selfSigned: + enabled: true + dnsNames: + - ledger.scalardl.example.com +``` + +この場合、Scalar Helm Charts と cert-manager が秘密鍵と自己署名証明書を発行します。秘密鍵と証明書ファイルを手動でマウントする必要はありません。 + +##### TLS通信のカスタム権限を設定する + +`ledger.tls.overrideAuthority` を使用して、TLS 通信のカスタム権限を設定できます。この値によって、実際に接続されているホストが変わることはありません。この値はテスト用ですが、DNS オーバーライドの代替としてテスト以外でも安全に使用できます。たとえば、`ledger.tls.certChainSecret` を使用して設定した証明書チェーン ファイルで提示されるホスト名を指定できます。このチャートでは、`startupProbe` と `livenessProbe` にこの値を使用しています。 + +```yaml +ledger: + tls: + enabled: true + overrideAuthority: "ledger.scalardl.example.com" +``` + +### レプリカ構成 (環境に応じてオプション) + +`ledger.replicaCount` を使用して ScalarDL Ledger のレプリカ(ポッド)の数を指定できます。 + +```yaml +ledger: + replicaCount: 3 +``` + +### ロギング構成 (環境に応じてオプション) + +ScalarDL Ledger のログレベルを変更したい場合は、`ledger.scalarLedgerConfiguration.ledgerLogLevel` を使用できます。 + +```yaml +ledger: + scalarLedgerConfiguration: + ledgerLogLevel: INFO +``` + +### 汚染と許容の構成 (環境に応じてオプション) + +Kubernetes のテイントと許容を使用してポッドのデプロイメントを制御したい場合は、`ledger.tolerations` を使用できます。 + +Kubernetes の許容と同じ構文を使用して、テイントと許容を構成できます。 Kubernetes での許容設定の詳細については、Kubernetes の公式ドキュメント [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) を参照してください。 + +```yaml +ledger: + tolerations: + - effect: NoSchedule + key: scalar-labs.com/dedicated-node + operator: Equal + value: scalardl-ledger +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardl-schema-loader.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardl-schema-loader.mdx new file mode 100644 index 00000000..262bcf93 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/configure-custom-values-scalardl-schema-loader.mdx @@ -0,0 +1,91 @@ +--- +--- + +# ScalarDL Schema Loader のカスタム値ファイルを構成する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、ScalarDL Schema Loader チャートのカスタム値ファイルを作成する方法について説明します。 パラメータの詳細を知りたい場合は、ScalarDL Schema Loader チャートの [README](https://github.com/scalar-labs/helm-charts/blob/main/charts/schema-loading/README.md) を参照してください。 + +## 必要な構成 + +### データベース構成 + +`schemaLoading.databaseProperties` を設定する必要があります。 バックエンド データベースにアクセスするには、`database.properties` をこのパラメータに設定してください。 ScalarDB のデータベース構成の詳細については、[Getting Started with ScalarDB](https://scalardb.scalar-labs.com/docs/latest/getting-started-with-scalardb) を参照してください。 + +```yaml +schemaLoading: + databaseProperties: | + scalar.db.contact_points=cassandra + scalar.db.contact_port=9042 + scalar.db.username=cassandra + scalar.db.password=cassandra + scalar.db.storage=cassandra +``` + +### スキーマタイプの構成 + +`schemaLoading.schemaType` を設定する必要があります。 + +ScalarDL Ledger のスキーマを作成する場合は `ledger` を設定してください。 + +```yaml +schemaLoading: + schemaType: ledger +``` + +ScalarDL Auditor のスキーマを作成する場合は `auditor` を設定してください。 + +```yaml +schemaLoading: + schemaType: auditor +``` + +## オプションの構成 + +### シークレット構成 (運用環境で推奨) + +環境変数を使用して `schemaLoading.databaseProperties` 内の一部のプロパティ (資格情報など) を設定したい場合は、`schemaLoading.secretName` を使用して、いくつかの資格情報を含む Secret リソースを指定できます。 + +たとえば、環境変数を使用してバックエンド データベースの資格情報 (`scalar.db.username` および `scalar.db.password`) を設定でき、これによりポッドの安全性が高まります。 + +Secret リソースの使用方法の詳細については、ドキュメント [Secret リソースを使用して資格情報を環境変数としてプロパティ ファイルに渡す方法](use-secret-for-credentials.mdx) を参照してください。 + +```yaml +schemaLoading: + secretName: "schema-loader-credentials-secret" +``` + +### 画像構成 (デフォルト値を推奨) + +イメージ リポジトリを変更する場合は、`schemaLoading.image.repository` を使用して、プルする ScalarDL Schema Loader コンテナ イメージのコンテナ リポジトリ情報を指定できます。 + +```yaml +schemaLoading: + image: + repository: +``` + +### フラグ設定 (環境に応じてオプション) + +複数のフラグを配列として指定できます。 フラグの詳細については、ドキュメント [ScalarDB Schema Loader](https://scalardb.scalar-labs.com/docs/latest/schema-loader) を参照してください。 + +```yaml +schemaLoading: + commandArgs: + - "--alter" + - "--compaction-strategy" + - "" + - "--delete-all" + - "--no-backup" + - "--no-scaling" + - "--repair-all" + - "--replication-factor" + - "" + - "--replication-strategy" + - "" + - "--ru" + - "" +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-logging.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-logging.mdx new file mode 100644 index 00000000..1d1733ab --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-logging.mdx @@ -0,0 +1,100 @@ +--- +tags: + - Community +--- + +# Helm Charts の入門 (Loki スタックを使用したロギング) + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Grafana Loki (Promtail を使用) を使用して、Kubernetes 上で Scalar 製品のログ集約を開始する方法について説明します。 + +Scalar 製品の [モニタリングの開始](getting-started-monitoring.mdx) をすでに読み、kube-prometheus-stack をインストールしていることを前提としています。 + +## 私たちが作るもの + +次のように、次のコンポーネントを Kubernetes クラスターにデプロイします。 + +``` ++--------------------------------------------------------------------------------------------------+ +| +------------------------------------+ | +| | loki-stack | | +| | | +-----------------+ | +| | +--------------+ +--------------+ | <-----------------(ログ)-------------- | Scalar 製品 | | +| | | Loki | | Promtail | | | | | +| | +--------------+ +--------------+ | | +-----------+ | | +| +------------------------------------+ | | ScalarDB | | | +| | +-----------+ | | +| +------------------------------------------------------+ | | | +| | kube-prometheus-stack | | +-----------+ | | +| | | | | ScalarDL | | | +| | +--------------+ +--------------+ +--------------+ | -----(監視)----> | +-----------+ | | +| | | Prometheus | | Alertmanager | | Grafana | | +-----------------+ | +| | +-------+------+ +------+-------+ +------+-------+ | | +| | | | | | | +| | +----------------+-----------------+ | | +| | | | | +| +--------------------------+---------------------------+ | +| | | +| | Kubernetes | ++----------------------------+---------------------------------------------------------------------+ + | <- localhost (127.0.0.1) に公開するか、ロードバランサーなどを使用してアクセスします + | + (HTTP 経由でダッシュボードにアクセスする) + | + +----+----+ + | ブラウザ | + +---------+ +``` + +## ステップ 1. カスタム値ファイルを準備する + +1. `loki-stack` helm chart のサンプル ファイル [scalar-loki-stack-custom-values.yaml](./conf/scalar-loki-stack-custom-values.yaml) を取得します。 + +## ステップ 2. `loki-stack` をデプロイする + +1. `grafana` helm リポジトリを追加します。 + ```console + helm repo add grafana https://grafana.github.io/helm-charts + ``` + +1. `loki-stack` helm chart をデプロイします。 + ```console + helm install scalar-logging-loki grafana/loki-stack -n monitoring -f scalar-loki-stack-custom-values.yaml + ``` + +## ステップ 3. Grafana 構成に Loki データ ソースを追加する + +1. Loki データ ソースの設定を `scalar-prometheus-custom-values.yaml` ファイルに追加します。 + ```yaml + grafana: + additionalDataSources: + - name: Loki + type: loki + uid: loki + url: http://scalar-logging-loki:3100/ + access: proxy + editable: false + isDefault: false + ``` + +1. 構成を適用します (`kube-prometheus-stack` のデプロイメントをアップグレードします)。 + ```console + helm upgrade scalar-monitoring prometheus-community/kube-prometheus-stack -n monitoring -f scalar-prometheus-custom-values.yaml + ``` + +## ステップ 4. Grafana ダッシュボードにアクセスする + +1. Loki をデータソースとして追加する + - Grafana http://localhost:3000 に移動します (minikube を使用する場合) + - `Explore` に移動して、追加された Loki を見つけます + - 収集されたログは `Explore` ページで確認できます。 + +## ステップ 5. `loki-stack` helm chartを削除する + +1. `loki-stack` をアンインストールします。 + ```console + helm uninstall scalar-logging-loki -n monitoring + ``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-monitoring.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-monitoring.mdx new file mode 100644 index 00000000..099154d4 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-monitoring.mdx @@ -0,0 +1,270 @@ +--- +tags: + - Community +--- + +# Helm Charts の入門 (Prometheus Operator を使用したモニタリング) + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Prometheus Operator (kube-prometheus-stack) を使用して Kubernetes 上で Scalar 製品の監視を開始する方法について説明します。 ここでは、テスト用の Mac または Linux 環境がすでにあることを前提としています。 このドキュメントでは **Minikube** を使用しますが、これから説明する手順はどの Kubernetes クラスターでも機能するはずです。 + +## 私たちが作るもの + +次のように、次のコンポーネントを Kubernetes クラスターにデプロイします。 + +``` ++--------------------------------------------------------------------------------------------------+ +| +------------------------------------------------------+ +-----------------+ | +| | kube-prometheus-stack | | Scalar 製品 | | +| | | | | | +| | +--------------+ +--------------+ +--------------+ | -----(監視)----> | +-----------+ | | +| | | Prometheus | | Alertmanager | | Grafana | | | | ScalarDB | | | +| | +-------+------+ +------+-------+ +------+-------+ | | +-----------+ | | +| | | | | | | +-----------+ | | +| | +----------------+-----------------+ | | | ScalarDL | | | +| | | | | +-----------+ | | +| +--------------------------+---------------------------+ +-----------------+ | +| | | +| | Kubernetes | ++----------------------------+---------------------------------------------------------------------+ + | <- localhost (127.0.0.1) に公開するか、ロードバランサーなどを使用してアクセスします + | + (HTTP 経由でダッシュボードにアクセスする) + | + +----+----+ + | ブラウザ | + +---------+ +``` + +## ステップ 1. Kubernetes クラスターを開始する + +まず、Kubernetes クラスターを準備する必要があります。 **minikube** 環境を使用する場合は、[Scalar Helm Charts の入門](getting-started-scalar-helm-charts.mdx) を参照してください。 すでに Kubernetes クラスターを開始している場合は、この手順をスキップできます。 + +## ステップ 2. カスタム値ファイルを準備する + +1. `kube-prometheus-stack` のサンプル ファイル [scalar-prometheus-custom-values.yaml](./conf/scalar-prometheus-custom-values.yaml) を保存します。 + +1. 次のように `scalar-prometheus-custom-values.yaml` にカスタム値を追加します。 + * 設定 + * `prometheus.service.type` を `LoadBalancer` に設定します。 + * `alertmanager.service.type` を `LoadBalancer` に設定します。 + * `grafana.service.type` を `LoadBalancer` に設定します。 + * `grafana.service.port` を `3000` に設定します。 + * 例 + ```yaml + alertmanager: + + service: + type: LoadBalancer + + ... + + grafana: + + service: + type: LoadBalancer + port: 3000 + + ... + + prometheus: + + service: + type: LoadBalancer + + ... + ``` + * 注記: + * Helm Chart を使用して Prometheus Operator デプロイメントをカスタマイズする場合は、Scalar 製品を監視するために次の構成を設定する必要があります。 + * Prometheus Operator が Scalar 製品の `ServiceMonitor` および `PrometheusRule` を検出できるように、`serviceMonitorSelectorNilUsesHelmValues` および `ruleSelectorNilUsesHelmValues` を `false` (デフォルトでは `true`) に設定します。 + + * Scalar Manager を使用する場合は、Scalar Manager が CPU およびメモリ リソースを収集できるように次の構成を設定する必要があります。 + * `kubeStateMetrics.enabled`、`nodeExporter.enabled`、および `kubelet.enabled` を `true` に設定します。 + + * Scalar Manager を使用する場合は、Scalar Manager が Grafana を組み込みきるように次の構成を設定する必要があります。 + * `grafana.ini.security.allow_embedding` および `grafana.ini.auth.anonymous.enabled` を `true` に設定します。 + * `grafana.ini.auth.anonymous.org_name` を使用中の組織に設定します。Scalar のサンプルを使う場合では、`Main Org.` に設定します。 + * `grafana.ini.auth.anonymous.org_role` を `Editor` に設定します。 + +## ステップ 3. `kube-prometheus-stack` をデプロイする + +1. `prometheus-community` helm リポジトリを追加します。 + ```console + helm repo add prometheus-community https://prometheus-community.github.io/helm-charts + ``` + +1. Kubernetes 上に名前空間 `monitoring` を作成します。 + ```console + kubectl create namespace monitoring + ``` + +1. `kube-prometheus-stack` をデプロイします。 + ```console + helm install scalar-monitoring prometheus-community/kube-prometheus-stack -n monitoring -f scalar-prometheus-custom-values.yaml + ``` + +## ステップ 4. Helm Chart を使用して Scalar 製品をデプロイ (またはアップグレード) + +* 注記: + * 最低限の手順を説明します。 ScalarDB および ScalarDL のデプロイメントについて詳しく知りたい場合は、以下のドキュメントを参照してください。 + * [Helm Charts 入門 (ScalarDB Server)](getting-started-scalardb.mdx) + * [Helm Charts 入門 (ScalarDL Ledger / Ledger のみ)](getting-started-scalardl-ledger.mdx) + * [Helm Charts 入門 (ScalarDL Ledger および Auditor / Auditor モード)](getting-started-scalardl-auditor.mdx) + +1. Scalar 製品の Prometheus 監視を有効にするには、カスタム値ファイルで次の構成に `true` を設定します。 + * 構成 + * `*.prometheusRule.enabled` + * `*.grafanaDashboard.enabled` + * `*.serviceMonitor.enabled` + * サンプル設定ファイル + * ScalarDB (scalardb-custom-values.yaml) + ```yaml + envoy: + prometheusRule: + enabled: true + grafanaDashboard: + enabled: true + serviceMonitor: + enabled: true + + scalardb: + prometheusRule: + enabled: true + grafanaDashboard: + enabled: true + serviceMonitor: + enabled: true + ``` + * ScalarDL Ledger (scalardl-ledger-custom-values.yaml) + ```yaml + envoy: + prometheusRule: + enabled: true + grafanaDashboard: + enabled: true + serviceMonitor: + enabled: true + + ledger: + prometheusRule: + enabled: true + grafanaDashboard: + enabled: true + serviceMonitor: + enabled: true + ``` + * ScalarDL Auditor (scalardl-auditor-custom-values.yaml) + ```yaml + envoy: + prometheusRule: + enabled: true + grafanaDashboard: + enabled: true + serviceMonitor: + enabled: true + + auditor: + prometheusRule: + enabled: true + grafanaDashboard: + enabled: true + serviceMonitor: + enabled: true + ``` + +1. 上記のカスタム値ファイルを含む Helm Charts を使用して、Scalar 製品をデプロイ (またはアップグレード) します。 + * 例 + * ScalarDB + ```console + helm install scalardb scalar-labs/scalardb -f ./scalardb-custom-values.yaml + ``` + ```console + helm upgrade scalardb scalar-labs/scalardb -f ./scalardb-custom-values.yaml + ``` + * ScalarDL Ledger + ```console + helm install scalardl-ledger scalar-labs/scalardl -f ./scalardl-ledger-custom-values.yaml + ``` + ```console + helm upgrade scalardl-ledger scalar-labs/scalardl -f ./scalardl-ledger-custom-values.yaml + ``` + * ScalarDL Auditor + ```console + helm install scalardl-auditor scalar-labs/scalardl-audit -f ./scalardl-auditor-custom-values.yaml + ``` + ```console + helm upgrade scalardl-auditor scalar-labs/scalardl-audit -f ./scalardl-auditor-custom-values.yaml + ``` + +## ステップ 5. ダッシュボードにアクセスする + +### minikube を使用する場合 + +1. 各サービス リソースを `localhost (127.0.0.1)` として公開するには、別のターミナルを開き、`minikube tunnel` コマンドを実行します。 + ```console + minikube tunnel + ``` + + `minikube tunnel` コマンドを実行すると、各サービスリソースの EXTERNAL-IP が `127.0.0.1` として表示されます。 + ```console + kubectl get svc -n monitoring scalar-monitoring-kube-pro-prometheus scalar-monitoring-kube-pro-alertmanager scalar-monitoring-grafana + ``` + 【コマンド実行結果】 + ```console + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + scalar-monitoring-kube-pro-prometheus LoadBalancer 10.98.11.12 127.0.0.1 9090:30550/TCP 26m + scalar-monitoring-kube-pro-alertmanager LoadBalancer 10.98.151.66 127.0.0.1 9093:31684/TCP 26m + scalar-monitoring-grafana LoadBalancer 10.103.19.4 127.0.0.1 3000:31948/TCP 26m + ``` + +1. 各ダッシュボードにアクセスします。 + * Prometheus + ```console + http://localhost:9090/ + ``` + * Alertmanager + ```console + http://localhost:9093/ + ``` + * Grafana + ```console + http://localhost:3000/ + ``` + * 注記: + * Grafana のユーザーとパスワードは以下で確認できます。 + * ユーザー + ```console + kubectl get secrets scalar-monitoring-grafana -n monitoring -o jsonpath='{.data.admin-user}' | base64 -d + ``` + * パスワード + ```console + kubectl get secrets scalar-monitoring-grafana -n monitoring -o jsonpath='{.data.admin-password}' | base64 -d + ``` + +### minikube 以外の Kubernetes を使用する場合 + +minikube 以外の Kubernetes クラスターを使用する場合は、各 Kubernetes クラスターの方式に従って LoadBalancer サービスにアクセスする必要があります。 たとえば、クラウド サービスによって提供されるロード バランサーや `kubectl port-forward` コマンドを使用します。 + +## ステップ 6. すべてのリソースを削除する + +Kubernetes クラスターでのモニタリング テストが完了したら、すべてのリソースを削除します。 + +1. `minikube tunnel` コマンドを終了します。 (minikubeを使用する場合) + ```console + Ctrl + C + ``` + +1. `kube-prometheus-stack` をアンインストールします。 + ```console + helm uninstall scalar-monitoring -n monitoring + ``` + +1. minikube を削除します。 (オプション / minikube を使用する場合) + ```console + minikube delete --all + ``` + * 注記: + * ScalarDB または ScalarDL をデプロイする場合は、minikube を削除する前にそれらを削除する必要があります。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalar-helm-charts.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalar-helm-charts.mdx new file mode 100644 index 00000000..11ca9c36 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalar-helm-charts.mdx @@ -0,0 +1,81 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +--- + +# Scalar Helm Charts の入門 + +このドキュメントでは、Kubernetes クラスター上でテスト環境として Scalar Helm Chart を開始する方法について説明します。 ここでは、テスト用の Mac または Linux 環境がすでにあることを前提としています。 このドキュメントでは **Minikube** を使用しますが、これから説明する手順はどの Kubernetes クラスターでも機能するはずです。 + +## ツール + +テストには次のツールを使用します。 + +1. minikube (他の Kubernetes ディストリビューションを使用する場合、minikube は必要ありません。) +1. kubectl +1. Helm +1. cfssl / cfssljson + +## ステップ 1. ツールをインストールする + +まず、このガイドで使用する次のツールをインストールする必要があります。 + +1. [minikubeドキュメント](https://minikube.sigs.k8s.io/docs/start/) に従って minikube をインストールします。 + +1. [Kubernetesドキュメント](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/) に従って kubectl をインストールします。 + +1. [Helmドキュメント](https://helm.sh/docs/intro/install/) に従って helm コマンドをインストールします。 + +1. [CFSSLドキュメント](https://github.com/cloudflare/cfssl) に従って cfssl と cfssljson をインストールします。 + +:::note + +以下のスタートガイドの手順を実行する場合は、`cfssl` および `cfssljson` コマンドをインストールする必要があります。 + +* [TLS を使用した ScalarDB Cluster](getting-started-scalardb-cluster-tls.mdx) +* [TLS を使用した ScalarDL Ledger および Auditor (Auditor モード)](getting-started-scalardl-auditor-tls.mdx) +* [ScalarDL Ledger (Ledger のみ)](getting-started-scalardl-ledger.mdx) +* [ScalarDL Ledger と Auditor (Auditor モード)](getting-started-scalardl-auditor.mdx) + +::: + +## ステップ 2. docker ドライバーで minikube を起動する (オプション / minikube を使用する場合) + +1. minikube を起動します。 + ```console + minikube start + ``` + +1. minikube とポッドのステータスを確認します。 + ```console + kubectl get pod -A + ``` + 【コマンド実行結果】 + ```console + NAMESPACE NAME READY STATUS RESTARTS AGE + kube-system coredns-64897985d-lbsfr 1/1 Running 1 (20h ago) 21h + kube-system etcd-minikube 1/1 Running 1 (20h ago) 21h + kube-system kube-apiserver-minikube 1/1 Running 1 (20h ago) 21h + kube-system kube-controller-manager-minikube 1/1 Running 1 (20h ago) 21h + kube-system kube-proxy-gsl6j 1/1 Running 1 (20h ago) 21h + kube-system kube-scheduler-minikube 1/1 Running 1 (20h ago) 21h + kube-system storage-provisioner 1/1 Running 2 (19s ago) 21h + ``` + minikube が適切に起動すると、いくつかのポッドが kube-system 名前空間で**実行中**であることがわかります。 + +## ステップ 3。 + +Kubernetes クラスターが起動したら、そのクラスター上で各 Scalar Helm Charts を試すことができます。 詳細については、以下のドキュメントを参照してください。 + +* [TLS を使用した ScalarDB Cluster](getting-started-scalardb-cluster-tls.mdx) +* [cert-manager を使用した TLS 対応 ScalarDB Cluster](getting-started-scalardb-cluster-tls-cert-manager.mdx) +* [ScalarDB Analytics with PostgreSQL](getting-started-scalardb-analytics-postgresql.mdx) +* [TLS を使用した ScalarDL Ledger および Auditor (Auditor モード)](getting-started-scalardl-auditor-tls.mdx) +* [cert-manager を使用した TLS による ScalarDL Ledger と ScalarDL Auditor (Auditor モード)](getting-started-scalardl-auditor-tls-cert-manager.mdx) +* [ScalarDL Ledger (Ledger のみ)](getting-started-scalardl-ledger.mdx) +* [ScalarDL Ledger と Auditor (Auditor モード)](getting-started-scalardl-auditor.mdx) +* [Prometheus Operator を使用した監視](getting-started-monitoring.mdx) + * [Loki スタックを使用したロギング](getting-started-logging.mdx) + * [Scalar Manager](getting-started-scalar-manager.mdx) +* [[非推奨] ScalarDB Server](getting-started-scalardb.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalar-manager.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalar-manager.mdx new file mode 100644 index 00000000..8061a249 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalar-manager.mdx @@ -0,0 +1,216 @@ +--- +tags: + - Enterprise Option +--- + +# Scalar Manager をデプロイする + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +[Scalar Manager](../scalar-manager/overview.mdx) は、Kubernetes クラスター環境内の ScalarDB および ScalarDL の集中管理および監視ソリューションであり、次のことが可能になります。 + +- ScalarDB または ScalarDL の可用性を確認します。 +- ScalarDB または ScalarDL が使用するデータベースでトランザクションの一貫性のある期間を作成する一時停止ジョブをスケジュールまたは実行します。 +- Grafana ダッシュボードを介して ScalarDB または ScalarDL の時系列メトリックとログを確認します。 + +このガイドでは、Scalar Helm Charts を使用して Kubernetes クラスターに Scalar Manager をデプロイしてアクセスする方法について説明します。 + +## 前提条件 + +Scalar Manager をデプロイする前に、次の操作を行う必要があります。 + +- [Scalar Helm Charts をはじめよう](getting-started-scalar-helm-charts.mdx)に記載されているツールをインストールします。 +- [Helm Charts をはじめよう (Prometheus Operator を使用したモニタリング)](getting-started-monitoring.mdx)の手順に従って、`kube-prometheus-stack` をデプロイします。 +- [Helm Charts をはじめよう (Loki Stack を使用したログ記録)](getting-started-logging.mdx)の手順に従って、`loki-stack` をデプロイします。 + +## デプロイアーキテクチャ図 + +以下は、Kubernetes クラスターにデプロイされたコンポーネントのアーキテクチャ図です。 + +``` ++--------------------------------------------------------------------------------------------------+ +| +----------------------+ | +| | scalar-manager | | +| | | | +| | +------------------+ | --------------------------(Manage)--------------------------+ | +| | | Scalar Manager | | | | +| | +------------------+ | | | +| +--+-------------------+ | | +| | | | +| +------------------------------------+ | | +| | loki-stack | V | +| | | +-----------------+ | +| | +--------------+ +--------------+ | <----------------(Log)--------------- | Scalar Products | | +| | | Loki | | Promtail | | | | | +| | +--------------+ +--------------+ | | +-----------+ | | +| +------------------------------------+ | | ScalarDB | | | +| | | +-----------+ | | +| +------------------------------------------------------+ | | | +| | kube-prometheus-stack | | +-----------+ | | +| | | | | ScalarDL | | | +| | +--------------+ +--------------+ +--------------+ | -----(Monitor)----> | +-----------+ | | +| | | Prometheus | | Alertmanager | | Grafana | | +-----------------+ | +| | +-------+------+ +------+-------+ +------+-------+ | | +| | | | | | | +| | +----------------+-----------------+ | | +| | | | | +| +--------------------------+---------------------------+ | +| | | | +| | | Kubernetes | ++----+-----------------------+---------------------------------------------------------------------+ + | | + Expose the environment to localhost (127.0.0.1) or use a load balancer to access it + | | + (Access the dashboard through HTTP) + | | ++----+----+ +----+----+ +| Browser | <-(Embed)-- + Browser | ++---------+ +---------+ +``` + +## ステップ 1. minikube を起動します + +**Terminal** を開き、次のコマンドを実行して minikube を起動します。 + +```console +minikube start +``` + +## ステップ 2. Grafana を埋め込めるように `kube-prometheus-stack` をアップグレードする + +`kube-prometheus-stack` のカスタム値ファイル (たとえば `scalar-prometheus-custom-values.yaml`) に、次の構成を追加するか、すでに存在する場合は修正します。 + +```yaml +kubeStateMetrics: + enabled: true + +nodeExporter: + enabled: true + +kubelet: + enabled: true + +grafana: + grafana.ini: + users: + default_theme: light + security: + allow_embedding: true + auth.anonymous: + enabled: true + org_name: "Main Org." + org_role: Editor +``` + +次に、次のコマンドを実行して Helm インストールをアップグレードします。 + +```console +helm upgrade scalar-monitoring prometheus-community/kube-prometheus-stack -n monitoring -f scalar-prometheus-custom-values.yaml +``` + +## ステップ 3. 環境変数を設定する + +次のコマンドを実行し、山括弧内の内容を説明に従って置き換えて、Scalar Manager の環境変数を設定します。 + +```console +SCALAR_MANAGER_RELEASE_NAME= +SCALAR_MANAGER_NAMESPACE= +SCALAR_MANAGER_CUSTOM_VALUES_FILE= +SCALAR_MANAGER_CHART_VERSION= +``` + +## ステップ 4. Scalar Manager のカスタム値ファイルを準備する + +次の手順に従って、Scalar Manager のカスタム値ファイルを準備します。 + +1. `scalar-manager-custom-values.yaml` という名前の空のファイルを作成します。 +1. [Scalar Manager のカスタム値ファイルを構成する](configure-custom-values-scalar-manager.mdx)の手順に従います。 + +## ステップ 5. `scalar-manager` をインストールしてデプロイする + +次のコマンドを実行して、`scalar-manager` Helm Chart をインストールしてデプロイします。 + +```console +helm install ${SCALAR_MANAGER_RELEASE_NAME} scalar-labs/scalar-manager -n ${SCALAR_MANAGER_NAMESPACE} -f ${SCALAR_MANAGER_CUSTOM_VALUES_FILE} --version ${SCALAR_MANAGER_CHART_VERSION} +``` + +## ステップ 6. Scalar Manager にアクセスする + +Scalar Manager にアクセスする方法は、Kubernetes クラスターに使用しているツールによって異なります。 + + + + Scalar Manager のサービスリソースをローカルホスト (127.0.0.1) として公開するには、別のターミナルを開き、`minikube tunnel` コマンドを実行します。 + + ```console + minikube tunnel + ``` + + Then, access Scalar Manager by going to http://localhost:8000. + + + minikube 以外の Kubernetes クラスターを使用している場合は、各 Kubernetes クラスターの方式に従って `LoadBalancer` サービスにアクセスする必要があります。たとえば、クラウドサービスプロバイダーが提供するロードバランサーを使用するか、`kubectl port-forward` コマンドを使用する必要があります。 + +:::note + +Scalar Manager は Grafana の外部 IP アドレスを検出し、その IP アドレスに基づいて Grafana を埋め込もうとします。そのため、Grafana サービスタイプを `LoadBalancer` として設定し、外部 IP アドレスにブラウザーからアクセスできる必要があります。 + +::: + + + +## 追加の詳細 + +このセクションでは、構成とリソース検出に関する追加の詳細について説明します。 + +### Scalar Manager のデプロイメントをアップグレードする + +Scalar Manager のデプロイメントをアップグレードするには、次のコマンドを実行します。 + +```console +helm upgrade ${SCALAR_MANAGER_RELEASE_NAME} scalar-labs/scalar-manager -n ${SCALAR_MANAGER_NAMESPACE} -f ${SCALAR_MANAGER_CUSTOM_VALUES_FILE} --version ${SCALAR_MANAGER_CHART_VERSION} +``` + +### Scalar Manager をアンインストールする + +Scalar Manager をアンインストールするには、次のコマンドを実行します。 + +```console +helm uninstall ${SCALAR_MANAGER_RELEASE_NAME} -n ${SCALAR_MANAGER_NAMESPACE} +``` + +### オプションの Scalar Manager 構成 + +Scalar Manager に設定できるオプションの構成については、[オプション設定](./configure-custom-values-scalar-manager.mdx#オプション設定) を参照してください。 + +### リソースの検出 + +Scalar Manager は、特定のラベルセレクターを使用して、クラスター内の次の Kubernetes リソースを検出します。 + +- 依存関係 + - Prometheus サービス + - Loki サービス + - Grafana サービス +- ターゲット + - ScalarDB Cluster のデプロイメント + - ScalarDL Ledger のデプロイメント + - ScalarDL Auditor のデプロイメント + +次のセクションでは、Scalar Manager がこれらのリソースを検出する方法について説明します。 + +#### 依存関係 + +Scalar Manager は、[kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack) および [loki-stack](https://github.com/grafana/helm-charts/tree/main/charts/loki-stack) Helm Chart に設定されているデフォルトのラベルと値を検索します。Scalar Manager が依存関係を検出するために使用するデフォルトのラベルと値の詳細については、[`api.applicationProperties` で設定できるプロパティ](./configure-custom-values-scalar-manager.mdx#apiapplicationPropertiesで設定できるプロパティ) を参照してください。 + +また、`kube-prometheus-stack` または `loki-stack` のインストール時に値をカスタマイズした場合は、Scalar Manager のカスタム値 `api.applicationProperties` のラベルセレクターを更新する必要があります。 + +#### ターゲット + +Scalar Manager は、次のラベルと値を使用して、ScalarDB Cluster、ScalarDL Ledger、および ScalarDL Auditor のデプロイメントを検索します。 + +- **ScalarDB Cluster:** `app.kubernetes.io/app=scalardb-cluster` +- **ScalarDL Ledger:** `app.kubernetes.io/app=ledger` +- **ScalarDL Auditor:** `app.kubernetes.io/app=auditor` + +Scalar Helm Charts は、ScalarDB Cluster、ScalarDL Ledger、および ScalarDL Auditor のデプロイメントに固定のラベルと値を使用するため、[Scalar Helm Charts](https://github.com/scalar-labs/helm-charts) を使用して ScalarDB と ScalarDL をインストールすると、Scalar Manager はこれらのデプロイメントを自動的に検出します。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardb-analytics-postgresql.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardb-analytics-postgresql.mdx new file mode 100644 index 00000000..5ff293c6 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardb-analytics-postgresql.mdx @@ -0,0 +1,532 @@ +--- +tags: + - Community +--- + +# Helm Charts の入門 (ScalarDB Analytics with PostgreSQL) + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このガイドでは、Kubernetes クラスターの Helm Chart をテスト環境として使用して、ScalarDB Analytics with PostgreSQL を開始する方法について説明します。 さらに、このガイドの内容は、テスト用に Mac または Linux 環境がすでにセットアップされていることを前提としています。 **minikube** について言及していますが、説明されている手順はどの Kubernetes クラスターでも機能するはずです。 + +## あなたが作成するもの + +次のコンポーネントを Kubernetes クラスターにデプロイします。 + +``` ++-------------------------------------------------------------------------------------------------------------------------------------------+ +| [Kubernetes クラスター] | +| | +| [ポッド] [ポッド] [ポッド] | +| | +| +------------------------------------+ | +| +---> | ScalarDB Analytics with PostgreSQL | ---+ +-----------------------------+ | +| | +------------------------------------+ | +---> | MySQL (「顧客」スキーマ) | <---+ | +| | | | +-----------------------------+ | | +| +-------------+ +---------+ | +------------------------------------+ | | | | +| | OLAP クライアント | ---> | サービス | ---+---> | ScalarDB Analytics with PostgreSQL | ---+---+ +---+ | +| +-------------+ +---------+ | +------------------------------------+ | | | | | +| | | | +-----------------------------+ | | | +| | +------------------------------------+ | +---> | PostgreSQL (「順序」スキーマ) | <---+ | | +| +---> | ScalarDB Analytics with PostgreSQL | ---+ +-----------------------------+ | | +| +------------------------------------+ | | +| | | +| +-------------+ | | +| | OLTP クライアント | ---(テスト OLTP ワークロードでサンプル データをロードする)-----------------------------------------------------------------------+ | +| +-------------+ | +| | ++-------------------------------------------------------------------------------------------------------------------------------------------+ +``` + +## ステップ 1. Kubernetes クラスターを開始する + +まず、Kubernetes クラスターを準備する必要があります。 **minikube** 環境を使用している場合は、[Scalar Helm Charts の入門](getting-started-scalar-helm-charts.mdx) を参照してください。 すでに Kubernetes クラスターを開始している場合は、この手順をスキップできます。 + +## ステップ 2. MySQL および PostgreSQL ポッドを開始する + +ScalarDB Analytics with PostgreSQL を含むScalarDBは、バックエンドデータベースとして数種類のデータベースシステムを利用できます。 このガイドでは、MySQL と PostgreSQL を使用します。 + +次のようにして、Kubernetes クラスターに MySQL と PostgreSQL をデプロイできます。 + +1. Bitnami Helm リポジトリを追加します。 + + ```console + helm repo add bitnami https://charts.bitnami.com/bitnami + ``` + +1. Helm リポジトリを更新します。 + + ```console + helm repo update bitnami + ``` + +1. MySQLをデプロイします。 + + ```console + helm install mysql-scalardb bitnami/mysql \ + --set auth.rootPassword=mysql \ + --set primary.persistence.enabled=false + ``` + +1. PostgreSQLをデプロイします。 + + ```console + helm install postgresql-scalardb bitnami/postgresql \ + --set auth.postgresPassword=postgres \ + --set primary.persistence.enabled=false + ``` + +1. MySQL および PostgreSQL ポッドが実行されているかどうかを確認します。 + + ```console + kubectl get pod + ``` + + 次の出力が表示されるはずです。 + + ```console + kubectl get pod + ``` + + 次のような結果が表示されます: + + ```console + NAME READY STATUS RESTARTS AGE + mysql-scalardb-0 1/1 Running 0 3m17s + postgresql-scalardb-0 1/1 Running 0 3m12s + ``` + +## ステップ 3. 作業ディレクトリを作成する + +いくつかの構成ファイルをローカルに作成するので、それらのファイル用の作業ディレクトリを作成します。 + + ```console + mkdir -p ~/scalardb-analytics-postgresql-test/ + ``` + +## ステップ 4. ScalarDB、ScalarDB Analytics with PostgreSQL、およびチャートのバージョンを設定します + +以下の 3 つの環境変数を設定します。 別のバージョンの ScalarDB および ScalarDB Analytics with PostgreSQL を使用する場合は、必ず使用するバージョンに設定してください。 + +:::note + +ScalarDB Analytics with PostgreSQL のマイナー バージョン (例: 3.10.x) を ScalarDB と同じにする必要がありますが、パッチのバージョンを一致させる必要はありません。 たとえば、ScalarDB 3.10.1 と ScalarDB Analytics with PostgreSQL 3.10.3 を併用できます。 + +::: + +```console +SCALARDB_VERSION=3.10.1 +``` + +```console +SCALARDB_ANALYTICS_WITH_POSTGRESQL_VERSION=3.10.3 +``` + +```console +CHART_VERSION=$(helm search repo scalar-labs/scalardb-analytics-postgresql -l | grep -e ${SCALARDB_ANALYTICS_WITH_POSTGRESQL_VERSION} | awk '{print $2}' | sort --version-sort -r | head -n 1) +``` + +## ステップ 5. OLTP トランザクションを実行して、サンプル データを MySQL および PostgreSQL にロードします + +ScalarDB Analytics with PostgreSQL を導入する前に、OLTPトランザクションを実行してサンプルデータを作成します。 + +1. Kubernetes クラスターで OLTP クライアント ポッドを開始します。 + + ```console + kubectl run oltp-client --image eclipse-temurin:8-jdk-jammy --env SCALARDB_VERSION=${SCALARDB_VERSION} -- sleep inf + ``` + +1. OLTP クライアント ポッドが実行されているかどうかを確認します。 + + ```console + kubectl get pod oltp-client + ``` + + 次の出力が表示されるはずです。 + + ```console + kubectl get pod oltp-client + ``` + + 次のような結果が表示されます: + + ```console + NAME READY STATUS RESTARTS AGE + oltp-client 1/1 Running 0 17s + ``` + +1. OLTP クライアント ポッドで bash を実行します。 + + ```console + kubectl exec -it oltp-client -- bash + ``` + + この手順の後、OLTP クライアント ポッドで各コマンドを実行します。 + +1. git および curl コマンドを OLTP クライアント ポッドにインストールします。 + + ```console + apt update && apt install -y curl git + ``` + +1. ScalarDB サンプル リポジトリのクローンを作成します。 + + ```console + git clone https://github.com/scalar-labs/scalardb-samples.git + ``` + +1. ディレクトリ `scalardb-samples/multi-storage-transaction-sample/` に移動します。 + + ```console + cd scalardb-samples/multi-storage-transaction-sample/ + ``` + + ```console + pwd + ``` + + 次の出力が表示されるはずです。 + + ```console + # pwd + /scalardb-samples/multi-storage-transaction-sample + ``` + +1. Kubernetes クラスター内の MySQL および PostgreSQL にアクセスするための構成ファイル (`database.properties`) を作成します。 + + ```console + cat << 'EOF' > database.properties + scalar.db.storage=multi-storage + scalar.db.multi_storage.storages=storage0,storage1 + + # Storage 0 + scalar.db.multi_storage.storages.storage0.storage=jdbc + scalar.db.multi_storage.storages.storage0.contact_points=jdbc:mysql://mysql-scalardb.default.svc.cluster.local:3306/ + scalar.db.multi_storage.storages.storage0.username=root + scalar.db.multi_storage.storages.storage0.password=mysql + + # Storage 1 + scalar.db.multi_storage.storages.storage1.storage=jdbc + scalar.db.multi_storage.storages.storage1.contact_points=jdbc:postgresql://postgresql-scalardb.default.svc.cluster.local:5432/postgres + scalar.db.multi_storage.storages.storage1.username=postgres + scalar.db.multi_storage.storages.storage1.password=postgres + + scalar.db.multi_storage.namespace_mapping=customer:storage0,order:storage1 + scalar.db.multi_storage.default_storage=storage1 + EOF + ``` + +1. [ScalarDB Releases](https://github.com/scalar-labs/scalardb/releases) から Schema Loader をダウンロードします。 + + ```console + curl -OL https://github.com/scalar-labs/scalardb/releases/download/v${SCALARDB_VERSION}/scalardb-schema-loader-${SCALARDB_VERSION}.jar + ``` + +1. Schema Loader を実行してサンプル テーブルを作成します。 + + ```console + java -jar scalardb-schema-loader-${SCALARDB_VERSION}.jar --config database.properties --schema-file schema.json --coordinator + ``` + +1. サンプル ワークロードの初期データをロードします。 + + ```console + ./gradlew run --args="LoadInitialData" + ``` + +1. OLTP トランザクションのサンプル ワークロードを実行します。 これらのコマンドを実行すると、サンプル データとしていくつかの `order` エントリが作成されます。 + + ```console + ./gradlew run --args="PlaceOrder 1 1:3,2:2" + ``` + + ```console + ./gradlew run --args="PlaceOrder 1 5:1" + ``` + + ```console + ./gradlew run --args="PlaceOrder 2 3:1,4:1" + ``` + + ```console + ./gradlew run --args="PlaceOrder 2 2:1" + ``` + + ```console + ./gradlew run --args="PlaceOrder 3 1:1" + ``` + + ```console + ./gradlew run --args="PlaceOrder 3 2:1" + ``` + + ```console + ./gradlew run --args="PlaceOrder 3 3:1" + ``` + + ```console + ./gradlew run --args="PlaceOrder 3 5:1" + ``` + + +1. OLTPクライアントを終了します。 + + ```console + exit + ``` + +## ステップ 6. ScalarDB Analytics with PostgreSQL のデプロイ + +バックエンドデータベースにScalarDB経由でサンプルデータを作成した後、ScalarDB Analytics with PostgreSQL をデプロイします。 + +1. ScalarDB Analytics with PostgreSQL のカスタム値ファイル (`scalardb-analytics-postgresql-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ~/scalardb-analytics-postgresql-test/scalardb-analytics-postgresql-custom-values.yaml + scalardbAnalyticsPostgreSQL: + databaseProperties: | + scalar.db.storage=multi-storage + scalar.db.multi_storage.storages=storage0,storage1 + + # Storage 0 + scalar.db.multi_storage.storages.storage0.storage=jdbc + scalar.db.multi_storage.storages.storage0.contact_points=jdbc:mysql://mysql-scalardb.default.svc.cluster.local:3306/ + scalar.db.multi_storage.storages.storage0.username=root + scalar.db.multi_storage.storages.storage0.password=mysql + + # Storage 1 + scalar.db.multi_storage.storages.storage1.storage=jdbc + scalar.db.multi_storage.storages.storage1.contact_points=jdbc:postgresql://postgresql-scalardb.default.svc.cluster.local:5432/postgres + scalar.db.multi_storage.storages.storage1.username=postgres + scalar.db.multi_storage.storages.storage1.password=postgres + + scalar.db.multi_storage.namespace_mapping=customer:storage0,order:storage1 + scalar.db.multi_storage.default_storage=storage1 + schemaImporter: + namespaces: + - customer + - order + EOF + ``` + +1. PostgreSQL のスーパーユーザー パスワードを設定するためのシークレット リソースを作成します。 + + ```console + kubectl create secret generic scalardb-analytics-postgresql-superuser-password --from-literal=superuser-password=scalardb-analytics + ``` + +1. ScalarDB Analytics with PostgreSQL を導入します。 + + ```console + helm install scalardb-analytics-postgresql scalar-labs/scalardb-analytics-postgresql -n default -f ~/scalardb-analytics-postgresql-test/scalardb-analytics-postgresql-custom-values.yaml --version ${CHART_VERSION} + ``` + +## ステップ 7. OLAP クライアント ポッドを実行する + +ScalarDB Analytics with PostgreSQL を介して一部のクエリを実行するには、OLAP クライアント ポッドを実行します。 + +1. Kubernetes クラスターで OLAP クライアント ポッドを開始します。 + + ```console + kubectl run olap-client --image postgres:latest -- sleep inf + ``` + +1. OLAP クライアント ポッドが実行されているかどうかを確認します。 + + ```console + kubectl get pod olap-client + ``` + + 次の出力が表示されるはずです。 + + ```console + kubectl get pod olap-client + ``` + + 次のような結果が表示されます: + + ```console + NAME READY STATUS RESTARTS AGE + olap-client 1/1 Running 0 10s + ``` + +## ステップ 8. ScalarDB Analytics with PostgreSQL を介してサンプル クエリを実行する + +OLAP クライアント ポッドを実行した後、ScalarDB Analytics with PostgreSQL を介していくつかのクエリを実行できます。 + +1. OLAP クライアント ポッドで bash を実行します。 + + ```console + kubectl exec -it olap-client -- bash + ``` + + この手順の後、OLAP クライアント ポッドで各コマンドを実行します。 + +1. psqlコマンドを実行して ScalarDB Analytics with PostgreSQL にアクセスします。 + + ```console + psql -h scalardb-analytics-postgresql -p 5432 -U postgres -d scalardb + ``` + + パスワードは `scalardb-analytics` です。 + +1. `customer.customers` テーブルのサンプル データを読み取ります。 + + ```sql + SELECT * FROM customer.customers; + ``` + + 次の出力が表示されるはずです。 + + ```sql + customer_id | name | credit_limit | credit_total + -------------+---------------+--------------+-------------- + 1 | Yamada Taro | 10000 | 10000 + 2 | Yamada Hanako | 10000 | 9500 + 3 | Suzuki Ichiro | 10000 | 8500 + (3 rows) + ``` + +1. `order.orders` テーブルのサンプル データを読み取ります。 + + ```sql + SELECT * FROM "order".orders; + ``` + + 次の出力が表示されるはずです。 + + ```sql + scalardb=# SELECT * FROM "order".orders; + customer_id | timestamp | order_id + -------------+---------------+-------------------------------------- + 1 | 1700124015601 | 5ae2a41b-990d-4a16-9700-39355e29adf8 + 1 | 1700124021273 | f3f23d93-3862-48be-8a57-8368b7c8689e + 2 | 1700124028182 | 696a895a-8998-4c3b-b112-4d5763bfcfd8 + 2 | 1700124036158 | 9215d63a-a9a2-4471-a990-45897f091ca5 + 3 | 1700124043744 | 9be70cd4-4f93-4753-9d89-68e250b2ac51 + 3 | 1700124051162 | 4e8ce2d2-488c-40d6-aa52-d9ecabfc68a8 + 3 | 1700124058096 | 658b6682-2819-41f2-91ee-2802a1f02857 + 3 | 1700124071240 | 4e2f94f4-53ec-4570-af98-7c648d8ed80f + (8 rows) + ``` + +1. `order.statements` テーブルのサンプル データを読み取ります。 + + ```sql + SELECT * FROM "order".statements; + ``` + + 次の出力が表示されるはずです。 + + ```sql + scalardb=# SELECT * FROM "order".statements; + order_id | item_id | count + --------------------------------------+---------+------- + 5ae2a41b-990d-4a16-9700-39355e29adf8 | 2 | 2 + 5ae2a41b-990d-4a16-9700-39355e29adf8 | 1 | 3 + f3f23d93-3862-48be-8a57-8368b7c8689e | 5 | 1 + 696a895a-8998-4c3b-b112-4d5763bfcfd8 | 4 | 1 + 696a895a-8998-4c3b-b112-4d5763bfcfd8 | 3 | 1 + 9215d63a-a9a2-4471-a990-45897f091ca5 | 2 | 1 + 9be70cd4-4f93-4753-9d89-68e250b2ac51 | 1 | 1 + 4e8ce2d2-488c-40d6-aa52-d9ecabfc68a8 | 2 | 1 + 658b6682-2819-41f2-91ee-2802a1f02857 | 3 | 1 + 4e2f94f4-53ec-4570-af98-7c648d8ed80f | 5 | 1 + (10 rows) + ``` + +1. `order.items` テーブルのサンプル データを読み取ります。 + + ```sql + SELECT * FROM "order".items; + ``` + + 次の出力が表示されるはずです。 + + ```sql + scalardb=# SELECT * FROM "order".items; + item_id | name | price + ---------+--------+------- + 5 | Melon | 3000 + 2 | Orange | 2000 + 4 | Mango | 5000 + 1 | Apple | 1000 + 3 | Grape | 2500 + (5 rows) + ``` + +1. `JOIN` クエリを実行します。 例えば以下のように各ユーザーのクレジット残高情報を確認できます。 + + ```sql + SELECT * FROM ( + SELECT c.name, c.credit_limit - c.credit_total AS remaining, array_agg(i.name) OVER (PARTITION BY c.name) AS items + FROM "order".orders o + JOIN customer.customers c ON o.customer_id = c.customer_id + JOIN "order".statements s ON o.order_id = s.order_id + JOIN "order".items i ON s.item_id = i.item_id + ) AS remaining_info GROUP BY name, remaining, items; + ``` + + 次の出力が表示されるはずです。 + + ```sql + scalardb=# SELECT * FROM ( + scalardb(# SELECT c.name, c.credit_limit - c.credit_total AS remaining, array_agg(i.name) OVER (PARTITION BY c.name) AS items + scalardb(# FROM "order".orders o + scalardb(# JOIN customer.customers c ON o.customer_id = c.customer_id + scalardb(# JOIN "order".statements s ON o.order_id = s.order_id + scalardb(# JOIN "order".items i ON s.item_id = i.item_id + scalardb(# ) AS remaining_info GROUP BY name, remaining, items; + name | remaining | items + ---------------+-----------+---------------------------- + Suzuki Ichiro | 1500 | {Grape,Orange,Apple,Melon} + Yamada Hanako | 500 | {Orange,Grape,Mango} + Yamada Taro | 0 | {Orange,Melon,Apple} + (3 rows) + ``` + +1. psql コマンドを終了します。 + + ```console + \q + ``` + +1. OLAP クライアント ポッドを終了します。 + + ```console + exit + ``` + +## ステップ 9. すべてのリソースを削除する + +Kubernetes クラスターで ScalarDB Analytics with PostgreSQL テストを完了したら、すべてのリソースを削除します。 + +1. MySQL、PostgreSQL、および ScalarDB Analytics with PostgreSQL をアンインストールします。 + + ```console + helm uninstall mysql-scalardb postgresql-scalardb scalardb-analytics-postgresql + ``` + +1. クライアント ポッドを削除します。 + + ```console + kubectl delete pod oltp-client olap-client --grace-period 0 + ``` + +1. 秘密リソースを削除します。 + + ```console + kubectl delete secrets scalardb-analytics-postgresql-superuser-password + ``` + +1. 作業ディレクトリとサンプル ファイルを削除します。 + + ```console + cd ~ + ``` + + ```console + rm -rf ~/scalardb-analytics-postgresql-test/ + ``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardb-cluster-tls-cert-manager.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardb-cluster-tls-cert-manager.mdx new file mode 100644 index 00000000..808ea744 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardb-cluster-tls-cert-manager.mdx @@ -0,0 +1,595 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +--- + +# Helm チャート入門 (cert-manager を使用した TLS 対応 ScalarDB Cluster) + +このチュートリアルでは、テスト環境の Kubernetes クラスターで Helm Charts と cert-manager を使用して、TLS 構成の ScalarDB Cluster を開始する方法について説明します。開始する前に、テスト用の Mac または Linux 環境がすでに用意されている必要があります。また、このチュートリアルでは **minikube** の使用について説明していますが、説明されている手順はどの Kubernetes クラスターでも機能するはずです。 + +## 要件 + +* ScalarDB Cluster のライセンスキー (試用ライセンスまたは商用ライセンス) が必要です。ライセンスキーをお持ちでない場合は、[お問い合わせ](https://www.scalar-labs.com/contact) ください。 +* TLS をサポートする ScalarDB Cluster 3.12 以降を使用する必要があります。 + +## 作成するもの + +このチュートリアルでは、次の方法で Kubernetes クラスターに次のコンポーネントをデプロイします。 + +``` ++----------------------------------------------------------------------------------------------------------------------------------------------------+ +| [Kubernetes Cluster] | +| [Pod] [Pod] [Pod] | +| | +| +-------+ +------------------------+ | +| +---> | Envoy | ---+ +---> | ScalarDB Cluster node | ---+ | +| [Pod] | +-------+ | | +------------------------+ | | +| | | | | | +| +-----------+ +---------+ | +-------+ | +--------------------+ | +------------------------+ | +---------------+ | +| | Client | ---> | Service | ---+---> | Envoy | ---+---> | Service | ---+---> | ScalarDB Cluster node | ---+---> | PostgreSQL | | +| | (SQL CLI) | | (Envoy) | | +-------+ | | (ScalarDB Cluster) | | +------------------------+ | | (For Ledger) | | +| +-----------+ +---------+ | | +--------------------+ | | +---------------+ | +| | +-------+ | | +------------------------+ | | +| +---> | Envoy | ---+ +---> | ScalarDB Cluster node | ---+ | +| +-------+ +------------------------+ | +| | +| +----------------------------------------------------------------------------------+ +---------------------+ | +| | cert-manager (create private key and certificate for Envoy and ScalarDB Cluster) | | Issuer (Private CA) | | +| +----------------------------------------------------------------------------------+ +---------------------+ | +| | ++----------------------------------------------------------------------------------------------------------------------------------------------------+ +``` + +cert-manager は、TLS 接続用に次の秘密鍵と証明書ファイルを自動的に作成します。 + +``` + +----------------------+ + +---> | For Scalar Envoy | + | +----------------------+ + | | tls.key | + | | tls.crt | ++-------------------------+ | +----------------------+ +| Issuer (Self-signed CA) | ---(Sign certificates)---+ ++-------------------------+ | +----------------------+ +| tls.key | +---> | For ScalarDB Cluster | +| tls.crt | +----------------------+ +| ca.crt | | tls.key | ++-------------------------+ | tls.crt | + +----------------------+ +``` + +Scalar Helm Charts は、Envoy および ScalarDB Cluster の各秘密キーと証明書ファイルを次のように自動的にマウントし、各接続で TLS を有効にします。ルート CA 証明書ファイルはクライアントに手動でマウントします。 + +``` ++-------------------------------------+ +------------------------------------------------+ +--------------------------------+ +| Client | ---(CRUD/SQL requests)---> | Envoy for ScalarDB Cluster | ---> | ScalarDB Cluster nodes | ++-------------------------------------+ +------------------------------------------------+ +--------------------------------+ +| ca.crt (to verify tls.crt of Envoy) | | tls.key | | tls.key | ++-------------------------------------+ | tls.crt | | tls.crt | + | ca.crt (to verify tls.crt of ScalarDB Cluster) | | ca.crt (to check health) | + +------------------------------------------------+ +--------------------------------+ +``` + +ScalarDB Cluster 関連コンポーネント間には、次の接続が存在します。 + +* **`クライアント - ScalarDB Cluster の Envoy`:** CRUD API または SQL API 関数を実行すると、クライアントは ScalarDB Cluster の Envoy にアクセスします。 +* **`ScalarDB Cluster の Envoy - ScalarDB Cluster`:** Envoy は ScalarDB Cluster の前で L7 (gRPC) ロードバランサーとして機能します。 +* **`ScalarDB Cluster ノード - ScalarDB Cluster ノード`:** ScalarDB Cluster ノードは他の ScalarDB Cluster ノードにアクセスします。つまり、クラスターの内部通信はすべての ScalarDB Cluster ノード間で行われます。 + +## ステップ1. Kubernetesクラスターを起動してツールをインストールする + +Kubernetes クラスターを準備し、いくつかのツール (`kubectl`、`helm`、`cfssl`、および `cfssljson`) をインストールする必要があります。インストール方法の詳細については、[Scalar Helm Charts の使用開始](getting-started-scalar-helm-charts.mdx) を参照してください。 + +## ステップ2. PostgreSQLコンテナを起動する + +ScalarDB Cluster では、バックエンドデータベースとして何らかのデータベースシステムを使用する必要があります。このチュートリアルでは、PostgreSQL を使用します。 + +次のようにして Kubernetes クラスターに PostgreSQL をデプロイできます。 + +1. Bitnami helm リポジトリを追加します。 + + ```console + helm repo add bitnami https://charts.bitnami.com/bitnami + ``` + +1. ScalarDB Cluster 用に PostgreSQL をデプロイします。 + + ```console + helm install postgresql-scalardb-cluster bitnami/postgresql \ + --set auth.postgresPassword=postgres \ + --set primary.persistence.enabled=false \ + -n default + ``` + +1. PostgreSQL コンテナが実行されているかどうかを確認します。 + + ```console + kubectl get pod -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + postgresql-scalardb-cluster-0 1/1 Running 0 34s + ``` + +## ステップ3. 作業ディレクトリを作成する + +ローカルにいくつかの設定ファイルを作成します。必ずそれらのファイル用の作業ディレクトリを作成してください。 + +1. 作業ディレクトリを作成します。 + + ```console + mkdir -p ${HOME}/scalardb-cluster-test/ + ``` + +## ステップ4. cert-manager と issuer リソースをデプロイする + +このチュートリアルでは、cert-manager を使用して秘密鍵と証明書を発行および管理します。次のようにして、Kubernetes クラスターに cert-manager をデプロイできます。 + +1. Jetstack helm リポジトリを追加します。 + + ```console + helm repo add jetstack https://charts.jetstack.io + ``` + +1. cert-manager をデプロイします。 + + ```console + helm install cert-manager jetstack/cert-manager \ + --create-namespace \ + --set installCRDs=true \ + -n cert-manager + ``` + +1. cert-manager コンテナが実行されているかどうかを確認します。 + + ```console + kubectl get pod -n cert-manager + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + cert-manager-6dc66985d4-6lvtt 1/1 Running 0 26s + cert-manager-cainjector-c7d4dbdd9-xlrpn 1/1 Running 0 26s + cert-manager-webhook-847d7676c9-ckcz2 1/1 Running 0 26s + ``` + +1. 作業ディレクトリを `${HOME}/scalardb-cluster-test/` に変更します。 + + ```console + cd ${HOME}/scalardb-cluster-test/ + ``` + +1. プライベート CA のカスタム値ファイル (`private-ca-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardb-cluster-test/private-ca-custom-values.yaml + apiVersion: cert-manager.io/v1 + kind: Issuer + metadata: + name: self-signed-issuer + spec: + selfSigned: {} + --- + apiVersion: cert-manager.io/v1 + kind: Certificate + metadata: + name: self-signed-ca-cert + spec: + isCA: true + commonName: self-signed-ca + secretName: self-signed-ca-cert-secret + privateKey: + algorithm: ECDSA + size: 256 + issuerRef: + name: self-signed-issuer + kind: Issuer + group: cert-manager.io + --- + apiVersion: cert-manager.io/v1 + kind: Issuer + metadata: + name: self-signed-ca + spec: + ca: + secretName: self-signed-ca-cert-secret + EOF + ``` + +1. 自己署名 CA を展開します。 + + ```console + kubectl apply -f ./private-ca-custom-values.yaml + ``` + +1. 発行者リソースが `True` であるかどうかを確認します。 + + ```console + kubectl get issuer + ``` + + [コマンド実行結果] + + ```console + NAME READY AGE + self-signed-ca True 6s + self-signed-issuer True 6s + ``` + +## ステップ 5. Helm Charts を使用して Kubernetes クラスターに ScalarDB Cluster をデプロイする + +1. Scalar Helm Charts リポジトリを追加します。 + + ```console + helm repo add scalar-labs https://scalar-labs.github.io/helm-charts + ``` + +1. ライセンス キーと証明書を環境変数として設定します。ライセンスキーがない場合は、[お問い合わせ](https://www.scalar-labs.com/contact) ください。`` の値の詳細については、[製品ライセンスキーを構成する方法](https://scalardb.scalar-labs.com/docs/latest/scalar-licensing/) を参照してください。 + + ```console + SCALAR_DB_CLUSTER_LICENSE_KEY='' + SCALAR_DB_CLUSTER_LICENSE_CHECK_CERT_PEM='' + ``` + +1. ScalarDB Cluster のカスタム値ファイル (`scalardb-cluster-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardb-cluster-test/scalardb-cluster-custom-values.yaml + envoy: + + enabled: true + + tls: + downstream: + enabled: true + certManager: + enabled: true + issuerRef: + name: self-signed-ca + dnsNames: + - envoy.scalar.example.com + upstream: + enabled: true + overrideAuthority: "cluster.scalardb.example.com" + + scalardbCluster: + + image: + repository: "ghcr.io/scalar-labs/scalardb-cluster-node-byol-premium" + + scalardbClusterNodeProperties: | + ### Necessary configurations for deployment on Kuberetes + 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.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} + scalar.db.storage=jdbc + + ### SQL configurations + scalar.db.sql.enabled=true + + ### Auth configurations + scalar.db.cluster.auth.enabled=true + scalar.db.cross_partition_scan.enabled=true + + ### TLS configurations + scalar.db.cluster.tls.enabled=true + scalar.db.cluster.tls.ca_root_cert_path=/tls/scalardb-cluster/certs/ca.crt + scalar.db.cluster.node.tls.cert_chain_path=/tls/scalardb-cluster/certs/tls.crt + scalar.db.cluster.node.tls.private_key_path=/tls/scalardb-cluster/certs/tls.key + scalar.db.cluster.tls.override_authority=cluster.scalardb.example.com + + ### 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} + + tls: + enabled: true + overrideAuthority: "cluster.scalardb.example.com" + certManager: + enabled: true + issuerRef: + name: self-signed-ca + dnsNames: + - cluster.scalardb.example.com + + secretName: "scalardb-credentials-secret" + EOF + ``` + +1. 資格情報とライセンスキーを含む `scalardb-credentials-secret` という名前のシークレットリソースを作成します。 + + ```console + 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 + ``` + +1. ScalarDB Cluster のチャートバージョンを設定します。 + + ```console + SCALAR_DB_CLUSTER_VERSION=3.12.2 + 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) + ``` + +1. ScalarDB Cluster をデプロイします。 + + ```console + helm install scalardb-cluster scalar-labs/scalardb-cluster -f ${HOME}/scalardb-cluster-test/scalardb-cluster-custom-values.yaml --version ${SCALAR_DB_CLUSTER_CHART_VERSION} -n default + ``` + +1. ScalarDB Cluster ポッドがデプロイされているかどうかを確認します。 + + ```console + kubectl get pod -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + postgresql-scalardb-cluster-0 1/1 Running 0 4m30s + scalardb-cluster-envoy-7cc948dfb-4rb8l 1/1 Running 0 18s + scalardb-cluster-envoy-7cc948dfb-hwt96 1/1 Running 0 18s + scalardb-cluster-envoy-7cc948dfb-rzbrx 1/1 Running 0 18s + scalardb-cluster-node-7c6959c79d-445kj 1/1 Running 0 18s + scalardb-cluster-node-7c6959c79d-4z54q 1/1 Running 0 18s + scalardb-cluster-node-7c6959c79d-vcv96 1/1 Running 0 18s + ``` + + ScalarDB Cluster ポッドが適切にデプロイされている場合、それらのポッドの `STATUS` 列には `Running` と表示されます。 + +1. ScalarDB Cluster サービスがデプロイされているかどうかを確認します。 + + ```console + kubectl get svc -n default + ``` + + [コマンド実行結果] + + ```console + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + kubernetes ClusterIP 10.96.0.1 443/TCP 7h34m + postgresql-scalardb-cluster ClusterIP 10.96.92.27 5432/TCP 4m52s + postgresql-scalardb-cluster-hl ClusterIP None 5432/TCP 4m52s + scalardb-cluster-envoy ClusterIP 10.96.250.175 60053/TCP 40s + scalardb-cluster-envoy-metrics ClusterIP 10.96.40.197 9001/TCP 40s + scalardb-cluster-headless ClusterIP None 60053/TCP 40s + scalardb-cluster-metrics ClusterIP 10.96.199.135 9080/TCP 40s + ``` + + ScalarDB Cluster サービスが適切にデプロイされている場合は、`CLUSTER-IP` 列にプライベート IP アドレスが表示されます。 + +:::note + +`postgresql-scalardb-cluster-hl` と `scalardb-cluster-headless` の `CLUSTER-IP` 値は、IP アドレスがないため `None` になります。 + +::: + +## ステップ6. クライアントコンテナを起動する + +CA 証明書ファイルはクライアントコンテナーで使用します。そのため、シークレットリソースを作成し、それをクライアントコンテナーにマウントする必要があります。 + +1. `client-ca-cert` という名前のシークレットリソースを作成します。 + + ```console + kubectl create secret generic client-ca-cert --from-file=ca.crt=<(kubectl get secret self-signed-ca-cert-secret -o "jsonpath={.data['ca\.crt']}" | base64 -d) -n default + ``` + +1. クライアントポッドのマニフェストファイル (`scalardb-cluster-client-pod.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardb-cluster-test/scalardb-cluster-client-pod.yaml + apiVersion: v1 + kind: Pod + metadata: + name: "scalardb-cluster-client" + spec: + containers: + - name: scalardb-cluster-client + image: eclipse-temurin:8-jre-jammy + command: ['sleep'] + args: ['inf'] + env: + - name: SCALAR_DB_CLUSTER_VERSION + value: SCALAR_DB_CLUSTER_CLIENT_POD_SCALAR_DB_CLUSTER_VERSION + volumeMounts: + - name: "client-ca-cert" + mountPath: "/certs/" + readOnly: true + volumes: + - name: "client-ca-cert" + secret: + secretName: "client-ca-cert" + restartPolicy: Never + EOF + ``` + +1. マニフェストファイルで ScalarDB Cluster のバージョンを設定します。 + + ```console + sed -i s/SCALAR_DB_CLUSTER_CLIENT_POD_SCALAR_DB_CLUSTER_VERSION/${SCALAR_DB_CLUSTER_VERSION}/ ${HOME}/scalardb-cluster-test/scalardb-cluster-client-pod.yaml + ``` + +1. クライアントポッドをデプロイします。 + + ```console + kubectl apply -f ${HOME}/scalardb-cluster-test/scalardb-cluster-client-pod.yaml -n default + ``` + +1. クライアントコンテナーが実行されているかどうかを確認します。 + + ```console + kubectl get pod scalardb-cluster-client -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + scalardb-cluster-client 1/1 Running 0 26s + ``` + +## ステップ7. クライアントコンテナで ScalarDB Cluster SQL CLI を実行する + +1. クライアントコンテナーで bash を実行します。 + + ```console + kubectl exec -it scalardb-cluster-client -n default -- bash + ``` + + 次の手順のコマンドは、クライアントコンテナーで実行する必要があります。 + +1. [リリース](https://github.com/scalar-labs/scalardb/releases)から ScalarDB Cluster SQL CLI をダウンロードします。 + + ```console + curl -OL https://github.com/scalar-labs/scalardb/releases/download/v${SCALAR_DB_CLUSTER_VERSION}/scalardb-cluster-sql-cli-${SCALAR_DB_CLUSTER_VERSION}-all.jar + ``` + +1. `database.properties` ファイルを作成し、設定を追加します。 + + ```console + cat << 'EOF' > /database.properties + # ScalarDB Cluster configurations + scalar.db.sql.connection_mode=cluster + scalar.db.sql.cluster_mode.contact_points=indirect:scalardb-cluster-envoy.default.svc.cluster.local + + # Auth configurations + scalar.db.cluster.auth.enabled=true + scalar.db.sql.cluster_mode.username=admin + scalar.db.sql.cluster_mode.password=admin + + # TLS configurations + scalar.db.cluster.tls.enabled=true + scalar.db.cluster.tls.ca_root_cert_path=/certs/ca.crt + scalar.db.cluster.tls.override_authority=envoy.scalar.example.com + EOF + ``` + +1. ScalarDB Cluster SQL CLI を実行します。 + + ```console + java -jar /scalardb-cluster-sql-cli-${SCALAR_DB_CLUSTER_VERSION}-all.jar --config /database.properties + ``` + +1. `ns` という名前のサンプル名前空間を作成します。 + + ```sql + CREATE NAMESPACE ns; + ``` + +1. 名前空間 `ns` の下に `tbl` という名前のサンプル テーブルを作成します。 + + ```sql + CREATE TABLE ns.tbl (a INT, b INT, c INT, PRIMARY KEY(a, b)); + ``` + +1. サンプルレコードを挿入します。 + + ```sql + INSERT INTO ns.tbl VALUES (1,2,3), (4,5,6), (7,8,9); + ``` + +1. 挿入したサンプルレコードを選択します。 + + ```sql + SELECT * FROM ns.tbl; + ``` + + [コマンド実行結果] + + ```sql + 0: scalardb> SELECT * FROM ns.tbl; + +---+---+---+ + | a | b | c | + +---+---+---+ + | 7 | 8 | 9 | + | 1 | 2 | 3 | + | 4 | 5 | 6 | + +---+---+---+ + 3 rows selected (0.059 seconds) + ``` + +1. ScalarDB Cluster SQL CLI を終了するには、`Ctrl + D` を押します。 + + ```console + ^D + ``` + +1. クライアントコンテナーを終了します。 + + ```console + exit + ``` + +## ステップ8. すべてのリソースを削除する + +Kubernetes クラスターで ScalarDB Cluster テストを完了したら、すべてのリソースを削除します。 + +1. ScalarDB Cluster と PostgreSQL をアンインストールします。 + + ```console + helm uninstall -n default scalardb-cluster postgresql-scalardb-cluster + ``` + +1. 自己署名 CA を削除します。 + + ``` + kubectl delete -f ./private-ca-custom-values.yaml + ``` + +1. cert-manager をアンインストールします。 + + ```console + helm uninstall -n cert-manager cert-manager + ``` + +1. クライアントコンテナを削除します。 + + ``` + kubectl delete pod scalardb-cluster-client --grace-period 0 -n default + ``` + +1. シークレットリソースを削除します。 + + ``` + kubectl delete secrets scalardb-credentials-secret self-signed-ca-cert-secret scalardb-cluster-envoy-tls-cert scalardb-cluster-tls-cert client-ca-cert + ``` + +1. ネームスペース `cert-manager` を削除します。 + + ``` + kubectl delete ns cert-manager + ``` + +1. 作業ディレクトリとサンプル構成ファイルを削除します。 + + ```console + cd ${HOME} + ``` + + ```console + rm -rf ${HOME}/scalardb-cluster-test/ + ``` + +## 参考文献 + +Scalar 製品の監視またはログ記録を開始する方法については、次のチュートリアルを参照してください。 + +* [Helm チャートの使用開始 (Prometheus Operator を使用したモニタリング)](getting-started-monitoring.mdx) +* [Helm チャートの使用開始 (Loki Stack を使用したログ記録)](getting-started-logging.mdx) +* [Helm チャートの使用開始 (Scalar Manager)](getting-started-scalar-manager.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardb-cluster-tls.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardb-cluster-tls.mdx new file mode 100644 index 00000000..64c29fa9 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardb-cluster-tls.mdx @@ -0,0 +1,624 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +--- + +# Helm チャートの入門 (TLS を使用した ScalarDB Cluster) + +このドキュメントでは、Kubernetes クラスター上の Helm Chart をテスト環境として使用して、TLS 構成で ScalarDB クラスターを開始する方法について説明します。 ここでは、テスト用の Mac または Linux 環境がすでにあることを前提としています。 このドキュメントでは **minikube** を使用しますが、これから説明する手順はどの Kubernetes クラスターでも機能するはずです。 + +## 要件 + +* ScalarDB Cluster のライセンスキー(トライアルライセンスまたは商用ライセンス)を取得する必要があります。 ライセンスキーをお持ちでない場合は、[お問い合わせ](https://www.scalar-labs.com/contact) してください。 +* TLSをサポートするScalarDB Cluster v3.12以降を使用する必要があります。 + +## 作成するもの + +次のように、次のコンポーネントを Kubernetes クラスターにデプロイします。 + +``` ++----------------------------------------------------------------------------------------------------------------------------------------------------+ +| [Kubernetes Cluster] | +| [Pod] [Pod] [Pod] | +| | +| +-------+ +------------------------+ | +| +---> | Envoy | ---+ +---> | ScalarDB Cluster node | ---+ | +| [Pod] | +-------+ | | +------------------------+ | | +| | | | | | +| +-----------+ +---------+ | +-------+ | +--------------------+ | +------------------------+ | +---------------+ | +| | Client | ---> | Service | ---+---> | Envoy | ---+---> | Service | ---+---> | ScalarDB Cluster node | ---+---> | PostgreSQL | | +| | (SQL CLI) | | (Envoy) | | +-------+ | | (ScalarDB Cluster) | | +------------------------+ | | (For Ledger) | | +| +-----------+ +---------+ | | +--------------------+ | | +---------------+ | +| | +-------+ | | +------------------------+ | | +| +---> | Envoy | ---+ +---> | ScalarDB Cluster node | ---+ | +| +-------+ +------------------------+ | +| | ++----------------------------------------------------------------------------------------------------------------------------------------------------+ +``` + +TLS 接続用に次の秘密キーファイルと証明書ファイルを作成します。 + +``` + +-------------------------------+ + +---> | For Scalar Envoy | + | +-------------------------------+ + | | envoy-key.pem | + | | envoy.pem | ++----------------------+ | +-------------------------------+ +| Self-signed CA | ---(Sign certificates)---+ ++----------------------+ | +-------------------------------+ +| ca-key.pem | +---> | For ScalarDB Cluster | +| ca.pem | +-------------------------------+ ++----------------------+ | scalardb-cluster-key.pem | + | scalardb-cluster.pem | + +-------------------------------+ +``` + +各接続で TLS を有効にするために、各秘密キーと証明書ファイルを次のように設定します。 + +``` ++--------------------------------+ +-----------------------------------------+ +-----------------------------------------+ +| Client | ---(CRUD/SQL requests)---> | Envoy for ScalarDB Cluster | ---> | ScalarDB Cluster nodes | ++--------------------------------+ +-----------------------------------------+ +-----------------------------------------+ +| ca.pem (to verify envoy.pem) | | envoy-key.pem | | scalardb-cluster-key.pem | ++--------------------------------+ | envoy.pem | | scalardb-cluster.pem | + | ca.pem (to verify scalardb-cluster.pem) | | ca.pem (used for health check) | + +-----------------------------------------+ +-----------------------------------------+ +``` + +ScalarDB Cluster 関連コンポーネント間には、次の接続があります。 + +* **`クライアント - ScalarDB Cluster の Envoy`:** 一部のCRUD APIやSQL APIを実行すると、クライアントはEnvoy for ScalarDB Clusterにアクセスします。 +* **`ScalarDB Cluster の Envoy - ScalarDB Cluster`:** Envoy は、ScalarDB Cluster の前の L7 (gRPC) ロードバランサーとして機能します。 +* **`ScalarDB Cluster ノード - ScalarDB Cluster ノード`:** ScalarDB Cluster ノードから別の ScalarDB Cluster ノードにアクセスします。 言い換えれば、すべての ScalarDB Cluster ノード間でクラスターの内部通信が行われます。 + +## ステップ 1. Kubernetes クラスターを開始する + +Kubernetes クラスターを準備し、いくつかのツール (`kubectl`、`helm`、`cfssl`、および `cfssljson`) をインストールする必要があります。 インストール方法の詳細については、[Scalar Helm Charts の開始](getting-started-scalar-helm-charts.mdx) を参照してください。 + +## ステップ 2. PostgreSQL コンテナーを開始する + +ScalarDB Cluster は、バックエンドデータベースとして何らかのデータベースシステムを使用する必要があります。 このチュートリアルでは、PostgreSQL を使用します。 + +次のようにして、Kubernetes クラスターに PostgreSQL をデプロイできます。 + +1. Bitnami Helm リポジトリを追加します。 + + ```console + helm repo add bitnami https://charts.bitnami.com/bitnami + ``` + +1. ScalarDB クラスター用の PostgreSQL をデプロイします。 + + ```console + helm install postgresql-scalardb-cluster bitnami/postgresql \ + --set auth.postgresPassword=postgres \ + --set primary.persistence.enabled=false \ + -n default + ``` + +1. PostgreSQL コンテナが実行されているかどうかを確認します。 + + ```console + kubectl get pod -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + postgresql-scalardb-cluster-0 1/1 Running 0 34s + ``` + +## ステップ 3. 作業ディレクトリを作成する + +いくつかの構成ファイルと秘密キーおよび証明書ファイルをローカルに作成します。 したがって、それらの作業ディレクトリを作成します。 + +1. 作業ディレクトリを作成します。 + + ```console + mkdir -p ${HOME}/scalardb-cluster-test/certs/ + ``` + +## ステップ 4. 秘密キーおよび証明書ファイルを作成する + +秘密キーと証明書ファイルを作成します。 + +1. 作業ディレクトリを `${HOME}/scalardb-cluster-test/certs/` ディレクトリに変更します。 + + ```console + cd ${HOME}/scalardb-cluster-test/certs/ + ``` + +1. CA の情報を含む JSON ファイルを作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardb-cluster-test/certs/ca.json + { + "CN": "scalar-test-ca", + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "C": "JP", + "ST": "Tokyo", + "L": "Shinjuku", + "O": "Scalar Test CA" + } + ] + } + EOF + ``` + +1. CA の鍵/証明書ファイルを作成します。 + + ```console + cfssl gencert -initca ca.json | cfssljson -bare ca + ``` + +1. CA 構成を含む JSON ファイルを作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardb-cluster-test/certs/ca-config.json + { + "signing": { + "default": { + "expiry": "87600h" + }, + "profiles": { + "scalar-test-ca": { + "expiry": "87600h", + "usages": [ + "signing", + "key encipherment", + "server auth" + ] + } + } + } + } + EOF + ``` + +1. Envoy 情報を含む JSON ファイルを作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardb-cluster-test/certs/envoy.json + { + "CN": "scalar-envoy", + "hosts": [ + "envoy.scalar.example.com", + "localhost" + ], + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "C": "JP", + "ST": "Tokyo", + "L": "Shinjuku", + "O": "Scalar Envoy Test" + } + ] + } + EOF + ``` + +1. ScalarDB Cluster 情報を含む JSON ファイルを作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardb-cluster-test/certs/scalardb-cluster.json + { + "CN": "scalardb-cluster", + "hosts": [ + "cluster.scalardb.example.com", + "localhost" + ], + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "C": "JP", + "ST": "Tokyo", + "L": "Shinjuku", + "O": "ScalarDB Cluster Test" + } + ] + } + EOF + ``` + +1. Envoy の秘密キーおよび証明書ファイルを作成します。 + + ```console + cfssl gencert -ca ca.pem -ca-key ca-key.pem -config ca-config.json -profile scalar-test-ca envoy.json | cfssljson -bare envoy + ``` + +1. ScalarDB Cluster の秘密キーおよび証明書ファイルを作成します。 + + ```console + cfssl gencert -ca ca.pem -ca-key ca-key.pem -config ca-config.json -profile scalar-test-ca scalardb-cluster.json | cfssljson -bare scalardb-cluster + ``` + +1. 秘密キーおよび証明書ファイルが作成されたことを確認します。 + + ```console + ls -1 + ``` + + [コマンド実行結果] + + ```console + ca-config.json + ca-key.pem + ca.csr + ca.json + ca.pem + envoy-key.pem + envoy.csr + envoy.json + envoy.pem + scalardb-cluster-key.pem + scalardb-cluster.csr + scalardb-cluster.json + scalardb-cluster.pem + ``` + +## ステップ 5. Helm チャートを使用して Kubernetes クラスターに ScalarDB Cluster をデプロイする + +1. Scalar helm リポジトリを追加します。 + + ```console + helm repo add scalar-labs https://scalar-labs.github.io/helm-charts + ``` + +1. ScalarDB Cluster のカスタム値ファイル (`scalardb-cluster-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardb-cluster-test/scalardb-cluster-custom-values.yaml + envoy: + + enabled: true + + tls: + downstream: + enabled: true + certChainSecret: "envoy-tls-cert" + privateKeySecret: "envoy-tls-key" + upstream: + enabled: true + overrideAuthority: "cluster.scalardb.example.com" + caRootCertSecret: "scalardb-cluster-tls-ca" + + scalardbCluster: + + image: + repository: "ghcr.io/scalar-labs/scalardb-cluster-node-byol-premium" + + scalardbClusterNodeProperties: | + ### Necessary configurations for deployment on Kuberetes + 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.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} + scalar.db.storage=jdbc + + ### SQL configurations + scalar.db.sql.enabled=true + + ### Auth configurations + scalar.db.cluster.auth.enabled=true + scalar.db.cross_partition_scan.enabled=true + + ### TLS configurations + scalar.db.cluster.tls.enabled=true + scalar.db.cluster.tls.ca_root_cert_path=/tls/scalardb-cluster/certs/ca.crt + scalar.db.cluster.node.tls.cert_chain_path=/tls/scalardb-cluster/certs/tls.crt + scalar.db.cluster.node.tls.private_key_path=/tls/scalardb-cluster/certs/tls.key + scalar.db.cluster.tls.override_authority=cluster.scalardb.example.com + + ### License key configurations + scalar.dl.licensing.license_key=${env:SCALAR_DB_CLUSTER_LICENSE_KEY} + scalar.dl.licensing.license_check_cert_pem=${env:SCALAR_DB_CLUSTER_LICENSE_CHECK_CERT_PEM} + + tls: + enabled: true + overrideAuthority: "cluster.scalardb.example.com" + caRootCertSecret: "scalardb-cluster-tls-ca" + certChainSecret: "scalardb-cluster-tls-cert" + privateKeySecret: "scalardb-cluster-tls-key" + + secretName: "scalardb-credentials-secret" + EOF + ``` + +1. ライセンスキーと証明書を環境変数に設定します。 ライセンスキーをお持ちでない場合は、[お問い合わせ](https://www.scalar-labs.com/contact) してください。 + + ```console + SCALAR_DB_CLUSTER_LICENSE_KEY= + SCALAR_DB_CLUSTER_LICENSE_CHECK_CERT_PEM= + ``` + +1. 資格情報とライセンスキーを含むシークレット リソース「scalardb-credentials-secret」を作成します。 + + ```console + 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-literal=SCALAR_DB_CLUSTER_LICENSE_CHECK_CERT_PEM=${SCALAR_DB_CLUSTER_LICENSE_CHECK_CERT_PEM} \ + -n default + ``` + +1. Envoy の秘密キーファイルと証明書ファイルを含むシークレットリソースを作成します。 + + ```console + kubectl create secret generic envoy-tls-cert --from-file=tls.crt=${HOME}/scalardb-cluster-test/certs/envoy.pem -n default + kubectl create secret generic envoy-tls-key --from-file=tls.key=${HOME}/scalardb-cluster-test/certs/envoy-key.pem -n default + ``` + +1. ScalarDB Cluster の秘密キー、証明書、CA 証明書ファイルを含むシークレットリソースを作成します。 + + ```console + kubectl create secret generic scalardb-cluster-tls-ca --from-file=ca.crt=${HOME}/scalardb-cluster-test/certs/ca.pem -n default + kubectl create secret generic scalardb-cluster-tls-cert --from-file=tls.crt=${HOME}/scalardb-cluster-test/certs/scalardb-cluster.pem -n default + kubectl create secret generic scalardb-cluster-tls-key --from-file=tls.key=${HOME}/scalardb-cluster-test/certs/scalardb-cluster-key.pem -n default + ``` + +1. ScalarDB Cluster のチャートのバージョンを設定します。 + + ```console + SCALAR_DB_CLUSTER_VERSION=3.12.2 + 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) + ``` + +1. ScalarDB Cluster をデプロイします。 + + ```console + helm install scalardb-cluster scalar-labs/scalardb-cluster -f ${HOME}/scalardb-cluster-test/scalardb-cluster-custom-values.yaml --version ${SCALAR_DB_CLUSTER_CHART_VERSION} -n default + ``` + +1. ScalarDB Cluster ポッドがデプロイされているかどうかを確認します。 + + ```console + kubectl get pod -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + postgresql-scalardb-cluster-0 1/1 Running 0 4m30s + scalardb-cluster-envoy-7cc948dfb-4rb8l 1/1 Running 0 18s + scalardb-cluster-envoy-7cc948dfb-hwt96 1/1 Running 0 18s + scalardb-cluster-envoy-7cc948dfb-rzbrx 1/1 Running 0 18s + scalardb-cluster-node-7c6959c79d-445kj 1/1 Running 0 18s + scalardb-cluster-node-7c6959c79d-4z54q 1/1 Running 0 18s + scalardb-cluster-node-7c6959c79d-vcv96 1/1 Running 0 18s + ``` + ScalarDB Cluster ポッドが適切にデプロイされている場合は、ステータスが **実行中** であることがわかります。 + +1. ScalarDB Cluster サービスがデプロイされているかどうかを確認します。 + + ```console + kubectl get svc -n default + ``` + + [Command execution result] + + ```console + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + kubernetes ClusterIP 10.96.0.1 443/TCP 7h34m + postgresql-scalardb-cluster ClusterIP 10.96.92.27 5432/TCP 4m52s + postgresql-scalardb-cluster-hl ClusterIP None 5432/TCP 4m52s + scalardb-cluster-envoy ClusterIP 10.96.250.175 60053/TCP 40s + scalardb-cluster-envoy-metrics ClusterIP 10.96.40.197 9001/TCP 40s + scalardb-cluster-headless ClusterIP None 60053/TCP 40s + scalardb-cluster-metrics ClusterIP 10.96.199.135 9080/TCP 40s + ``` + ScalarDB クラスター サービスが適切にデプロイされている場合は、CLUSTER-IP 列にプライベート IP アドレスが表示されます。 + +:::note + +`postgresql-scalardb-cluster-hl` と `scalardb-cluster-headless` の `CLUSTER-IP` 値は、IP アドレスがないため `None` になります。 + +::: + +## ステップ 6. クライアントコンテナを開始する + +クライアントコンテナでCAの証明書ファイルを使用します。 そこで、シークレットリソースを作成し、クライアントコンテナにマウントします。 + +1. シークレットリソース `client-ca-cert` を作成します。 + + ```console + kubectl create secret generic client-ca-cert --from-file=certificate=${HOME}/scalardb-cluster-test/certs/ca.pem -n default + ``` + +1. クライアントポッドのマニフェストファイル (`scalardb-cluster-client-pod.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardb-cluster-test/scalardb-cluster-client-pod.yaml + apiVersion: v1 + kind: Pod + metadata: + name: "scalardb-cluster-client" + spec: + containers: + - name: scalardb-cluster-client + image: eclipse-temurin:8-jre-jammy + command: ['sleep'] + args: ['inf'] + env: + - name: SCALAR_DB_CLUSTER_VERSION + value: SCALAR_DB_CLUSTER_CLIENT_POD_SCALAR_DB_CLUSTER_VERSION + volumeMounts: + - name: "client-ca-cert" + mountPath: "/certs/ca/ca.pem" + subPath: certificate + readOnly: true + volumes: + - name: "client-ca-cert" + secret: + secretName: "client-ca-cert" + restartPolicy: Never + EOF + ``` + +1. マニフェスト ファイルで ScalarDB Cluster のバージョンを設定します。 + + ```console + sed -i s/SCALAR_DB_CLUSTER_CLIENT_POD_SCALAR_DB_CLUSTER_VERSION/${SCALAR_DB_CLUSTER_VERSION}/ ${HOME}/scalardb-cluster-test/scalardb-cluster-client-pod.yaml + ``` + +1. クライアントポッドをデプロイします。 + + ```console + kubectl apply -f ${HOME}/scalardb-cluster-test/scalardb-cluster-client-pod.yaml -n default + ``` + +1. クライアントコンテナが実行されているかどうかを確認します。 + + ```console + kubectl get pod scalardb-cluster-client -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + scalardb-cluster-client 1/1 Running 0 26s + ``` + +## ステップ 7. ScalarDB Cluster SQL CLI をダウンロードしてクライアント コンテナにコピーします + +1. ScalarDB Cluster SQL CLI を [リリース](https://github.com/scalar-labs/scalardb/releases) からディレクトリ `${HOME}/scalardb-cluster-test/` の下にダウンロードします。 + +1. ScalarDB Cluster SQL CLI をクライアント コンテナにコピーします。 + + ```console + kubectl cp ${HOME}/scalardb-cluster-test/scalardb-cluster-sql-cli-${SCALAR_DB_CLUSTER_VERSION}-all.jar scalardb-cluster-client:/ + ``` + +## ステップ 8. クライアントコンテナで ScalarDB Cluster SQL CLI を実行する + +1. クライアントコンテナで bash を実行します。 + + ```console + kubectl exec -it scalardb-cluster-client -n default -- bash + ``` + 次の手順移行のコマンドは、クライアントコンテナ内で実行する必要があります。 + +1. `database.properties` ファイルを作成します。 + + ```console + cat << 'EOF' > /database.properties + # ScalarDB Cluster configurations + scalar.db.sql.connection_mode=cluster + scalar.db.sql.cluster_mode.contact_points=indirect:scalardb-cluster-envoy.default.svc.cluster.local + + # Auth configurations + scalar.db.cluster.auth.enabled=true + scalar.db.sql.cluster_mode.username=admin + scalar.db.sql.cluster_mode.password=admin + + # TLS configurations + scalar.db.cluster.tls.enabled=true + scalar.db.cluster.tls.ca_root_cert_path=/certs/ca/ca.pem + scalar.db.cluster.tls.override_authority=envoy.scalar.example.com + EOF + ``` + +1. ScalarDB Cluster SQL CLI を実行します。 + + ```console + java -jar /scalardb-cluster-sql-cli-${SCALAR_DB_CLUSTER_VERSION}-all.jar --config /database.properties + ``` + +1. サンプル名前空間 `ns` を作成します。 + + ```sql + CREATE NAMESPACE ns; + ``` + +1. 名前空間 `ns` の下にサンプル テーブル `tbl` を作成します。 + + ```sql + CREATE TABLE ns.tbl (a INT, b INT, c INT, PRIMARY KEY(a, b)); + ``` + +1. サンプルレコードを挿入します。 + + ```sql + INSERT INTO ns.tbl VALUES (1,2,3), (4,5,6), (7,8,9); + ``` + +1. 挿入したサンプル レコードを選択します。 + + ```sql + SELECT * FROM ns.tbl; + ``` + + [コマンド実行結果] + + ```sql + 0: scalardb> SELECT * FROM ns.tbl; + +---+---+---+ + | a | b | c | + +---+---+---+ + | 7 | 8 | 9 | + | 1 | 2 | 3 | + | 4 | 5 | 6 | + +---+---+---+ + 3 rows selected (0.059 seconds) + ``` + +## ステップ 9. すべてのリソースを削除する + +Kubernetes クラスターで ScalarDB Cluster のテストが完了したら、すべてのリソースを削除します。 + +1. ScalarDB Cluster と PostgreSQL をアンインストールします。 + + ```console + helm uninstall -n default scalardb-cluster postgresql-scalardb-cluster + ``` + +1. クライアントコンテナを削除します。 + + ``` + kubectl delete pod scalardb-cluster-client --grace-period 0 -n default + ``` + +1. シークレットリソースを削除します。 + + ``` + kubectl delete secrets scalardb-credentials-secret scalardb-cluster-tls-key scalardb-cluster-tls-cert scalardb-cluster-tls-ca envoy-tls-key envoy-tls-cert client-ca-cert + ``` + +1. 作業ディレクトリとサンプル ファイル (構成ファイル、秘密キー、および証明書) を削除します。 + + ```console + cd ${HOME} + ``` + + ```console + rm -rf ${HOME}/scalardb-cluster-test/ + ``` + +## 参考文献 + +Scalar 製品の監視またはログ記録を開始する方法については、次のドキュメントで説明しています。 + +* [Helm Charts の入門 (Prometheus Operator を使用したモニタリング)](getting-started-monitoring.mdx) +* [Helm Charts の入門 (Loki スタックを使用したロギング)](getting-started-logging.mdx) +* [Helm Charts の入門 (Scalar Manager)](getting-started-scalar-manager.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardb.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardb.mdx new file mode 100644 index 00000000..3170287a --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardb.mdx @@ -0,0 +1,386 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium + - Deprecated +--- + +# [非推奨] Helm Charts の入門 (ScalarDB Server) + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +:::note + +ScalarDB Server は非推奨になりました。 代わりに [ScalarDB Cluster](https://scalardb.scalar-labs.com/docs/latest/scalardb-cluster/setup-scalardb-cluster-on-kubernetes-by-using-helm-chart) を使用してください。 + +::: + +このドキュメントでは、Kubernetes クラスター上の Helm Chart をテスト環境として使用して、ScalarDB Server を開始する方法について説明します。 ここでは、テスト用の Mac または Linux 環境がすでにあることを前提としています。 このドキュメントでは **Minikube** を使用しますが、これから説明する手順はどの Kubernetes クラスターでも機能するはずです。 + +## 要件 + +※コンテナイメージ(`scalardb-server` および `scalardb-envoy`)を取得するには、[AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-rzbuhxgvqf4d2) または[Azure Marketplace](https://azuremarketplace.microsoft.com/en/marketplace/apps/scalarinc.scalardb) で ScalarDB を購読する必要があります。 詳細については、以下のドキュメントを参照してください。 + * [How to install Scalar products through AWS Marketplace](../scalar-kubernetes/AwsMarketplaceGuide.mdx) + * [How to install Scalar products through Azure Marketplace](../scalar-kubernetes/AzureMarketplaceGuide.mdx) + +## 私たちが作るもの + +次のように、次のコンポーネントを Kubernetes クラスターにデプロイします。 + +``` ++--------------------------------------------------------------------------------------------------------------------------------------+ +| [Kubernetes クラスター] | +| | +| [ポッド] [ポッド] [ポッド] [ポッド] | +| | +| +-------+ +-----------------+ | +| +---> | Envoy | ---+ +---> | ScalarDB Server | ---+ | +| | +-------+ | | +-----------------+ | | +| | | | | | +| +--------+ +---------+ | +-------+ | +-------------------+ | +-----------------+ | +------------+ | +| | クライアント | ---> | サービス | ---+---> | Envoy | ---+---> | サービス | ---+---> | ScalarDB Server | ---+---> | PostgreSQL | | +| +--------+ | (Envoy) | | +-------+ | | (ScalarDB Server) | | +-----------------+ | +------------+ | +| +---------+ | | +-------------------+ | | | +| | +-------+ | | +-----------------+ | | +| +---> | Envoy | ---+ +---> | ScalarDB Server | ---+ | +| +-------+ +-----------------+ | +| | ++--------------------------------------------------------------------------------------------------------------------------------------+ +``` + +## ステップ 1. Kubernetes クラスターを開始する + +まず、Kubernetes クラスターを準備する必要があります。 **minikube** 環境を使用する場合は、[Scalar Helm Charts の入門](getting-started-scalar-helm-charts.mdx) を参照してください。 すでに Kubernetes クラスターを開始している場合は、この手順をスキップできます。 + +## ステップ 2. PostgreSQL コンテナーを開始する + +ScalarDB は、バックエンド データベースとして何らかのデータベース システムを使用します。 このドキュメントでは PostgreSQL を使用します。 + +次のようにして、Kubernetes クラスターに PostgreSQL をデプロイできます。 + +1. Bitnami Helm リポジトリを追加します。 + ```console + helm repo add bitnami https://charts.bitnami.com/bitnami + ``` + +1. PostgreSQLをデプロイします。 + ```console + helm install postgresql-scalardb bitnami/postgresql \ + --set auth.postgresPassword=postgres \ + --set primary.persistence.enabled=false + ``` + +1. PostgreSQL コンテナが実行されているかどうかを確認します。 + ```console + kubectl get pod + ``` + 【コマンド実行結果】 + ```console + NAME READY STATUS RESTARTS AGE + postgresql-scalardb-0 1/1 Running 0 2m42s + ``` + +## ステップ 3. Helm Charts を使用して Kubernetes クラスターに ScalarDB Server をデプロイする + +1. Scalar helm リポジトリを追加します。 + ```console + helm repo add scalar-labs https://scalar-labs.github.io/helm-charts + ``` + +1. AWS/Azure Marketplace から ScalarDB コンテナー イメージをプルするためのシークレット リソースを作成します。 + * AWS Marketplace + ```console + 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 + ```console + kubectl create secret docker-registry reg-acr-secrets \ + --docker-server= \ + --docker-username= \ + --docker-password= + ``` + + 詳細については、以下のドキュメントを参照してください。 + + * [How to install Scalar products through AWS Marketplace](../scalar-kubernetes/AwsMarketplaceGuide.mdx) + * [How to install Scalar products through Azure Marketplace](../scalar-kubernetes/AzureMarketplaceGuide.mdx) + +1. ScalarDB Server のカスタム値ファイル (scalardb-custom-values.yaml) を作成します。 + * AWS Marketplace + + ```console + 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 + + ```console + cat << 'EOF' > scalardb-custom-values.yaml + envoy: + image: + repository: "/scalarinc/scalardb-envoy" + version: "1.3.0" + imagePullSecrets: + - name: "reg-acr-secrets" + + scalardb: + image: + repository: "/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 + ``` + +1. PostgreSQL のユーザー名とパスワードを含む Secret リソースを作成します。 + ```console + kubectl create secret generic scalardb-credentials-secret \ + --from-literal=SCALAR_DB_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DB_POSTGRES_PASSWORD=postgres + ``` + +1. ScalarDB Server をデプロイします。 + ```console + helm install scalardb scalar-labs/scalardb -f ./scalardb-custom-values.yaml + ``` + +1. ScalarDB Server ポッドがデプロイされているかどうかを確認します。 + ```console + kubectl get pod + ``` + 【コマンド実行結果】 + ```console + 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 6s + ``` + ScalarDB Server ポッドが適切にデプロイされている場合、STATUS が **Running** であることがわかります。 + +1. ScalarDB Server サービスがデプロイされているかどうかを確認します。 + ```console + kubectl get svc + ``` + 【コマンド実行結果】 + ```console + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + kubernetes ClusterIP 10.96.0.1 443/TCP 47d + postgresql-scalardb ClusterIP 10.109.118.122 5432/TCP 10m + postgresql-scalardb-hl ClusterIP None 5432/TCP 10m + scalardb-envoy ClusterIP 10.110.110.250 60051/TCP 41s + scalardb-envoy-metrics ClusterIP 10.107.98.227 9001/TCP 41s + scalardb-headless ClusterIP None 60051/TCP 41s + scalardb-metrics ClusterIP 10.108.188.10 8080/TCP 41s + ``` + ScalarDB Server サービスが適切にデプロイされている場合は、CLUSTER-IP 列にプライベート IP アドレスが表示されます。 (注記: `scalardb-headless` には CLUSTER-IP がありません。) + +## ステップ 4. クライアントコンテナを開始する + +1. Kubernetes クラスター上でクライアント コンテナーを起動します。 + ```console + kubectl run scalardb-client --image eclipse-temurin:8-jdk --command sleep inf + ``` + +1. クライアントコンテナが実行されているかどうかを確認します。 + ```console + kubectl get pod scalardb-client + ``` + 【コマンド実行結果】 + ```console + NAME READY STATUS RESTARTS AGE + scalardb-client 1/1 Running 0 23s + ``` + +## ステップ 5. クライアント コンテナで ScalarDB サンプル アプリケーションを実行する + +以下に最低限の手順を説明します。 ScalarDB についてさらに詳しく知りたい場合は、[Getting Started with ScalarDB](https://scalardb.scalar-labs.com/docs/latest/getting-started-with-scalardb) を参照してください。 + +1. クライアントコンテナで bash を実行します。 + ```console + kubectl exec -it scalardb-client -- bash + ``` + この手順の後、クライアント コンテナで各コマンドを実行します。 + +1. git およびcurl コマンドをクライアント コンテナにインストールします。 + ```console + apt update && apt install -y git curl + ``` + +1. ScalarDB git リポジトリのクローンを作成します。 + ```console + git clone https://github.com/scalar-labs/scalardb.git + ``` + +1. ディレクトリを `scalardb/` に変更します。 + ```console + cd scalardb/ + ``` + ```console + pwd + ``` + 【コマンド実行結果】 + ```console + /scalardb + ``` + +1. ブランチを任意のバージョンに変更します。 + ```console + git checkout -b v3.7.0 refs/tags/v3.7.0 + ``` + ```console + git branch + ``` + 【コマンド実行結果】 + + ```console + master + * v3.7.0 + ``` + + 別のバージョンを使用する場合は、使用するバージョン(タグ)を指定してください。 + +1. ディレクトリを `docs/getting-started/` に変更します。 + ```console + cd docs/getting-started/ + ``` + ```console + pwd + ``` + 【コマンド実行結果】 + ```console + /scalardb/docs/getting-started + ``` + +1. [ScalarDB Releases](https://github.com/scalar-labs/scalardb/releases) から Schema Loader をダウンロードします。 + ```console + curl -OL https://github.com/scalar-labs/scalardb/releases/download/v3.7.0/scalardb-schema-loader-3.7.0.jar + ``` + 同じバージョンの ScalarDB と Schema Loader を使用する必要があります。 + +1. Kubernetes クラスター上の ScalarDB Server にアクセスするための構成ファイル (scalardb.properties) を作成します。 + ```console + cat << 'EOF' > scalardb.properties + scalar.db.contact_points=scalardb-envoy.default.svc.cluster.local + scalar.db.contact_port=60051 + scalar.db.storage=grpc + scalar.db.transaction_manager=grpc + EOF + ``` + +1. サンプル アプリケーションの DB スキーマを定義する JSON ファイル (emoney-transaction.json) を作成します。 + ```console + cat << 'EOF' > emoney-transaction.json + { + "emoney.account": { + "transaction": true, + "partition-key": [ + "id" + ], + "clustering-key": [], + "columns": { + "id": "TEXT", + "balance": "INT" + } + } + } + EOF + ``` + +1. Schema Loader を実行します (サンプル TABLE を作成します)。 + ```console + java -jar ./scalardb-schema-loader-3.7.0.jar --config ./scalardb.properties -f emoney-transaction.json --coordinator + ``` + +1. サンプル アプリケーションを実行します。 + * `1000` を `user1` に請求します。 + ```console + ./gradlew run --args="-action charge -amount 1000 -to user1" + ``` + * `merchant1` に `0` を請求します (`merchant1` のアカウントを作成するだけです): + ```console + ./gradlew run --args="-action charge -amount 0 -to merchant1" + ``` + * `user1` から `merchant1` に `100` を支払います。 + ```console + ./gradlew run --args="-action pay -amount 100 -from user1 -to merchant1" + ``` + * `user1` の残高を取得します。 + ```console + ./gradlew run --args="-action getBalance -id user1" + ``` + * `merchant1` の残高を取得します。 + ```console + ./gradlew run --args="-action getBalance -id merchant1" + ``` + +1. (オプション) 次のコマンドを使用して、サンプル アプリケーションを通じて挿入および変更された (INSERT/UPDATE) データを確認できます。 (このコマンドは、クライアント コンテナではなくローカルホストで実行する必要があります。) + ```console + kubectl exec -it postgresql-scalardb-0 -- bash -c 'export PGPASSWORD=postgres && psql -U postgres -d postgres -c "SELECT * FROM emoney.account"' + ``` + 【コマンド実行結果】 + ```sql + id | balance | tx_id | tx_state | tx_version | tx_prepared_at | tx_committed_at | before_tx_id | before_tx_state | before_tx_version | before_tx_prepared_at | before_tx_committed_at | before_balance + -----------+---------+--------------------------------------+----------+------------+----------------+-----------------+--------------------------------------+-----------------+-------------------+-----------------------+------------------------+---------------- + merchant1 | 100 | 65a90225-0846-4e97-b729-151f76f6ca2f | 3 | 2 | 1667361909634 |1667361909679 | 3633df99-a8ed-4301-a8b9-db1344807d7b | 3 | 1 | 1667361902466 | 1667361902485 | 0 + user1 | 900 | 65a90225-0846-4e97-b729-151f76f6ca2f | 3 | 2 | 1667361909634 |1667361909679 | 5520cba4-625a-4886-b81f-6089bf846d18 | 3 | 1 | 1667361897283 | 1667361897317 | 1000 + (2 rows) + ``` + * 注記: + * 通常はScalarDB経由でデータ(レコード)にアクセスする必要があります。 上記のコマンドはサンプルアプリケーションの動作を説明、確認するために使用します。 + +## ステップ 6. すべてのリソースを削除する + +Kubernetes クラスター上で ScalarDB Server テストが完了したら、すべてのリソースを削除します。 + +1. ScalarDB Server と PostgreSQL をアンインストールします。 + ```console + helm uninstall scalardb postgresql-scalardb + ``` + +1. クライアントコンテナを削除します。 + ``` + kubectl delete pod scalardb-client --force --grace-period 0 + ``` + +## 参考文献 + +Scalar 製品の監視またはログ記録を開始する方法については、次のドキュメントで説明しています。 + +* [Helm Charts の入門 (Prometheus Operator を使用したモニタリング)](getting-started-monitoring.mdx) +* [Helm Charts の入門 (Loki スタックを使用したロギング)](getting-started-logging.mdx) +* [Helm Charts の入門 (Scalar Manager)](getting-started-scalar-manager.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardl-auditor-tls-cert-manager.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardl-auditor-tls-cert-manager.mdx new file mode 100644 index 00000000..107eaed5 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardl-auditor-tls-cert-manager.mdx @@ -0,0 +1,948 @@ +--- +--- + +# Helm チャートを使い始める (cert-manager / Auditor モードを使用した TLS 対応の ScalarDL Ledger および Auditor) + +このチュートリアルでは、Kubernetes クラスターでテスト環境として Helm Charts と cert-manager を使用して、TLS 構成で ScalarDL Ledger と ScalarDL Auditor を使い始める方法について説明します。開始する前に、テスト用の Mac または Linux 環境を用意しておく必要があります。また、このチュートリアルでは **minikube** の使用について説明していますが、説明されている手順はどの Kubernetes クラスターでも機能するはずです。 + +## 要件 + +* ScalarDL のライセンスキー (試用ライセンスまたは商用ライセンス) が必要です。ライセンスキーをお持ちでない場合は、[お問い合わせ](https://www.scalar-labs.com/contact) ください。 +* TLS をサポートする ScalarDL 3.9 以降を使用する必要があります。 + +:::note + +監査によるビザンチン障害検出を適切に行うには、ScalarDL Ledger と ScalarDL Auditor を異なる管理ドメインにデプロイして管理する必要があります。ただし、このチュートリアルでは、テストを容易にするために、ScalarDL Ledger と ScalarDL Auditor を同じ Kubernetes クラスターにデプロイします。 + +::: + +## 作成するもの + +このチュートリアルでは、次の方法で Kubernetes クラスターに次のコンポーネントをデプロイします。 + +``` ++-----------------------------------------------------------------------------------------------------------------------------+ +| [Kubernetes Cluster] | +| [Pod] [Pod] [Pod] | +| | +| +-------+ +---------+ | +| +---> | Envoy | ---+ +---> | Ledger | ---+ | +| | +-------+ | | +---------+ | | +| | | | | | +| +---------+ | +-------+ | +-----------+ | +---------+ | +---------------+ | +| +---> | Service | ---+---> | Envoy | ---+---> | Service | ---+---> | Ledger | ---+---> | PostgreSQL | | +| | | (Envoy) | | +-------+ | | (Ledger) | | +---------+ | | (For Ledger) | | +| | +---------+ | | +-----------+ | | +---------------+ | +| [Pod] | | +-------+ | | +---------+ | | +| | +---> | Envoy | ---+ +---> | Ledger | ---+ | +| +--------+ | +-------+ +---------+ | +| | Client | ---+ | +| +--------+ | +-------+ +---------+ | +| | +---> | Envoy | ---+ +---> | Auditor | ---+ | +| | | +-------+ | | +---------+ | | +| | | | | | | +| | +---------+ | +-------+ | +-----------+ | +---------+ | +---------------+ | +| +---> | Service | ---+---> | Envoy | ---+---> | Service | ---+---> | Auditor | ---+---> | PostgreSQL | | +| | (Envoy) | | +-------+ | | (Auditor) | | +---------+ | | (For Auditor) | | +| +---------+ | | +-----------+ | | +---------------+ | +| | +-------+ | | +---------+ | | +| +---> | Envoy | ---+ +---> | Auditor | ---+ | +| +-------+ +---------+ | +| | +| +--------------------------------------------------------------------------+ +---------------------+ | +| | cert-manager (create private key and certificate for Envoy and ScalarDL) | | Issuer (Private CA) | | +| +--------------------------------------------------------------------------+ +---------------------+ | +| | ++-----------------------------------------------------------------------------------------------------------------------------+ +``` + +cert-manager は、TLS 接続用に次の秘密鍵と証明書ファイルを自動的に作成します。 + +``` + +----------------------+ + +---> | For Scalar Envoy | + | +----------------------+ + | | tls.key | + | | tls.crt | + | +----------------------+ + | ++-------------------------+ | +----------------------+ +| Issuer (Self-signed CA) | ---(Sign certificates)---+---> | For ScalarDL Ledger | ++-------------------------+ | +----------------------+ +| tls.key | | | tls.key | +| tls.crt | | | tls.crt | +| ca.crt | | +----------------------+ ++-------------------------+ | + | +----------------------+ + +---> | For ScalarDL Auditor | + +----------------------+ + | tls.key | + | tls.crt | + +----------------------+ +``` + +Scalar Helm Charts は、各接続で TLS を有効にするために、Envoy と ScalarDL の各秘密キーと証明書ファイルを次のように自動的にマウントします。ルート CA 証明書ファイルはクライアントに手動でマウントします。 + +``` + +------------------------------------------------+ +--------------------------------------+ + +-------(Normal request)-----> | Envoy for ScalarDL Ledger | ---> | ScalarDL Ledger | + | +------------------------------------------------+ +--------------------------------------+ + | +---(Recovery request)---> | tls.key | ---> | tls.key | + | | | tls.crt | | tls.crt | + | | | ca.crt (to verify tls.crt of ScalarDL Ledger) | | ca.crt (to check health) | + | | +------------------------------------------------+ +--------------------------------------+ ++---------------------------------------+ | | +| Client | ---+ | ++---------------------------------------+ | +------------------------------------------------------------------------------------------------------------------------------+ +| ca.crt (to verify tls.crt of Envoy) | | | ++---------------------------------------+ | | + | +------------------------------------------------+ +--------------------------------------+ | + +-------(Normal request)-----> | Envoy for ScalarDL Auditor | ---> | ScalarDL Auditor | ---+ + +------------------------------------------------+ +--------------------------------------+ + | tls.key | | tls.key | + | tls.crt | | tls.crt | + | ca.crt (to verify tls.crt of ScalarDL Auditor) | | ca.crt (to check health) | + +------------------------------------------------+ | ca.crt (to verify tls.crt of Envoy) | + +--------------------------------------+ +``` + +ScalarDL 関連コンポーネント間には、次の接続が存在します: + +* **`クライアント - ScalarDL Ledger 用 Envoy`:** ScalarDL API 関数を実行すると、クライアントは ScalarDL Ledger 用 Envoy にアクセスします。 +* **`クライアント - ScalarDL Auditor 用 Envoy`:** ScalarDL API 関数を実行すると、クライアントは ScalarDL Auditor 用 Envoy にアクセスします。 +* **`ScalarDL Ledger 用 Envoy - ScalarDL Ledger`:** Envoy は ScalarDL Ledger の前で L7 (gRPC) ロード バランサーとして機能します。 +* **`ScalarDL Auditor 用 Envoy - ScalarDL Auditor`:** Envoy は ScalarDL Auditor の前で L7 (gRPC) ロード バランサーとして機能します。 +* **`ScalarDL Auditor - Envoy for ScalarDL Ledger (ScalarDL Ledger)`:** ScalarDL がデータの一貫性を保つために回復プロセスを実行する必要がある場合、ScalarDL Auditor は Envoy を介して ScalarDL Ledger に対してリクエストを実行します。 + +## ステップ 1. Kubernetes クラスターを起動してツールをインストールする + +Kubernetes クラスターを準備し、いくつかのツール (`kubectl`、`helm`、`cfssl`、および `cfssljson`) をインストールする必要があります。インストール方法の詳細については、[Scalar Helm Charts の使用開始](getting-started-scalar-helm-charts.mdx) を参照してください。 + +## ステップ 2. PostgreSQL コンテナを起動する + +ScalarDL Ledger と ScalarDL Auditor は、バックエンド データベースとして何らかのデータベース システムを使用する必要があります。このチュートリアルでは、PostgreSQL を使用します。 + +次のようにして、Kubernetes クラスターに PostgreSQL をデプロイできます。 + +1. Bitnami helm リポジトリを追加します。 + + ```console + helm repo add bitnami https://charts.bitnami.com/bitnami + ``` + +1. Ledger 用に PostgreSQL をデプロイします。 + + ```console + helm install postgresql-ledger bitnami/postgresql \ + --set auth.postgresPassword=postgres \ + --set primary.persistence.enabled=false \ + -n default + ``` + +1. Auditor 用に PostgreSQL をデプロイします。 + + ```console + helm install postgresql-auditor bitnami/postgresql \ + --set auth.postgresPassword=postgres \ + --set primary.persistence.enabled=false \ + -n default + ``` + +1. PostgreSQL コンテナが実行されているかどうかを確認します。 + + ```console + kubectl get pod -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + postgresql-auditor-0 1/1 Running 0 11s + postgresql-ledger-0 1/1 Running 0 16s + ``` + +## ステップ 3. 作業ディレクトリを作成する + +ローカルにいくつかの構成ファイルと秘密鍵および証明書ファイルを作成します。必ずそれらのファイル用の作業ディレクトリを作成してください。 + +1. 作業ディレクトリを作成します。 + + ```console + mkdir -p ${HOME}/scalardl-test/ + ``` + +## ステップ 4. cert-manager と発行者リソースをデプロイする + +このチュートリアルでは、cert-manager を使用して秘密鍵と証明書を発行および管理します。次のようにして、Kubernetes クラスターに cert-manager をデプロイできます。 + +1. Jetstack helm リポジトリを追加します。 + + ```console + helm repo add jetstack https://charts.jetstack.io + ``` + +1. cert-manager をデプロイします。 + + ```console + helm install cert-manager jetstack/cert-manager \ + --create-namespace \ + --set installCRDs=true \ + -n cert-manager + ``` + +1. cert-manager コンテナが実行されているかどうかを確認します。 + + ```console + kubectl get pod -n cert-manager + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + cert-manager-6dc66985d4-6lvtt 1/1 Running 0 26s + cert-manager-cainjector-c7d4dbdd9-xlrpn 1/1 Running 0 26s + cert-manager-webhook-847d7676c9-ckcz2 1/1 Running 0 26s + ``` + +1. 作業ディレクトリを `${HOME}/scalardl-test/` に変更します。 + + ```console + cd ${HOME}/scalardl-test/ + ``` + +1. プライベート CA のカスタム値ファイル (`private-ca-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/private-ca-custom-values.yaml + apiVersion: cert-manager.io/v1 + kind: Issuer + metadata: + name: self-signed-issuer + spec: + selfSigned: {} + --- + apiVersion: cert-manager.io/v1 + kind: Certificate + metadata: + name: self-signed-ca-cert + spec: + isCA: true + commonName: self-signed-ca + secretName: self-signed-ca-cert-secret + privateKey: + algorithm: ECDSA + size: 256 + issuerRef: + name: self-signed-issuer + kind: Issuer + group: cert-manager.io + --- + apiVersion: cert-manager.io/v1 + kind: Issuer + metadata: + name: self-signed-ca + spec: + ca: + secretName: self-signed-ca-cert-secret + EOF + ``` + +1. 自己署名 CA を展開します。 + + ```console + kubectl apply -f ./private-ca-custom-values.yaml + ``` + +1. 発行者リソースが `True` であるかどうかを確認します。 + + ```console + kubectl get issuer + ``` + + [コマンド実行結果] + + ```console + NAME READY AGE + self-signed-ca True 6s + self-signed-issuer True 6s + ``` + +## ステップ 5. Helm Charts を使用して ScalarDL Ledger と ScalarDL Auditor のデータベーススキーマを作成する + +Helm Charts を使用して、Kubernetes クラスターに 2 つの ScalarDL Schema Loader ポッドをデプロイします。ScalarDL Schema Loader は、PostgreSQL に ScalarDL Ledger と Auditor のデータベーススキーマを作成します。 + +1. Scalar Helm Charts リポジトリを追加します。 + + ```console + helm repo add scalar-labs https://scalar-labs.github.io/helm-charts + ``` + +1. ScalarDL Schema Loader for Ledger のカスタム値ファイル (`schema-loader-ledger-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/schema-loader-ledger-custom-values.yaml + schemaLoading: + schemaType: "ledger" + databaseProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres + scalar.db.username=${env:SCALAR_DL_LEDGER_POSTGRES_USERNAME} + scalar.db.password=${env:SCALAR_DL_LEDGER_POSTGRES_PASSWORD} + scalar.db.storage=jdbc + secretName: "schema-ledger-credentials-secret" + EOF + ``` + +1. ScalarDL Schema Loader for Auditor のカスタム値ファイル (`schema-loader-auditor-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/schema-loader-auditor-custom-values.yaml + schemaLoading: + schemaType: "auditor" + databaseProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-auditor.default.svc.cluster.local:5432/postgres + scalar.db.username=${env:SCALAR_DL_AUDITOR_POSTGRES_USERNAME} + scalar.db.password=${env:SCALAR_DL_AUDITOR_POSTGRES_PASSWORD} + scalar.db.storage=jdbc + secretName: "schema-auditor-credentials-secret" + EOF + ``` + +1. ScalarDL Ledger 用の PostgreSQL のユーザー名とパスワードを含む `schema-ledger-credentials-secret` という名前のシークレットリソースを作成します。 + + ```console + kubectl create secret generic schema-ledger-credentials-secret \ + --from-literal=SCALAR_DL_LEDGER_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DL_LEDGER_POSTGRES_PASSWORD=postgres \ + -n default + ``` + +1. ScalarDL Auditor 用の PostgreSQL のユーザー名とパスワードを含む `schema-auditor-credentials-secret` という名前のシークレットリソースを作成します。 + + ```console + kubectl create secret generic schema-auditor-credentials-secret \ + --from-literal=SCALAR_DL_AUDITOR_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DL_AUDITOR_POSTGRES_PASSWORD=postgres \ + -n default + ``` + +1. ScalarDL スキーマローダーのチャートバージョンを設定します。 + + ```console + SCALAR_DL_VERSION=3.9.1 + SCALAR_DL_SCHEMA_LOADER_CHART_VERSION=$(helm search repo scalar-labs/schema-loading -l | grep -F "${SCALAR_DL_VERSION}" | awk '{print $2}' | sort --version-sort -r | head -n 1) + ``` + +1. ScalarDL Ledger 用の ScalarDL スキーマローダーをデプロイします。 + + ```console + helm install schema-loader-ledger scalar-labs/schema-loading -f ${HOME}/scalardl-test/schema-loader-ledger-custom-values.yaml --version ${SCALAR_DL_SCHEMA_LOADER_CHART_VERSION} -n default + ``` + +1. ScalarDL Auditor 用の ScalarDL スキーマローダーをデプロイします。 + + ```console + helm install schema-loader-auditor scalar-labs/schema-loading -f ${HOME}/scalardl-test/schema-loader-auditor-custom-values.yaml --version ${SCALAR_DL_SCHEMA_LOADER_CHART_VERSION} -n default + ``` + +1. ScalarDL スキーマローダーポッドが「完了」ステータスでデプロイされているかどうかを確認します。 + + ```console + kubectl get pod -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + postgresql-auditor-0 1/1 Running 0 2m56s + postgresql-ledger-0 1/1 Running 0 3m1s + schema-loader-auditor-schema-loading-dvc5r 0/1 Completed 0 6s + schema-loader-ledger-schema-loading-mtllb 0/1 Completed 0 10s + ``` + + ScalarDL スキーマローダーポッドのステータスが **ContainerCreating** または **Running** の場合、それらのポッドの `STATUS` 列に `Completed` と表示されるまで待ちます。 + +## ステップ 6. Helm Charts を使用して、Kubernetes クラスターに ScalarDL Ledger と ScalarDL Auditor をデプロイします + +1. ライセンスキーと証明書を環境変数として設定します。ライセンスキーがない場合は、[お問い合わせ](https://www.scalar-labs.com/contact) ください。`` と `` の値の詳細については、[製品ライセンス キーを構成する方法](https://scalardl.scalar-labs.com/docs/latest/scalar-licensing/) を参照してください。 + + ```console + SCALAR_DL_LEDGER_LICENSE_KEY='' + SCALAR_DL_LEDGER_LICENSE_CHECK_CERT_PEM='' + SCALAR_DL_AUDITOR_LICENSE_KEY='' + SCALAR_DL_AUDITOR_LICENSE_CHECK_CERT_PEM='' + ``` + +1. ScalarDL Ledger のカスタム値ファイル (`scalardl-ledger-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/scalardl-ledger-custom-values.yaml + envoy: + + tls: + downstream: + enabled: true + certManager: + enabled: true + issuerRef: + name: self-signed-ca + dnsNames: + - envoy.scalar.example.com + upstream: + enabled: true + overrideAuthority: "ledger.scalardl.example.com" + + ledger: + + image: + repository: "ghcr.io/scalar-labs/scalardl-ledger-byol" + + ledgerProperties: | + ### Storage configurations + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres + scalar.db.username=${env:SCALAR_DL_LEDGER_POSTGRES_USERNAME} + scalar.db.password=${env:SCALAR_DL_LEDGER_POSTGRES_PASSWORD} + + ### Ledger configurations + scalar.dl.ledger.proof.enabled=true + scalar.dl.ledger.auditor.enabled=true + scalar.dl.ledger.authentication.method=hmac + scalar.dl.ledger.authentication.hmac.cipher_key=${env:SCALAR_DL_LEDGER_HMAC_CIPHER_KEY} + scalar.dl.ledger.servers.authentication.hmac.secret_key=${env:SCALAR_DL_LEDGER_HMAC_SECRET_KEY} + + ### TLS configurations + scalar.dl.ledger.server.tls.enabled=true + scalar.dl.ledger.server.tls.cert_chain_path=/tls/scalardl-ledger/certs/tls.crt + scalar.dl.ledger.server.tls.private_key_path=/tls/scalardl-ledger/certs/tls.key + + ### License key configurations + scalar.dl.licensing.license_key=${env:SCALAR_DL_LEDGER_LICENSE_KEY} + scalar.dl.licensing.license_check_cert_pem=${env:SCALAR_DL_LEDGER_LICENSE_CHECK_CERT_PEM} + + tls: + enabled: true + overrideAuthority: "ledger.scalardl.example.com" + certManager: + enabled: true + issuerRef: + name: self-signed-ca + dnsNames: + - ledger.scalardl.example.com + + secretName: "ledger-credentials-secret" + EOF + ``` + +1. ScalarDL Auditor のカスタム値ファイル (`scalardl-auditor-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/scalardl-auditor-custom-values.yaml + envoy: + + tls: + downstream: + enabled: true + certManager: + enabled: true + issuerRef: + name: self-signed-ca + dnsNames: + - envoy.scalar.example.com + upstream: + enabled: true + overrideAuthority: "auditor.scalardl.example.com" + + + auditor: + + image: + repository: "ghcr.io/scalar-labs/scalardl-auditor-byol" + + auditorProperties: | + ### Storage configurations + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:postgresql://postgresql-auditor.default.svc.cluster.local:5432/postgres + scalar.db.username=${env:SCALAR_DL_AUDITOR_POSTGRES_USERNAME} + scalar.db.password=${env:SCALAR_DL_AUDITOR_POSTGRES_PASSWORD} + + ### Auditor configurations + scalar.dl.auditor.ledger.host=scalardl-ledger-envoy.default.svc.cluster.local + scalar.dl.auditor.authentication.method=hmac + scalar.dl.auditor.authentication.hmac.cipher_key=${env:SCALAR_DL_AUDITOR_HMAC_CIPHER_KEY} + scalar.dl.auditor.servers.authentication.hmac.secret_key=${env:SCALAR_DL_AUDITOR_HMAC_SECRET_KEY} + + ### TLS configurations + scalar.dl.auditor.server.tls.enabled=true + scalar.dl.auditor.server.tls.cert_chain_path=/tls/scalardl-auditor/certs/tls.crt + scalar.dl.auditor.server.tls.private_key_path=/tls/scalardl-auditor/certs/tls.key + scalar.dl.auditor.tls.enabled=true + scalar.dl.auditor.tls.ca_root_cert_path=/tls/scalardl-ledger/certs/ca.crt + scalar.dl.auditor.tls.override_authority=envoy.scalar.example.com + + ### License key configurations + scalar.dl.licensing.license_key=${env:SCALAR_DL_AUDITOR_LICENSE_KEY} + scalar.dl.licensing.license_check_cert_pem=${env:SCALAR_DL_AUDITOR_LICENSE_CHECK_CERT_PEM} + + tls: + enabled: true + overrideAuthority: "auditor.scalardl.example.com" + certManager: + enabled: true + issuerRef: + name: self-signed-ca + dnsNames: + - auditor.scalardl.example.com + + secretName: "auditor-credentials-secret" + EOF + ``` + +1. 資格情報とライセンスキーを含む `ledger-credentials-secret` という名前のシークレットリソースを作成します。 + + ```console + kubectl create secret generic ledger-credentials-secret \ + --from-literal=SCALAR_DL_LEDGER_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DL_LEDGER_POSTGRES_PASSWORD=postgres \ + --from-literal=SCALAR_DL_LEDGER_HMAC_CIPHER_KEY=ledger-hmac-cipher-key \ + --from-literal=SCALAR_DL_LEDGER_HMAC_SECRET_KEY=scalardl-hmac-secret-key \ + --from-literal=SCALAR_DL_LEDGER_LICENSE_KEY="${SCALAR_DL_LEDGER_LICENSE_KEY}" \ + --from-file=SCALAR_DL_LEDGER_LICENSE_CHECK_CERT_PEM=<(echo ${SCALAR_DL_LEDGER_LICENSE_CHECK_CERT_PEM} | sed 's/\\n/\ + /g') \ + -n default + ``` + +1. 資格情報とライセンスキーを含む `auditor-credentials-secret` という名前のシークレットリソースを作成します。 + + ```console + kubectl create secret generic auditor-credentials-secret \ + --from-literal=SCALAR_DL_AUDITOR_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DL_AUDITOR_POSTGRES_PASSWORD=postgres \ + --from-literal=SCALAR_DL_AUDITOR_HMAC_CIPHER_KEY=auditor-hmac-cipher-key \ + --from-literal=SCALAR_DL_AUDITOR_HMAC_SECRET_KEY=scalardl-hmac-secret-key \ + --from-literal=SCALAR_DL_AUDITOR_LICENSE_KEY="${SCALAR_DL_AUDITOR_LICENSE_KEY}" \ + --from-file=SCALAR_DL_AUDITOR_LICENSE_CHECK_CERT_PEM=<(echo ${SCALAR_DL_AUDITOR_LICENSE_CHECK_CERT_PEM} | sed 's/\\n/\ + /g') \ + -n default + ``` + +1. `auditor-keys` という名前のシークレットリソースを作成して、`digital-signature` 認証方式を無効にします。このチュートリアルでは、`digital-signature` の代わりに `hmac` 認証方式を使用します。 + + ```console + kubectl create secret generic auditor-keys \ + --from-literal=tls.key=dummy-data-to-disable-digital-signature-method \ + --from-literal=certificate=dummy-data-to-disable-digital-signature-method \ + -n default + ``` + + 注意: 認証方法として `hmac` を使用する場合は、Helm Chart 側で `digital-signature` を無効にするためにダミーの秘密 `auditor-key` を作成する必要があります。 + +1. ScalarDL Ledger と ScalarDL Auditor のチャート バージョンを設定します。 + + ```console + SCALAR_DL_LEDGER_CHART_VERSION=$(helm search repo scalar-labs/scalardl -l | grep -v -e "scalar-labs/scalardl-audit" | grep -F "${SCALAR_DL_VERSION}" | awk '{print $2}' | sort --version-sort -r | head -n 1) + SCALAR_DL_AUDITOR_CHART_VERSION=$(helm search repo scalar-labs/scalardl-audit -l | grep -F "${SCALAR_DL_VERSION}" | awk '{print $2}' | sort --version-sort -r | head -n 1) + ``` + +1. ScalarDL Ledger をデプロイします。 + + ```console + helm install scalardl-ledger scalar-labs/scalardl -f ${HOME}/scalardl-test/scalardl-ledger-custom-values.yaml --version ${SCALAR_DL_LEDGER_CHART_VERSION} -n default + ``` + +1. ScalarDL Auditor をデプロイします。 + + ```console + helm install scalardl-auditor scalar-labs/scalardl-audit -f ${HOME}/scalardl-test/scalardl-auditor-custom-values.yaml --version ${SCALAR_DL_AUDITOR_CHART_VERSION} -n default + ``` + +1. ScalarDL Ledger および ScalarDL Auditor ポッドがデプロイされているかどうかを確認します。 + + ```console + kubectl get pod -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + postgresql-auditor-0 1/1 Running 0 14m + postgresql-ledger-0 1/1 Running 0 14m + scalardl-auditor-auditor-5b885ff4c8-fwkpf 1/1 Running 0 18s + scalardl-auditor-auditor-5b885ff4c8-g69cb 1/1 Running 0 18s + scalardl-auditor-auditor-5b885ff4c8-nsmnq 1/1 Running 0 18s + scalardl-auditor-envoy-689bcbdf65-5mn6v 1/1 Running 0 18s + scalardl-auditor-envoy-689bcbdf65-fpq8j 1/1 Running 0 18s + scalardl-auditor-envoy-689bcbdf65-lsz2t 1/1 Running 0 18s + scalardl-ledger-envoy-547bbf7546-n7p5x 1/1 Running 0 26s + scalardl-ledger-envoy-547bbf7546-p8nwp 1/1 Running 0 26s + scalardl-ledger-envoy-547bbf7546-pskpb 1/1 Running 0 26s + scalardl-ledger-ledger-6db5dc8774-5zsbj 1/1 Running 0 26s + scalardl-ledger-ledger-6db5dc8774-vnmrw 1/1 Running 0 26s + scalardl-ledger-ledger-6db5dc8774-wpjvs 1/1 Running 0 26s + schema-loader-auditor-schema-loading-dvc5r 0/1 Completed 0 11m + schema-loader-ledger-schema-loading-mtllb 0/1 Completed 0 11m + ``` + + ScalarDL Ledger ポッドと ScalarDL Auditor ポッドが適切にデプロイされている場合、それらのポッドの `STATUS` 列には `Running` と表示されます。 + +1. ScalarDL Ledger および ScalarDL Auditor サービスがデプロイされているかどうかを確認します。 + + ```console + kubectl get svc -n default + ``` + + [コマンド実行結果] + + ```console + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + kubernetes ClusterIP 10.96.0.1 443/TCP 47d + postgresql-auditor ClusterIP 10.107.9.78 5432/TCP 15m + postgresql-auditor-hl ClusterIP None 5432/TCP 15m + postgresql-ledger ClusterIP 10.108.241.181 5432/TCP 15m + postgresql-ledger-hl ClusterIP None 5432/TCP 15m + scalardl-auditor-envoy ClusterIP 10.100.61.202 40051/TCP,40052/TCP 55s + scalardl-auditor-envoy-metrics ClusterIP 10.99.6.227 9001/TCP 55s + scalardl-auditor-headless ClusterIP None 40051/TCP,40053/TCP,40052/TCP 55s + scalardl-auditor-metrics ClusterIP 10.108.1.147 8080/TCP 55s + scalardl-ledger-envoy ClusterIP 10.101.191.116 50051/TCP,50052/TCP 61s + scalardl-ledger-envoy-metrics ClusterIP 10.106.52.103 9001/TCP 61s + scalardl-ledger-headless ClusterIP None 50051/TCP,50053/TCP,50052/TCP 61s + scalardl-ledger-metrics ClusterIP 10.99.122.106 8080/TCP 61s + ``` + + ScalarDL Ledger および ScalarDL Auditor サービスが適切にデプロイされている場合は、`CLUSTER-IP` 列にプライベート IP アドレスが表示されます。 + +:::note + +`scalardl-ledger-headless`、`scalardl-auditor-headless`、`postgresql-ledger-hl`、および `postgresql-auditor-hl` の `CLUSTER-IP` 値は、IP アドレスがないため `None` になります。 + +::: + +## ステップ 7. クライアントコンテナを起動する + +クライアントコンテナで CA 証明書ファイルを使用します。そのため、シークレットリソースを作成し、クライアントコンテナにマウントする必要があります。 + +1. `client-ca-cert` という名前のシークレットリソースを作成します。 + + ```console + kubectl create secret generic client-ca-cert --from-file=ca.crt=<(kubectl get secret self-signed-ca-cert-secret -o "jsonpath={.data['ca\.crt']}" | base64 -d) -n default + ``` + +1. クライアント ポッドのマニフェスト ファイル (`scalardl-client-pod.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/scalardl-client-pod.yaml + apiVersion: v1 + kind: Pod + metadata: + name: "scalardl-client" + spec: + containers: + - name: scalardl-client + image: eclipse-temurin:8-jdk + command: ['sleep'] + args: ['inf'] + env: + - name: SCALAR_DL_VERSION + value: SCALAR_DL_CLIENT_POD_SCALAR_DL_VERSION + volumeMounts: + - name: "client-ca-cert" + mountPath: "/certs/" + readOnly: true + volumes: + - name: "client-ca-cert" + secret: + secretName: "client-ca-cert" + restartPolicy: Never + EOF + ``` + +1. マニフェストファイルで ScalarDL バージョンを設定します。 + + ```console + sed -i s/SCALAR_DL_CLIENT_POD_SCALAR_DL_VERSION/${SCALAR_DL_VERSION}/ ${HOME}/scalardl-test/scalardl-client-pod.yaml + ``` + +1. クライアントポッドをデプロイします。 + + ```console + kubectl apply -f ${HOME}/scalardl-test/scalardl-client-pod.yaml -n default + ``` + +1. クライアントコンテナーが実行されているかどうかを確認します。 + + ```console + kubectl get pod scalardl-client -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + scalardl-client 1/1 Running 0 4s + ``` + +## ステップ 8. クライアントコンテナで ScalarDL サンプルコントラクトを実行する + +以下では、サンプルコントラクトを実行するために必要な最小限の手順について説明します。ScalarDL Ledger と ScalarDL Auditor の詳細については、以下を参照してください。 + +* [ScalarDL の使用開始](https://scalardl.scalar-labs.com/docs/latest/getting-started/) +* [ScalarDL Auditor の使用開始](https://scalardl.scalar-labs.com/docs/latest/getting-started-auditor/) + +1. クライアントコンテナーで bash を実行します。 + + ```console + kubectl exec -it scalardl-client -n default -- bash + ``` + + 次の手順のコマンドは、クライアントコンテナーで実行する必要があります。 + +1. クライアントコンテナーに git、curl、unzip コマンドをインストールします。 + + ```console + apt update && apt install -y git curl unzip + ``` + +1. ScalarDL Java Client SDK git リポジトリをクローンします。 + + ```console + git clone https://github.com/scalar-labs/scalardl-java-client-sdk.git + ``` + +1. 作業ディレクトリを `scalardl-java-client-sdk/` に変更します。 + + ```console + cd scalardl-java-client-sdk/ + ``` + + ```console + pwd + ``` + + [コマンド実行結果] + + ```console + /scalardl-java-client-sdk + ``` + +1. 使用しているバージョンにブランチを変更します。 + + ```console + git checkout -b v${SCALAR_DL_VERSION} refs/tags/v${SCALAR_DL_VERSION} + ``` + +1. サンプルコントラクトを作成します。 + + ```console + ./gradlew assemble + ``` + +1. [ScalarDL Java Client SDK リリース](https://github.com/scalar-labs/scalardl-java-client-sdk/releases)から ScalarDL の CLI ツールをダウンロードします。 + + ```console + curl -OL https://github.com/scalar-labs/scalardl-java-client-sdk/releases/download/v${SCALAR_DL_VERSION}/scalardl-java-client-sdk-${SCALAR_DL_VERSION}.zip + ``` + +1. `scalardl-java-client-sdk-${SCALAR_DL_VERSION}.zip` ファイルを解凍します。 + + ```console + unzip ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}.zip + ``` + +1. Kubernetes クラスター上の ScalarDL Ledger および ScalarDL Auditor にアクセスするための `client.properties` という名前の構成ファイルを作成します。 + + ```console + cat << 'EOF' > client.properties + # Ledger configuration + scalar.dl.client.server.host=scalardl-ledger-envoy.default.svc.cluster.local + scalar.dl.client.tls.enabled=true + scalar.dl.client.tls.ca_root_cert_path=/certs/ca.crt + scalar.dl.client.tls.override_authority=envoy.scalar.example.com + + # Auditor configuration + scalar.dl.client.auditor.enabled=true + scalar.dl.client.auditor.host=scalardl-auditor-envoy.default.svc.cluster.local + scalar.dl.client.auditor.tls.enabled=true + scalar.dl.client.auditor.tls.ca_root_cert_path=/certs/ca.crt + scalar.dl.client.auditor.tls.override_authority=envoy.scalar.example.com + + # Client configuration + scalar.dl.client.authentication_method=hmac + scalar.dl.client.entity.id=client + scalar.dl.client.entity.identity.hmac.secret_key=scalardl-hmac-client-secert-key + EOF + ``` + +1. クライアントシークレットを登録します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl register-secret --config ./client.properties + ``` + +1. サンプルコントラクト `StateUpdater` を登録します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl register-contract --config ./client.properties --contract-id StateUpdater --contract-binary-name com.org1.contract.StateUpdater --contract-class-file ./build/classes/java/main/com/org1/contract/StateUpdater.class + ``` + +1. サンプルコントラクト `StateReader` を登録します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl register-contract --config ./client.properties --contract-id StateReader --contract-binary-name com.org1.contract.StateReader --contract-class-file ./build/classes/java/main/com/org1/contract/StateReader.class + ``` + +1. 検証リクエストを実行するには、コントラクト `ValidateLedger` を登録します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl register-contract --config ./client.properties --contract-id validate-ledger --contract-binary-name com.scalar.dl.client.contract.ValidateLedger --contract-class-file ./build/classes/java/main/com/scalar/dl/client/contract/ValidateLedger.class + ``` + +1. コントラクト `StateUpdater` を実行します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl execute-contract --config ./client.properties --contract-id StateUpdater --contract-argument '{"asset_id": "test_asset", "state": 3}' + ``` + + このサンプル契約は、`test_asset` という名前の資産の `state` (値) を `3` に更新します。 + +1. コントラクト `StateReader` を実行します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl execute-contract --config ./client.properties --contract-id StateReader --contract-argument '{"asset_id": "test_asset"}' + ``` + + [コマンド実行結果] + + ```console + Contract result: + { + "id" : "test_asset", + "age" : 0, + "output" : { + "state" : 3 + } + } + ``` + + ### 参照 + + * 資産データが改ざんされていない場合、契約実行を要求する `execute-contract` コマンドを実行すると、結果として `OK` が返されます。 + * アセットデータが改ざんされている場合(たとえば、データベースの `state` 値が改ざんされている場合)、コントラクト実行を要求する `execute-contract` コマンドを実行すると、結果として `OK` 以外の値(たとえば、`INCONSISTENT_STATES`)が返されます。ScalarDL がデータ改ざんを検出する方法の例については、以下を参照してください。 + + [コマンド実行結果(資産データが改ざんされた場合)] + + ```console + { + "status_code" : "INCONSISTENT_STATES", + "error_message" : "The results from Ledger and Auditor don't match" + } + ``` + +1. 資産の検証リクエストを実行します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl validate-ledger --config ./client.properties --asset-id "test_asset" + ``` + + [コマンド実行結果] + + ```console + { + "status_code" : "OK", + "Ledger" : { + "id" : "test_asset", + "age" : 0, + "nonce" : "3533427d-03cf-41d1-bf95-4d31eb0cb24d", + "hash" : "FiquvtPMKLlxKf4VGoccSAGsi9ptn4ozYVVTwdSzEQ0=", + "signature" : "MEYCIQDiiXqzw6K+Ml4uvn8rK43o5wHWESU3hoXnZPi6/OeKVwIhAM+tFBcapl6zg47Uq0Uc8nVNGWNHZLBDBGve3F0xkzTR" + }, + "Auditor" : { + "id" : "test_asset", + "age" : 0, + "nonce" : "3533427d-03cf-41d1-bf95-4d31eb0cb24d", + "hash" : "FiquvtPMKLlxKf4VGoccSAGsi9ptn4ozYVVTwdSzEQ0=", + "signature" : "MEUCIQDLsfUR2PmxSvfpL3YvHJUkz00RDpjCdctkroZKXE8d5QIgH73FQH2e11jfnynD00Pp9DrIG1vYizxDsvxUsMPo9IU=" + } + } + ``` + + ### 参照 + + * 資産データが改ざんされていない場合、検証を要求する `validate-ledger` コマンドを実行すると、結果として `OK` が返されます。 + * 資産データが改ざんされている場合 (たとえば、データベースの `state` 値が改ざんされている場合)、検証を要求する `validate-ledger` コマンドを実行すると、結果として `OK` 以外の値 (たとえば、`INVALID_OUTPUT`) が返されます。ScalarDL がデータ改ざんを検出する方法の例については、以下を参照してください。 + + [コマンド実行結果(資産データが改ざんされた場合)] + + ```console + { + "status_code" : "INCONSISTENT_STATES", + "error_message" : "The results from Ledger and Auditor don't match" + } + ``` + +1. クライアントコンテナーを終了します。 + + ```console + exit + ``` + +## ステップ9. すべてのリソースを削除する + +Kubernetes クラスターで ScalarDL Ledger および ScalarDL Auditor テストを完了したら、すべてのリソースを削除します。 + +1. ScalarDL Ledger、ScalarDL Auditor、ScalarDL Schema Loader、および PostgreSQL をアンインストールします。 + + ```console + helm uninstall -n default scalardl-ledger schema-loader-ledger postgresql-ledger scalardl-auditor schema-loader-auditor postgresql-auditor + ``` + +1. 自己署名 CA を削除します。 + + ``` + kubectl delete -f ./private-ca-custom-values.yaml + ``` + +1. cert-manager をアンインストールします。 + + ```console + helm uninstall -n cert-manager cert-manager + ``` + +1. クライアントコンテナーを削除します。 + + ``` + kubectl delete pod scalardl-client --grace-period 0 -n default + ``` + +1. シークレットリソースを削除します。 + + ``` + kubectl delete secrets self-signed-ca-cert-secret schema-ledger-credentials-secret schema-auditor-credentials-secret scalardl-ledger-tls-cert scalardl-ledger-envoy-tls-cert scalardl-auditor-tls-cert scalardl-auditor-envoy-tls-cert ledger-credentials-secret auditor-credentials-secret client-ca-cert auditor-keys + ``` + +1. ネームスペース `cert-manager` を削除します。 + + ``` + kubectl delete ns cert-manager + ``` + +1. 作業ディレクトリとサンプルファイル (構成ファイル) を削除します。 + + ```console + cd ${HOME} + ``` + + ```console + rm -rf ${HOME}/scalardl-test/ + ``` + +## 参考文献 + +Scalar 製品の監視またはログ記録を開始する方法については、次のチュートリアルを参照してください。 + +* [Helm チャートの使用開始 (Prometheus Operator を使用したモニタリング)](getting-started-monitoring.mdx) +* [Helm チャートの使用開始 (Loki Stack を使用したログ記録)](getting-started-logging.mdx) +* [Helm チャートの使用開始 (Scalar Manager)](getting-started-scalar-manager.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardl-auditor-tls.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardl-auditor-tls.mdx new file mode 100644 index 00000000..06474348 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardl-auditor-tls.mdx @@ -0,0 +1,1020 @@ +--- +--- + +# Helm チャートの入門 (TLS を使用した ScalarDL Ledger および Auditor / Auditor モード) + +このドキュメントでは、Kubernetes クラスター上の Helm Chart をテスト環境として使用して、TLS 構成で ScalarDL Ledger および ScalarDL Auditor を開始する方法について説明します。 ここでは、テスト用の Mac または Linux 環境がすでにあることを前提としています。 このドキュメントでは **minikube** を使用しますが、これから説明する手順はどの Kubernetes クラスターでも機能するはずです。 + +## 要件 + +* ScalarDLのライセンスキー(試用ライセンスまたは商用ライセンス)を取得する必要があります。 ライセンス キーをお持ちでない場合は、[お問い合わせ](https://www.scalar-labs.com/contact) してください。 +* TLSに対応したScalarDL v3.9以降を使用する必要があります。 + +:::note + +監査によるビザンチン障害検出を適切に機能させるには、ScalarDL Ledger と ScalarDL Auditor を別の管理ドメインに展開して管理する必要があります。 ただし、このチュートリアルでは、テストを容易にするために、ScalarDL Ledger と ScalarDL Auditor を同じ Kubernetes クラスターにデプロイします。 + +::: + +## 作成するもの + +次のように、次のコンポーネントを Kubernetes クラスターにデプロイします。 + +``` ++-----------------------------------------------------------------------------------------------------------------------------+ +| [Kubernetes Cluster] | +| [Pod] [Pod] [Pod] | +| | +| +-------+ +---------+ | +| +---> | Envoy | ---+ +---> | Ledger | ---+ | +| | +-------+ | | +---------+ | | +| | | | | | +| +---------+ | +-------+ | +-----------+ | +---------+ | +---------------+ | +| +---> | Service | ---+---> | Envoy | ---+---> | Service | ---+---> | Ledger | ---+---> | PostgreSQL | | +| | | (Envoy) | | +-------+ | | (Ledger) | | +---------+ | | (For Ledger) | | +| | +---------+ | | +-----------+ | | +---------------+ | +| [Pod] | | +-------+ | | +---------+ | | +| | +---> | Envoy | ---+ +---> | Ledger | ---+ | +| +--------+ | +-------+ +---------+ | +| | Client | ---+ | +| +--------+ | +-------+ +---------+ | +| | +---> | Envoy | ---+ +---> | Auditor | ---+ | +| | | +-------+ | | +---------+ | | +| | | | | | | +| | +---------+ | +-------+ | +-----------+ | +---------+ | +---------------+ | +| +---> | Service | ---+---> | Envoy | ---+---> | Service | ---+---> | Auditor | ---+---> | PostgreSQL | | +| | (Envoy) | | +-------+ | | (Auditor) | | +---------+ | | (For Auditor) | | +| +---------+ | | +-----------+ | | +---------------+ | +| | +-------+ | | +---------+ | | +| +---> | Envoy | ---+ +---> | Auditor | ---+ | +| +-------+ +---------+ | +| | ++-----------------------------------------------------------------------------------------------------------------------------+ +``` + +TLS 接続用に次の秘密キーファイルと証明書ファイルを作成します。 + +``` + +----------------------+ + +---> | For Scalar Envoy | + | +----------------------+ + | | envoy-key.pem | + | | envoy.pem | + | +----------------------+ + | ++----------------------+ | +----------------------+ +| Self-signed CA | ---(Sign certificates)---+---> | For ScalarDL Ledger | ++----------------------+ | +----------------------+ +| ca-key.pem | | | ledger-key.pem | +| ca.pem | | | ledger.pem | ++----------------------+ | +----------------------+ + | + | +----------------------+ + +---> | For ScalarDL Auditor | + +----------------------+ + | auditor-key.pem | + | auditor.pem | + +----------------------+ +``` + +各接続で TLS を有効にするために、各秘密キーと証明書ファイルを次のように設定します。 + +``` + +--------------------------------+ +--------------------------------+ + +-------(Normal request)-----> | Envoy for ScalarDL Ledger | ---> | ScalarDL Ledger | + | +--------------------------------+ +--------------------------------+ + | +---(Recovery request)---> | envoy-key.pem | ---> | ledger-key.pem | + | | | envoy.pem | | ledger.pem | + | | | ca.pem (to verify ledger.pem) | | ca.pem (used for health check) | + | | +--------------------------------+ +--------------------------------+ ++--------------------------------+ | | +| Client | ---+ | ++--------------------------------+ | +--------------------------------------------------------------------------------------------------------+ +| ca.pem (to verify envoy.pem) | | | ++--------------------------------+ | | + | +--------------------------------+ +--------------------------------+ | + +-------(Normal request)-----> | Envoy for ScalarDL Auditor | ---> | ScalarDL Auditor | ---+ + +--------------------------------+ +--------------------------------+ + | envoy-key.pem | | auditor-key.pem | + | envoy.pem | | auditor.pem | + | ca.pem (to verify auditor.pem) | | ca.pem (used for health check) | + +--------------------------------+ | ca.pem (to verify ledger.pem) | + +--------------------------------+ +``` + +ScalarDL 関連コンポーネント間には、次の接続があります。 + +* **`クライアント - ScalarDL Ledger の Envoy`:** 一部のScalarDL APIを実行すると、クライアントはEnvoy for ScalarDL Ledgerにアクセスします。 +* **`クライアント - ScalarDL Auditor の Envoy`:** 一部のScalarDL APIを実行すると、クライアントはEnvoy for ScalarDL Auditorにアクセスします。 +* **`ScalarDL Ledgerの Envoy - ScalarDL Ledger`:** Envoy は、ScalarDL Ledger の前で L7 (gRPC) ロード バランサーとして機能します。 +* **`ScalarDL Auditor の Envoy - ScalarDL Auditor`:** Envoy は、ScalarDL Auditor の前で L7 (gRPC) ロード バランサーとして機能します。 +* **`ScalarDL Auditor - ScalarDL Ledger (ScalarDL Ledger) の Envoy`:** ScalarDL がデータの一貫性を保つために回復プロセスを実行する必要がある場合、ScalarDL Auditor は Envoy を介して ScalarDL Lever に対してリクエストを実行します。 + +## ステップ 1. Kubernetes クラスターを開始する + +Kubernetes クラスターを準備し、いくつかのツール (`kubectl`、`helm`、`cfssl`、および `cfssljson`) をインストールする必要があります。 インストール方法の詳細については、[Scalar Helm Charts の開始](getting-started-scalar-helm-charts.mdx) を参照してください。 + +## ステップ 2. PostgreSQL コンテナーを開始する + +ScalarDL Ledger および ScalarDL Auditor は、バックエンドデータベースとして何らかのデータベースシステムを使用する必要があります。 このチュートリアルでは、PostgreSQL を使用します。 + +次のようにして、Kubernetes クラスターに PostgreSQL をデプロイできます。 + +1. Bitnami Helm リポジトリを追加します。 + + ```console + helm repo add bitnami https://charts.bitnami.com/bitnami + ``` + +1. Ledger 用に PostgreSQL をデプロイします。 + + ```console + helm install postgresql-ledger bitnami/postgresql \ + --set auth.postgresPassword=postgres \ + --set primary.persistence.enabled=false \ + -n default + ``` + +1. Auditor 用に PostgreSQL をデプロイします。 + + ```console + helm install postgresql-auditor bitnami/postgresql \ + --set auth.postgresPassword=postgres \ + --set primary.persistence.enabled=false \ + -n default + ``` + +1. PostgreSQL コンテナが実行されているかどうかを確認します。 + + ```console + kubectl get pod -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + postgresql-auditor-0 1/1 Running 0 11s + postgresql-ledger-0 1/1 Running 0 16s + ``` + +## ステップ 3. 作業ディレクトリを作成する + +いくつかの構成ファイルと秘密キーおよび証明書ファイルをローカルに作成します。 したがって、それらの作業ディレクトリを作成します。 + +1. 作業ディレクトリを作成します。 + + ```console + mkdir -p ${HOME}/scalardl-test/certs/ + ``` + +## ステップ 4. 秘密キーおよび証明書ファイルを作成する + +秘密キーと証明書ファイルを作成します。 + +1. 作業ディレクトリを `${HOME}/scalardl-test/certs/` ディレクトリに変更します。 + + ```console + cd ${HOME}/scalardl-test/certs/ + ``` + +1. CA の情報を含む JSON ファイルを作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/certs/ca.json + { + "CN": "scalar-test-ca", + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "C": "JP", + "ST": "Tokyo", + "L": "Shinjuku", + "O": "Scalar Test CA" + } + ] + } + EOF + ``` + +1. CA の鍵/証明書ファイルを作成します。 + + ```console + cfssl gencert -initca ca.json | cfssljson -bare ca + ``` + +1. CA 構成を含む JSON ファイルを作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/certs/ca-config.json + { + "signing": { + "default": { + "expiry": "87600h" + }, + "profiles": { + "scalar-test-ca": { + "expiry": "87600h", + "usages": [ + "signing", + "key encipherment", + "server auth" + ] + } + } + } + } + EOF + ``` + +1. Envoy 情報を含む JSON ファイルを作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/certs/envoy.json + { + "CN": "scalar-envoy", + "hosts": [ + "envoy.scalar.example.com", + "localhost" + ], + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "C": "JP", + "ST": "Tokyo", + "L": "Shinjuku", + "O": "Scalar Envoy Test" + } + ] + } + EOF + ``` + +1. ScalarDL Ledger 情報を含む JSON ファイルを作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/certs/ledger.json + { + "CN": "scalardl-ledger", + "hosts": [ + "ledger.scalardl.example.com", + "localhost" + ], + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "C": "JP", + "ST": "Tokyo", + "L": "Shinjuku", + "O": "ScalarDL Ledger Test" + } + ] + } + EOF + ``` + +1. ScalarDL Auditor 情報を含む JSON ファイルを作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/certs/auditor.json + { + "CN": "scalardl-auditor", + "hosts": [ + "auditor.scalardl.example.com", + "localhost" + ], + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "C": "JP", + "ST": "Tokyo", + "L": "Shinjuku", + "O": "ScalarDL Auditor Test" + } + ] + } + EOF + ``` + +1. Envoy の秘密キーおよび証明書ファイルを作成します。 + + ```console + cfssl gencert -ca ca.pem -ca-key ca-key.pem -config ca-config.json -profile scalar-test-ca envoy.json | cfssljson -bare envoy + ``` + +1. ScalarDL Ledger の秘密キーおよび証明書ファイルを作成します。 + + ```console + cfssl gencert -ca ca.pem -ca-key ca-key.pem -config ca-config.json -profile scalar-test-ca ledger.json | cfssljson -bare ledger + ``` + +1. ScalarDL Auditor の秘密キーおよび証明書ファイルを作成します。 + + ```console + cfssl gencert -ca ca.pem -ca-key ca-key.pem -config ca-config.json -profile scalar-test-ca auditor.json | cfssljson -bare auditor + ``` + +1. 秘密キーおよび証明書ファイルが作成されたことを確認します。 + + ```console + ls -1 + ``` + + [コマンド実行結果] + + ```console + auditor-key.pem + auditor.csr + auditor.json + auditor.pem + ca-config.json + ca-key.pem + ca.csr + ca.json + ca.pem + envoy-key.pem + envoy.csr + envoy.json + envoy.pem + ledger-key.pem + ledger.csr + ledger.json + ledger.pem + ``` + +## ステップ 5. Helm チャートを使用して ScalarDL Ledger と ScalarDL Auditor の DB スキーマを作成する + +Helm Chart を使用して、Kubernetes クラスターに 2 つの ScalarDL Schema Loader ポッドをデプロイします。 ScalarDL Schema Loader は、PostgreSQL で ScalarDL Ledger と Auditor の DB スキーマを作成します。 + +1. 作業ディレクトリを `${HOME}/scalardl-test/` に変更します。 + + ```console + cd ${HOME}/scalardl-test/ + ``` + +1. Scalar helm リポジトリを追加します。 + + ```console + helm repo add scalar-labs https://scalar-labs.github.io/helm-charts + ``` + +1. ScalarDL Schema Loader for Ledger のカスタム値ファイル (`schema-loader-ledger-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/schema-loader-ledger-custom-values.yaml + schemaLoading: + schemaType: "ledger" + databaseProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres + scalar.db.username=${env:SCALAR_DL_LEDGER_POSTGRES_USERNAME} + scalar.db.password=${env:SCALAR_DL_LEDGER_POSTGRES_PASSWORD} + scalar.db.storage=jdbc + secretName: "schema-ledger-credentials-secret" + EOF + ``` + +1. ScalarDL Schema Loader for Auditor のカスタム値ファイル (`schema-loader-auditor-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/schema-loader-auditor-custom-values.yaml + schemaLoading: + schemaType: "auditor" + databaseProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-auditor.default.svc.cluster.local:5432/postgres + scalar.db.username=${env:SCALAR_DL_AUDITOR_POSTGRES_USERNAME} + scalar.db.password=${env:SCALAR_DL_AUDITOR_POSTGRES_PASSWORD} + scalar.db.storage=jdbc + secretName: "schema-auditor-credentials-secret" + EOF + ``` + +1. PostgreSQL for Ledger のユーザー名とパスワードを含むシークレット リソースを作成します。 + + ```console + kubectl create secret generic schema-ledger-credentials-secret \ + --from-literal=SCALAR_DL_LEDGER_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DL_LEDGER_POSTGRES_PASSWORD=postgres \ + -n default + ``` + +1. PostgreSQL for Auditor のユーザー名とパスワードを含むシークレット リソースを作成します。 + + ```console + kubectl create secret generic schema-auditor-credentials-secret \ + --from-literal=SCALAR_DL_AUDITOR_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DL_AUDITOR_POSTGRES_PASSWORD=postgres \ + -n default + ``` + +1. ScalarDL Schema Loaderのチャートバージョンを設定します。 + + ```console + SCALAR_DL_VERSION=3.9.1 + SCALAR_DL_SCHEMA_LOADER_CHART_VERSION=$(helm search repo scalar-labs/schema-loading -l | grep -F "${SCALAR_DL_VERSION}" | awk '{print $2}' | sort --version-sort -r | head -n 1) + ``` + +1. Ledger 用の ScalarDL スキーマ ローダーをデプロイします。 + + ```console + helm install schema-loader-ledger scalar-labs/schema-loading -f ${HOME}/scalardl-test/schema-loader-ledger-custom-values.yaml --version ${SCALAR_DL_SCHEMA_LOADER_CHART_VERSION} -n default + ``` + +1. Auditor 用の ScalarDL スキーマ ローダーをデプロイします。 + + ```console + helm install schema-loader-auditor scalar-labs/schema-loading -f ${HOME}/scalardl-test/schema-loader-auditor-custom-values.yaml --version ${SCALAR_DL_SCHEMA_LOADER_CHART_VERSION} -n default + ``` + +1. ScalarDL Schema Loader ポッドがデプロイされ、完了しているかどうかを確認します。 + + ```console + kubectl get pod -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + postgresql-auditor-0 1/1 Running 0 2m56s + postgresql-ledger-0 1/1 Running 0 3m1s + schema-loader-auditor-schema-loading-dvc5r 0/1 Completed 0 6s + schema-loader-ledger-schema-loading-mtllb 0/1 Completed 0 10s + ``` + ScalarDL Schema Loader ポッドが **ContainerCreating** または **Running** の場合は、プロセスが完了するまで待ちます (ステータスは **Completed** になります)。 + +## ステップ 6. Helm Chart を使用して Kubernetes クラスターに ScalarDL Ledger と ScalarDL Auditor をデプロイする + +1. ScalarDL Ledger のカスタム値ファイル (`scalardl-ledger-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/scalardl-ledger-custom-values.yaml + envoy: + + tls: + downstream: + enabled: true + certChainSecret: "envoy-tls-cert" + privateKeySecret: "envoy-tls-key" + upstream: + enabled: true + overrideAuthority: "ledger.scalardl.example.com" + caRootCertSecret: "scalardl-ledger-tls-ca" + + ledger: + + image: + repository: "ghcr.io/scalar-labs/scalardl-ledger-byol" + + ledgerProperties: | + ### Storage configurations + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres + scalar.db.username=${env:SCALAR_DL_LEDGER_POSTGRES_USERNAME} + scalar.db.password=${env:SCALAR_DL_LEDGER_POSTGRES_PASSWORD} + + ### Ledger configurations + scalar.dl.ledger.proof.enabled=true + scalar.dl.ledger.auditor.enabled=true + scalar.dl.ledger.authentication.method=hmac + scalar.dl.ledger.authentication.hmac.cipher_key=${env:SCALAR_DL_LEDGER_HMAC_CIPHER_KEY} + scalar.dl.ledger.servers.authentication.hmac.secret_key=${env:SCALAR_DL_LEDGER_HMAC_SECRET_KEY} + + ### TLS configurations + scalar.dl.ledger.server.tls.enabled=true + scalar.dl.ledger.server.tls.cert_chain_path=/tls/scalardl-auditor/certs/tls.crt + scalar.dl.ledger.server.tls.private_key_path=/tls/scalardl-auditor/certs/tls.key + + ### License key configurations + scalar.dl.licensing.license_key=${env:SCALAR_DL_LICENSE_KEY} + scalar.dl.licensing.license_check_cert_pem=${env:SCALAR_DL_LICENSE_CHECK_CERT_PEM} + + tls: + enabled: true + overrideAuthority: "ledger.scalardl.example.com" + caRootCertSecret: "scalardl-ledger-tls-ca" + certChainSecret: "scalardl-ledger-tls-cert" + privateKeySecret: "scalardl-ledger-tls-key" + + secretName: "ledger-credentials-secret" + EOF + ``` + +1. ScalarDL Auditor のカスタム値ファイル (`scalardl-auditor-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/scalardl-auditor-custom-values.yaml + envoy: + + tls: + downstream: + enabled: true + certChainSecret: "envoy-tls-cert" + privateKeySecret: "envoy-tls-key" + upstream: + enabled: true + overrideAuthority: "auditor.scalardl.example.com" + caRootCertSecret: "scalardl-auditor-tls-ca" + + auditor: + + image: + repository: "ghcr.io/scalar-labs/scalardl-auditor-byol" + + auditorProperties: | + ### Storage configurations + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:postgresql://postgresql-auditor.default.svc.cluster.local:5432/postgres + scalar.db.username=${env:SCALAR_DL_AUDITOR_POSTGRES_USERNAME} + scalar.db.password=${env:SCALAR_DL_AUDITOR_POSTGRES_PASSWORD} + + ### Auditor configurations + scalar.dl.auditor.ledger.host=scalardl-ledger-envoy.default.svc.cluster.local + scalar.dl.auditor.authentication.method=hmac + scalar.dl.auditor.authentication.hmac.cipher_key=${env:SCALAR_DL_AUDITOR_HMAC_CIPHER_KEY} + scalar.dl.auditor.servers.authentication.hmac.secret_key=${env:SCALAR_DL_AUDITOR_HMAC_SECRET_KEY} + + ### TLS configurations + scalar.dl.auditor.server.tls.enabled=true + scalar.dl.auditor.server.tls.cert_chain_path=/tls/scalardl-auditor/certs/tls.crt + scalar.dl.auditor.server.tls.private_key_path=/tls/scalardl-auditor/certs/tls.key + scalar.dl.auditor.tls.enabled=true + scalar.dl.auditor.tls.ca_root_cert_path=/tls/scalardl-ledger/certs/ca.crt + scalar.dl.auditor.tls.override_authority=envoy.scalar.example.com + + ### License key configurations + scalar.dl.licensing.license_key=${env:SCALAR_DL_LICENSE_KEY} + scalar.dl.licensing.license_check_cert_pem=${env:SCALAR_DL_LICENSE_CHECK_CERT_PEM} + + tls: + enabled: true + overrideAuthority: "auditor.scalardl.example.com" + caRootCertSecret: "scalardl-auditor-tls-ca" + certChainSecret: "scalardl-auditor-tls-cert" + privateKeySecret: "scalardl-auditor-tls-key" + caRootCertForLedgerSecret: "scalardl-auditor-tls-ca-for-ledger" + + secretName: "auditor-credentials-secret" + EOF + ``` + +1. ライセンスキーと証明書を環境変数に設定します。 ライセンスキーをお持ちでない場合は、[お問い合わせ](https://www.scalar-labs.com/contact) してください。 + + ```console + SCALAR_DL_LICENSE_KEY= + SCALAR_DL_LICENSE_CHECK_CERT_PEM= + ``` + +1. 資格情報とライセンスキーを含むシークレット リソース `ledger-credentials-secret` を作成します。 + + ```console + kubectl create secret generic ledger-credentials-secret \ + --from-literal=SCALAR_DL_LEDGER_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DL_LEDGER_POSTGRES_PASSWORD=postgres \ + --from-literal=SCALAR_DL_LEDGER_HMAC_CIPHER_KEY=ledger-hmac-cipher-key \ + --from-literal=SCALAR_DL_LEDGER_HMAC_SECRET_KEY=scalardl-hmac-secret-key \ + --from-literal=SCALAR_DL_LICENSE_KEY=${SCALAR_DL_LICENSE_KEY} \ + --from-literal=SCALAR_DL_LICENSE_CHECK_CERT_PEM=${SCALAR_DL_LICENSE_CHECK_CERT_PEM} \ + -n default + ``` + +1. 資格情報とライセンスキーを含むシークレット リソース `auditor-credentials-secret` を作成します。 + + ```console + kubectl create secret generic auditor-credentials-secret \ + --from-literal=SCALAR_DL_AUDITOR_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DL_AUDITOR_POSTGRES_PASSWORD=postgres \ + --from-literal=SCALAR_DL_AUDITOR_HMAC_CIPHER_KEY=auditor-hmac-cipher-key \ + --from-literal=SCALAR_DL_AUDITOR_HMAC_SECRET_KEY=scalardl-hmac-secret-key \ + --from-literal=SCALAR_DL_LICENSE_KEY=${SCALAR_DL_LICENSE_KEY} \ + --from-literal=SCALAR_DL_LICENSE_CHECK_CERT_PEM=${SCALAR_DL_LICENSE_CHECK_CERT_PEM} \ + -n default + ``` + +1. Envoy の秘密キーファイルと証明書ファイルを含むシークレット リソースを作成します。 + + ```console + kubectl create secret generic envoy-tls-cert --from-file=tls.crt=${HOME}/scalardl-test/certs/envoy.pem -n default + kubectl create secret generic envoy-tls-key --from-file=tls.key=${HOME}/scalardl-test/certs/envoy-key.pem -n default + ``` + +1. ScalarDL Ledger の秘密キー、証明書、CA 証明書ファイルを含むシークレット リソースを作成します。 + + ```console + kubectl create secret generic scalardl-ledger-tls-ca --from-file=ca.crt=${HOME}/scalardl-test/certs/ca.pem -n default + kubectl create secret generic scalardl-ledger-tls-cert --from-file=tls.crt=${HOME}/scalardl-test/certs/ledger.pem -n default + kubectl create secret generic scalardl-ledger-tls-key --from-file=tls.key=${HOME}/scalardl-test/certs/ledger-key.pem -n default + ``` + +1. ScalarDL Auditor の秘密キー、証明書、CA 証明書ファイルを含むシークレット リソースを作成します。 + + ```console + kubectl create secret generic scalardl-auditor-tls-ca --from-file=ca.crt=${HOME}/scalardl-test/certs/ca.pem -n default + kubectl create secret generic scalardl-auditor-tls-cert --from-file=tls.crt=${HOME}/scalardl-test/certs/auditor.pem -n default + kubectl create secret generic scalardl-auditor-tls-key --from-file=tls.key=${HOME}/scalardl-test/certs/auditor-key.pem -n default + kubectl create secret generic scalardl-auditor-tls-ca-for-ledger --from-file=ca.crt=${HOME}/scalardl-test/certs/ca.pem -n default + ``` + +1. 秘密リソース `auditor-keys` を作成して、`デジタル署名` 認証方法を無効にします。 このドキュメントでは、 `デジタル署名` の代わりに `hmac` 認証方法を使用します。 + + ```console + kubectl create secret generic auditor-keys \ + --from-literal=tls.key=dummy-data-to-disable-digital-signature-method \ + --from-literal=certificate=dummy-data-to-disable-digital-signature-method \ + -n default + ``` + 注: 認証方法として `hmac` を使用する場合は、ダミーのシークレット `auditor-key` を作成して、ヘルム チャート側の `デジタル署名` を無効にする必要があります。 + +1. ScalarDL のチャートのバージョンを設定します。 + + ```console + SCALAR_DL_LEDGER_CHART_VERSION=$(helm search repo scalar-labs/scalardl -l | grep -v -e "scalar-labs/scalardl-audit" | grep -F "${SCALAR_DL_VERSION}" | awk '{print $2}' | sort --version-sort -r | head -n 1) + SCALAR_DL_AUDITOR_CHART_VERSION=$(helm search repo scalar-labs/scalardl-audit -l | grep -F "${SCALAR_DL_VERSION}" | awk '{print $2}' | sort --version-sort -r | head -n 1) + ``` + +1. ScalarDL Ledger をデプロイします。 + + ```console + helm install scalardl-ledger scalar-labs/scalardl -f ${HOME}/scalardl-test/scalardl-ledger-custom-values.yaml --version ${SCALAR_DL_LEDGER_CHART_VERSION} -n default + ``` + +1. ScalarDL Auditor をデプロイします。 + + ```console + helm install scalardl-auditor scalar-labs/scalardl-audit -f ${HOME}/scalardl-test/scalardl-auditor-custom-values.yaml --version ${SCALAR_DL_AUDITOR_CHART_VERSION} -n default + ``` + +1. ScalarDL Ledger および ScalarDL Auditor ポッドがデプロイされているかどうかを確認します。 + + ```console + kubectl get pod -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + postgresql-auditor-0 1/1 Running 0 14m + postgresql-ledger-0 1/1 Running 0 14m + scalardl-auditor-auditor-5b885ff4c8-fwkpf 1/1 Running 0 18s + scalardl-auditor-auditor-5b885ff4c8-g69cb 1/1 Running 0 18s + scalardl-auditor-auditor-5b885ff4c8-nsmnq 1/1 Running 0 18s + scalardl-auditor-envoy-689bcbdf65-5mn6v 1/1 Running 0 18s + scalardl-auditor-envoy-689bcbdf65-fpq8j 1/1 Running 0 18s + scalardl-auditor-envoy-689bcbdf65-lsz2t 1/1 Running 0 18s + scalardl-ledger-envoy-547bbf7546-n7p5x 1/1 Running 0 26s + scalardl-ledger-envoy-547bbf7546-p8nwp 1/1 Running 0 26s + scalardl-ledger-envoy-547bbf7546-pskpb 1/1 Running 0 26s + scalardl-ledger-ledger-6db5dc8774-5zsbj 1/1 Running 0 26s + scalardl-ledger-ledger-6db5dc8774-vnmrw 1/1 Running 0 26s + scalardl-ledger-ledger-6db5dc8774-wpjvs 1/1 Running 0 26s + schema-loader-auditor-schema-loading-dvc5r 0/1 Completed 0 11m + schema-loader-ledger-schema-loading-mtllb 0/1 Completed 0 11m + ``` + + ScalarDL Ledger および ScalarDL Auditor ポッドが適切にデプロイされている場合、ステータスが **Running** であることがわかります。 + +1. ScalarDL Ledger サービスと ScalarDL Auditor サービスがデプロイされているかどうかを確認します。 + + ```console + kubectl get svc -n default + ``` + + [コマンド実行結果] + + ```console + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + kubernetes ClusterIP 10.96.0.1 443/TCP 47d + postgresql-auditor ClusterIP 10.107.9.78 5432/TCP 15m + postgresql-auditor-hl ClusterIP None 5432/TCP 15m + postgresql-ledger ClusterIP 10.108.241.181 5432/TCP 15m + postgresql-ledger-hl ClusterIP None 5432/TCP 15m + scalardl-auditor-envoy ClusterIP 10.100.61.202 40051/TCP,40052/TCP 55s + scalardl-auditor-envoy-metrics ClusterIP 10.99.6.227 9001/TCP 55s + scalardl-auditor-headless ClusterIP None 40051/TCP,40053/TCP,40052/TCP 55s + scalardl-auditor-metrics ClusterIP 10.108.1.147 8080/TCP 55s + scalardl-ledger-envoy ClusterIP 10.101.191.116 50051/TCP,50052/TCP 61s + scalardl-ledger-envoy-metrics ClusterIP 10.106.52.103 9001/TCP 61s + scalardl-ledger-headless ClusterIP None 50051/TCP,50053/TCP,50052/TCP 61s + scalardl-ledger-metrics ClusterIP 10.99.122.106 8080/TCP 61s + ``` + ScalarDL Ledger サービスと ScalarDL Auditor サービスが適切にデプロイされている場合は、CLUSTER-IP 列にプライベート IP アドレスが表示されます。 + +:::note + +`scalardl-ledger-headless`、`scalardl-auditor-headless`、`postgresql-ledger-hl`、`postgresql-auditor-hl` の `CLUSTER-IP` の値は、IP アドレスがないため `None` になります。 。 + +::: + +## ステップ 7. クライアントコンテナを開始する + +クライアントコンテナでCAの証明書ファイルを使用します。 そこで、シークレット リソースを作成し、クライアント コンテナにマウントします。 + +1. シークレット リソース `client-ca-cert` を作成します。 + + ```console + kubectl create secret generic client-ca-cert --from-file=certificate=${HOME}/scalardl-test/certs/ca.pem -n default + ``` + +1. クライアント ポッドのマニフェスト ファイル (`scalardl-client-pod.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/scalardl-client-pod.yaml + apiVersion: v1 + kind: Pod + metadata: + name: "scalardl-client" + spec: + containers: + - name: scalardl-client + image: eclipse-temurin:8-jdk + command: ['sleep'] + args: ['inf'] + env: + - name: SCALAR_DL_VERSION + value: SCALAR_DL_CLIENT_POD_SCALAR_DL_VERSION + volumeMounts: + - name: "client-ca-cert" + mountPath: "/certs/ca/ca.pem" + subPath: certificate + readOnly: true + volumes: + - name: "client-ca-cert" + secret: + secretName: "client-ca-cert" + restartPolicy: Never + EOF + ``` + +1. マニフェスト ファイルに ScalarDL のバージョンを設定します。 + + ```console + sed -i s/SCALAR_DL_CLIENT_POD_SCALAR_DL_VERSION/${SCALAR_DL_VERSION}/ ${HOME}/scalardl-test/scalardl-client-pod.yaml + ``` + +1. クライアント ポッドをデプロイします。 + + ```console + kubectl apply -f ${HOME}/scalardl-test/scalardl-client-pod.yaml -n default + ``` + +1. クライアントコンテナが実行されているかどうかを確認します。 + + ```console + kubectl get pod scalardl-client -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + scalardl-client 1/1 Running 0 4s + ``` + +## ステップ 8. クライアント コンテナで ScalarDL サンプル コントラクトを実行する + +以下に最低限の手順を説明します。 ScalarDL LedgerとScalarDL Auditorについて詳しく知りたい場合は、以下のドキュメントを参照してください。 + +* [ScalarDL 入門](https://scalardl.scalar-labs.com/docs/latest/getting-started/) +* [ScalarDL Auditor 入門](https://scalardl.scalar-labs.com/docs/latest/getting-started-auditor/) + +1. クライアントコンテナで bash を実行します。 + + ```console + kubectl exec -it scalardl-client -n default -- bash + ``` + 次の手順移行のコマンドは、クライアントコンテナ無いで実行する必要があります。 + +1. git、curl、および unzip コマンドをクライアントコンテナにインストールします。 + + ```console + apt update && apt install -y git curl unzip + ``` + +1. ScalarDL Java クライアント SDK git リポジトリのクローンを作成します。 + + ```console + git clone https://github.com/scalar-labs/scalardl-java-client-sdk.git + ``` + +1. ディレクトリを `scalardl-java-client-sdk/` に変更します。 + + ```console + cd scalardl-java-client-sdk/ + ``` + + ```console + pwd + ``` + + [コマンド実行結果] + + ```console + /scalardl-java-client-sdk + ``` + +1. ブランチを使用するバージョンに変更します。 + + ```console + git checkout -b v${SCALAR_DL_VERSION} refs/tags/v${SCALAR_DL_VERSION} + ``` + +1. サンプルコントラクトを作成します。 + + ```console + ./gradlew assemble + ``` + +1. ScalarDL の CLI ツールを [ScalarDL Java Client SDK Releases](https://github.com/scalar-labs/scalardl-java-client-sdk/releases) からダウンロードします。 + + ```console + curl -OL https://github.com/scalar-labs/scalardl-java-client-sdk/releases/download/v${SCALAR_DL_VERSION}/scalardl-java-client-sdk-${SCALAR_DL_VERSION}.zip + ``` + 同じバージョンの CLI ツールと ScalarDL Ledger を使用する必要があります。 + +1. `scalardl-java-client-sdk-${SCALAR_DL_VERSION}.zip` ファイルを解凍します。 + + ```console + unzip ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}.zip + ``` + +1. Kubernetes クラスター上の ScalarDL Ledger および ScalarDL Auditor にアクセスするための構成ファイル (`client.properties`) を作成します。 + + ```console + cat << 'EOF' > client.properties + # Ledger configuration + scalar.dl.client.server.host=scalardl-ledger-envoy.default.svc.cluster.local + scalar.dl.client.tls.enabled=true + scalar.dl.client.tls.ca_root_cert_path=/certs/ca/ca.pem + scalar.dl.client.tls.override_authority=envoy.scalar.example.com + + # Auditor configuration + scalar.dl.client.auditor.enabled=true + scalar.dl.client.auditor.host=scalardl-auditor-envoy.default.svc.cluster.local + scalar.dl.client.auditor.tls.enabled=true + scalar.dl.client.auditor.tls.ca_root_cert_path=/certs/ca/ca.pem + scalar.dl.client.auditor.tls.override_authority=envoy.scalar.example.com + + # Client configuration + scalar.dl.client.authentication_method=hmac + scalar.dl.client.entity.id=client + scalar.dl.client.entity.identity.hmac.secret_key=scalardl-hmac-client-secert-key + EOF + ``` + +1. クライアントのシークレットを登録します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl register-secret --config ./client.properties + ``` + +1. サンプルコントラクト `StateUpdater` を登録します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl register-contract --config ./client.properties --contract-id StateUpdater --contract-binary-name com.org1.contract.StateUpdater --contract-class-file ./build/classes/java/main/com/org1/contract/StateUpdater.class + ``` + +1. サンプルコントラクト `StateReader` を登録します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl register-contract --config ./client.properties --contract-id StateReader --contract-binary-name com.org1.contract.StateReader --contract-class-file ./build/classes/java/main/com/org1/contract/StateReader.class + ``` + +1. 検証リクエストを実行するためのコントラクト `ValidateLedger` を登録します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl register-contract --config ./client.properties --contract-id validate-ledger --contract-binary-name com.scalar.dl.client.contract.ValidateLedger --contract-class-file ./build/classes/java/main/com/scalar/dl/client/contract/ValidateLedger.class + ``` + +1. コントラクト `StateUpdater` を実行します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl execute-contract --config ./client.properties --contract-id StateUpdater --contract-argument '{"asset_id": "test_asset", "state": 3}' + ``` + このサンプル コントラクトは、`test_asset` という名前のアセットの `state` (値) を `3` に更新します。 + +1. コントラクト `StateReader` を実行します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl execute-contract --config ./client.properties --contract-id StateReader --contract-argument '{"asset_id": "test_asset"}' + ``` + + [コマンド実行結果] + + ```console + Contract result: + { + "id" : "test_asset", + "age" : 0, + "output" : { + "state" : 3 + } + } + ``` + + ### 参考情報 + + * 資産データが改ざんされていない場合、`execute-contract` コマンドを実行してコントラクトの実行を要求すると、結果として `OK` が返されます。 + * 資産データが改ざんされている場合 (たとえば、データベース内の `state` 値が改ざんされている場合)、コントラクトの実行を要求する `execute-contract` コマンドを実行すると、実行結果として `OK` 以外の値が返されます (たとえば、 `INCONSISTENT_STATES`)。ScalarDL がデータ改ざんを検出する方法の例として、以下を参照してください。 + + [コマンド実行結果(資産データが改ざんされている場合)] + + ```console + { + "status_code" : "INCONSISTENT_STATES", + "error_message" : "The results from Ledger and Auditor don't match" + } + ``` + +1. アセットの検証リクエストを実行します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl validate-ledger --config ./client.properties --asset-id "test_asset" + ``` + + [コマンド実行結果] + + ```console + { + "status_code" : "OK", + "Ledger" : { + "id" : "test_asset", + "age" : 0, + "nonce" : "3533427d-03cf-41d1-bf95-4d31eb0cb24d", + "hash" : "FiquvtPMKLlxKf4VGoccSAGsi9ptn4ozYVVTwdSzEQ0=", + "signature" : "MEYCIQDiiXqzw6K+Ml4uvn8rK43o5wHWESU3hoXnZPi6/OeKVwIhAM+tFBcapl6zg47Uq0Uc8nVNGWNHZLBDBGve3F0xkzTR" + }, + "Auditor" : { + "id" : "test_asset", + "age" : 0, + "nonce" : "3533427d-03cf-41d1-bf95-4d31eb0cb24d", + "hash" : "FiquvtPMKLlxKf4VGoccSAGsi9ptn4ozYVVTwdSzEQ0=", + "signature" : "MEUCIQDLsfUR2PmxSvfpL3YvHJUkz00RDpjCdctkroZKXE8d5QIgH73FQH2e11jfnynD00Pp9DrIG1vYizxDsvxUsMPo9IU=" + } + } + ``` + + ### 参考情報 + + * 資産データが改ざんされていない場合、`validate-ledger` コマンドを実行して検証を要求すると、結果として `OK` が返されます。 + * 資産データが改ざんされている場合 (たとえば、データベース内の `state` 値が改ざんされている場合)、`validate-ledger` コマンドを実行して検証を要求すると、実行結果として `OK` 以外の値が返されます (たとえば、`INVALID_OUTPUT`)。 ScalarDL がデータ改ざんを検出する方法の例として、以下を参照してください。 + + [コマンド実行結果(資産データが改ざんされている場合)] + + ```console + { + "status_code" : "INCONSISTENT_STATES", + "error_message" : "The results from Ledger and Auditor don't match" + } + ``` + +## ステップ 9. すべてのリソースを削除する + +Kubernetes クラスターで ScalarDL Ledger テストと ScalarDL Auditor テストを完了したら、すべてのリソースを削除します。 + +1. ScalarDL Ledger、ScalarDL Auditor、ScalarDL Schema Loader、および PostgreSQL をアンインストールします。 + + ```console + helm uninstall -n default scalardl-ledger schema-loader-ledger postgresql-ledger scalardl-auditor schema-loader-auditor postgresql-auditor + ``` + +1. クライアントコンテナを削除します。 + + ``` + kubectl delete pod scalardl-client --grace-period 0 -n default + ``` + +1. シークレットリソースを削除します。 + + ``` + kubectl delete secrets envoy-tls-key envoy-tls-cert schema-ledger-credentials-secret schema-auditor-credentials-secret ledger-credentials-secret scalardl-ledger-tls-ca scalardl-ledger-tls-cert scalardl-ledger-tls-key auditor-credentials-secret auditor-keys scalardl-auditor-tls-ca scalardl-auditor-tls-cert scalardl-auditor-tls-key scalardl-auditor-tls-ca-for-ledger client-ca-cert + ``` + +1. 作業ディレクトリとサンプル ファイル (構成ファイル、秘密キー、および証明書) を削除します。 + + ```console + cd ${HOME} + ``` + + ```console + rm -rf ${HOME}/scalardl-test/ + ``` + +## 参考文献 + +Scalar 製品の監視またはログ記録を開始する方法については、次のドキュメントで説明しています。 + +* [Helm Charts の入門 (Prometheus Operator を使用したモニタリング)](getting-started-monitoring.mdx) +* [Helm Charts の入門 (Loki スタックを使用したロギング)](getting-started-logging.mdx) +* [Helm Charts の入門 (Scalar Manager)](getting-started-scalar-manager.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardl-auditor.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardl-auditor.mdx new file mode 100644 index 00000000..ee22d881 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardl-auditor.mdx @@ -0,0 +1,910 @@ +--- +--- + +# Helm Charts の入門 (ScalarDL Ledger と Auditor / Auditor モード) + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Kubernetes クラスター上の Helm Chart をテスト環境として使用して、ScalarDL Ledger および Auditor を開始する方法について説明します。 ここでは、テスト用の Mac または Linux 環境がすでにあることを前提としています。 このドキュメントでは **Minikube** を使用しますが、これから説明する手順はどの Kubernetes クラスターでも機能するはずです。 + +## 要件 + +以下のコンテナイメージを取得するには、[AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-rzbuhxgvqf4d2) または [Azure Marketplace](https://azuremarketplace.microsoft.com/en/marketplace/apps/scalarinc.scalardb) でScalarDL Ledger および ScalarDL Auditor をサブスクライブする必要があります。 + * AWS Marketplace + * scalar-ledger + * scalar-ledger-envoy + * scalardl-schema-loader-ledger + * scalar-auditor + * scalar-auditor-envoy + * scalardl-schema-loader-auditor + * Azure Marketplace + * scalar-ledger + * scalar-auditor + * scalardl-envoy + * scalardl-schema-loader + +詳細については、以下のドキュメントを参照してください。 + * [How to install Scalar products through AWS Marketplace](../scalar-kubernetes/AwsMarketplaceGuide.mdx) + * [How to install Scalar products through Azure Marketplace](../scalar-kubernetes/AzureMarketplaceGuide.mdx) + +## 注記 +監査によるビザンチン障害検出を適切に機能させるには、Ledger と Auditor を異なる管理ドメインに展開して管理する必要があります。 ただし、このガイドでは、テストを容易にするために、Ledger と Auditor を同じ Kubernetes クラスターにデプロイします。 + +## 私たちが作るもの + +次のように、次のコンポーネントを Kubernetes クラスターにデプロイします。 + +``` ++-----------------------------------------------------------------------------------------------------------------------------+ +| [Kubernetes クラスター] | +| [ポッド] [ポッド] [ポッド] | +| | +| +-------+ +---------+ | +| +---> | Envoy | ---+ +---> | Ledger | ---+ | +| | +-------+ | | +---------+ | | +| | | | | | +| +---------+ | +-------+ | +-----------+ | +---------+ | +---------------+ | +| +---> | サービス | ---+---> | Envoy | ---+---> | サービス | ---+---> | Ledger | ---+---> | PostgreSQL | | +| | | (Envoy) | | +-------+ | | (Ledger) | | +---------+ | | (Ledger 用) | | +| | +---------+ | | +-----------+ | | +---------------+ | +| | | +-------+ | | +---------+ | | +| | +---> | Envoy | ---+ +---> | Ledger | ---+ | +| +--------+ | +-------+ +---------+ | +| | クライアント | ---+ | +| +--------+ | +-------+ +---------+ | +| | +---> | Envoy | ---+ +---> | Auditor | ---+ | +| | | +-------+ | | +---------+ | | +| | | | | | | +| | +---------+ | +-------+ | +-----------+ | +---------+ | +---------------+ | +| +---> | サービス | ---+---> | Envoy | ---+---> | サービス | ---+---> | Auditor | ---+---> | PostgreSQL | | +| | (Envoy) | | +-------+ | | (Auditor) | | +---------+ | | (Auditor 用) | | +| +---------+ | | +-----------+ | | +---------------+ | +| | +-------+ | | +---------+ | | +| +---> | Envoy | ---+ +---> | Auditor | ---+ | +| +-------+ +---------+ | +| | ++-----------------------------------------------------------------------------------------------------------------------------+ +``` + +## ステップ 1. Kubernetes クラスターを開始する + +まず、Kubernetes クラスターを準備する必要があります。 **minikube** 環境を使用する場合は、[Scalar Helm Charts の入門] (./getting-started-scalar-helm-charts.mdx)を参照してください。 すでに Kubernetes クラスターを開始している場合は、この手順をスキップできます。 + +## ステップ 2. PostgreSQL コンテナーを開始する + +ScalarDL Ledger と Auditor は、バックエンド データベースとして何らかのデータベース システムを使用します。 このドキュメントでは PostgreSQL を使用します。 + +次のようにして、Kubernetes クラスターに PostgreSQL をデプロイできます。 + +1. Bitnami Helm リポジトリを追加します。 + ```console + helm repo add bitnami https://charts.bitnami.com/bitnami + ``` + +1. Ledger 用に PostgreSQL をデプロイします。 + ```console + helm install postgresql-ledger bitnami/postgresql \ + --set auth.postgresPassword=postgres \ + --set primary.persistence.enabled=false + ``` + +1. Auditor 用に PostgreSQL をデプロイします。 + ```console + helm install postgresql-auditor bitnami/postgresql \ + --set auth.postgresPassword=postgres \ + --set primary.persistence.enabled=false + ``` + +1. PostgreSQL コンテナが実行されているかどうかを確認します。 + ```console + kubectl get pod + ``` + 【コマンド実行結果】 + ```console + NAME READY STATUS RESTARTS AGE + postgresql-auditor-0 1/1 Running 0 11s + postgresql-ledger-0 1/1 Running 0 16s + ``` + +## ステップ 3. 作業ディレクトリを作成する + +いくつかの構成ファイルとキー/証明書ファイルをローカルに作成します。 したがって、それらの作業ディレクトリを作成します。 + +1. 作業ディレクトリを作成します。 + ```console + mkdir -p ~/scalardl-test/certs/ + ``` + +## ステップ 4. 秘密鍵/証明書ファイルを作成する + +注記:このガイドでは、テストに自己署名証明書を使用します。 ただし、これらの証明書を運用環境では使用しないことを強くお勧めします。 + +1. 作業ディレクトリを `~/scalardl-test/certs/` ディレクトリに変更します。 + ```console + cd ~/scalardl-test/certs/ + ``` + +1. Ledger 情報を含む JSON ファイルを作成します。 + ```console + cat << 'EOF' > ~/scalardl-test/certs/ledger.json + { + "CN": "ledger", + "hosts": ["example.com","*.example.com"], + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "O": "ledger", + "OU": "test team", + "L": "Shinjuku", + "ST": "Tokyo", + "C": "JP" + } + ] + } + EOF + ``` + +1. Auditor 情報を含む JSON ファイルを作成します。 + ```console + cat << 'EOF' > ~/scalardl-test/certs/auditor.json + { + "CN": "auditor", + "hosts": ["example.com","*.example.com"], + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "O": "auditor", + "OU": "test team", + "L": "Shinjuku", + "ST": "Tokyo", + "C": "JP" + } + ] + } + EOF + ``` + +1. クライアント情報を含む JSON ファイルを作成します。 + ```console + cat << 'EOF' > ~/scalardl-test/certs/client.json + { + "CN": "client", + "hosts": ["example.com","*.example.com"], + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "O": "client", + "OU": "test team", + "L": "Shinjuku", + "ST": "Tokyo", + "C": "JP" + } + ] + } + EOF + ``` + +1. Ledger のキー/証明書ファイルを作成します。 + ```console + cfssl selfsign "" ./ledger.json | cfssljson -bare ledger + ``` + +1. Auditor のキー/証明書ファイルを作成します。 + ```console + cfssl selfsign "" ./auditor.json | cfssljson -bare auditor + ``` + +1. クライアントのキー/証明書ファイルを作成します。 + ```console + cfssl selfsign "" ./client.json | cfssljson -bare client + ``` + +1. キー/証明書ファイルが作成されたことを確認します。 + ```console + ls -1 + ``` + 【コマンド実行結果】 + ```console + auditor-key.pem + auditor.csr + auditor.json + auditor.pem + client-key.pem + client.csr + client.json + client.pem + ledger-key.pem + ledger.csr + ledger.json + ledger.pem + ``` + +## ステップ 5. Helm Charts を使用して ScalarDL Ledger と ScalarDL Auditor の DB スキーマを作成する + +Helm Chart を使用して、Kubernetes クラスターに 2 つの ScalarDL Schema Loader ポッドをデプロイします。 +ScalarDL Schema Loader は、PostgreSQL で ScalarDL Ledger と Auditor の DB スキーマを作成します。 + +1. 作業ディレクトリを `~/scalardl-test/` に変更します。 + ```console + cd ~/scalardl-test/ + ``` + +1. Scalar helm リポジトリを追加します。 + ```console + helm repo add scalar-labs https://scalar-labs.github.io/helm-charts + ``` + +1. AWS/Azure Marketplace から ScalarDL コンテナー イメージをプルするためのシークレット リソースを作成します。 + * AWS Marketplace + ```console + 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 + ```console + kubectl create secret docker-registry reg-acr-secrets \ + --docker-server= \ + --docker-username= \ + --docker-password= + ``` + + 詳細については、以下のドキュメントを参照してください。 + + * [How to install Scalar products through AWS Marketplace](../scalar-kubernetes/AwsMarketplaceGuide.mdx) + * [How to install Scalar products through Azure Marketplace](../scalar-kubernetes/AzureMarketplaceGuide.mdx) + +1. ScalarDL Schema Loader for Ledger のカスタム値ファイル (schema-loader-ledger-custom-values.yaml) を作成します。 + * AWS Marketplace + + ```console + cat << 'EOF' > ~/scalardl-test/schema-loader-ledger-custom-values.yaml + schemaLoading: + schemaType: "ledger" + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalardl-schema-loader-ledger" + version: "3.6.0" + imagePullSecrets: + - name: "reg-ecr-mp-secrets" + databaseProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_PASSWORD "" }} + scalar.db.storage=jdbc + secretName: "ledger-credentials-secret" + EOF + ``` + + * Azure Marketplace + + ```console + cat << 'EOF' > ~/scalardl-test/schema-loader-ledger-custom-values.yaml + schemaLoading: + schemaType: "ledger" + image: + repository: "/scalarinc/scalardl-schema-loader" + version: "3.6.0" + imagePullSecrets: + - name: "reg-acr-secrets" + databaseProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_PASSWORD "" }} + scalar.db.storage=jdbc + secretName: "ledger-credentials-secret" + EOF + ``` + +1. Auditor 用の ScalarDL Schema Loader のカスタム値ファイル (schema-loader-auditor-custom-values.yaml) を作成します。 + * AWS Marketplace + + ```console + cat << 'EOF' > ~/scalardl-test/schema-loader-auditor-custom-values.yaml + schemaLoading: + schemaType: "auditor" + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalardl-schema-loader-auditor" + version: "3.6.0" + imagePullSecrets: + - name: "reg-ecr-mp-secrets" + databaseProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-auditor.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DL_AUDITOR_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DL_AUDITOR_POSTGRES_PASSWORD "" }} + scalar.db.storage=jdbc + secretName: "auditor-credentials-secret" + EOF + ``` + + * Azure Marketplace + + ```console + cat << 'EOF' > ~/scalardl-test/schema-loader-auditor-custom-values.yaml + schemaLoading: + schemaType: "auditor" + image: + repository: "/scalarinc/scalardl-schema-loader" + version: "3.6.0" + imagePullSecrets: + - name: "reg-acr-secrets" + databaseProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-auditor.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DL_AUDITOR_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DL_AUDITOR_POSTGRES_PASSWORD "" }} + scalar.db.storage=jdbc + secretName: "auditor-credentials-secret" + EOF + ``` + +1. PostgreSQL for Ledger のユーザー名とパスワードを含むシークレット リソースを作成します。 + ```console + kubectl create secret generic ledger-credentials-secret \ + --from-literal=SCALAR_DL_LEDGER_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DL_LEDGER_POSTGRES_PASSWORD=postgres + ``` + +1. PostgreSQL for Auditor のユーザー名とパスワードを含むシークレット リソースを作成します。 + ```console + kubectl create secret generic auditor-credentials-secret \ + --from-literal=SCALAR_DL_AUDITOR_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DL_AUDITOR_POSTGRES_PASSWORD=postgres + ``` + +1. Ledger 用の ScalarDL Schema Loader をデプロイします。 + ```console + helm install schema-loader-ledger scalar-labs/schema-loading -f ./schema-loader-ledger-custom-values.yaml + ``` + +1. Auditor 用の ScalarDL Schema Loader をデプロイします。 + ```console + helm install schema-loader-auditor scalar-labs/schema-loading -f ./schema-loader-auditor-custom-values.yaml + ``` + +1. ScalarDL Schema Loader ポッドがデプロイされ、完了しているかどうかを確認します。 + ```console + kubectl get pod + ``` + 【コマンド実行結果】 + ```console + NAME READY STATUS RESTARTS AGE + postgresql-auditor-0 1/1 Running 0 2m56s + postgresql-ledger-0 1/1 Running 0 3m1s + schema-loader-auditor-schema-loading-dvc5r 0/1 Completed 0 6s + schema-loader-ledger-schema-loading-mtllb 0/1 Completed 0 10s + ``` + ScalarDL Schema Loader ポッドが **ContainerCreating** または **Running** の場合は、プロセスが完了するまで待ちます (STATUS は **Completed** になります)。 + +## ステップ 6. Helm Chart を使用して Kubernetes クラスターに ScalarDL Ledger と Auditor をデプロイする + +1. ScalarDL Ledger のカスタム値ファイル (scalardl-ledger-custom-values.yaml) を作成します。 + * AWS Marketplace + + ```console + cat << 'EOF' > ~/scalardl-test/scalardl-ledger-custom-values.yaml + envoy: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalar-ledger-envoy" + version: "1.3.0" + imagePullSecrets: + - name: "reg-ecr-mp-secrets" + + ledger: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalar-ledger" + version: "3.6.0" + imagePullSecrets: + - name: "reg-ecr-mp-secrets" + ledgerProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_PASSWORD "" }} + scalar.db.storage=jdbc + scalar.dl.ledger.proof.enabled=true + scalar.dl.ledger.auditor.enabled=true + scalar.dl.ledger.proof.private_key_path=/keys/private-key + secretName: "ledger-credentials-secret" + extraVolumes: + - name: "ledger-keys" + secret: + secretName: "ledger-keys" + extraVolumeMounts: + - name: "ledger-keys" + mountPath: "/keys" + readOnly: true + EOF + ``` + + * Azure Marketplace + + ```console + cat << 'EOF' > ~/scalardl-test/scalardl-ledger-custom-values.yaml + envoy: + image: + repository: "/scalarinc/scalardl-envoy" + version: "1.3.0" + imagePullSecrets: + - name: "reg-acr-secrets" + + ledger: + image: + repository: "/scalarinc/scalar-ledger" + version: "3.6.0" + imagePullSecrets: + - name: "reg-acr-secrets" + ledgerProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_PASSWORD "" }} + scalar.db.storage=jdbc + scalar.dl.ledger.proof.enabled=true + scalar.dl.ledger.proof.private_key_path=/keys/private-key + secretName: "ledger-credentials-secret" + extraVolumes: + - name: "ledger-keys" + secret: + secretName: "ledger-keys" + extraVolumeMounts: + - name: "ledger-keys" + mountPath: "/keys" + readOnly: true + EOF + ``` + +1. ScalarDL Auditor のカスタム値ファイル (scalardl-auditor-custom-values.yaml) を作成します。 + * AWS Marketplace + + ```console + cat << 'EOF' > ~/scalardl-test/scalardl-auditor-custom-values.yaml + envoy: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalar-auditor-envoy" + version: "1.3.0" + imagePullSecrets: + - name: "reg-ecr-mp-secrets" + + auditor: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalar-auditor" + version: "3.6.0" + imagePullSecrets: + - name: "reg-ecr-mp-secrets" + auditorProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-auditor.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DL_AUDITOR_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DL_AUDITOR_POSTGRES_PASSWORD "" }} + scalar.db.storage=jdbc + scalar.dl.auditor.ledger.host=scalardl-ledger-envoy.default.svc.cluster.local + scalar.dl.auditor.cert_path=/keys/certificate + scalar.dl.auditor.private_key_path=/keys/private-key + secretName: "auditor-credentials-secret" + extraVolumes: + - name: "auditor-keys" + secret: + secretName: "auditor-keys" + extraVolumeMounts: + - name: "auditor-keys" + mountPath: "/keys" + readOnly: true + EOF + ``` + + * Azure Marketplace + + ```console + cat << 'EOF' > ~/scalardl-test/scalardl-auditor-custom-values.yaml + envoy: + image: + repository: "/scalarinc/scalardl-envoy" + version: "1.3.0" + imagePullSecrets: + - name: "reg-acr-secrets" + + auditor: + image: + repository: "/scalarinc/scalar-auditor" + version: "3.6.0" + imagePullSecrets: + - name: "reg-acr-secrets" + auditorProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-auditor.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DL_AUDITOR_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DL_AUDITOR_POSTGRES_PASSWORD "" }} + scalar.db.storage=jdbc + scalar.dl.auditor.ledger.host=scalardl-ledger-envoy.default.svc.cluster.local + scalar.dl.auditor.cert_path=/keys/certificate + scalar.dl.auditor.private_key_path=/keys/private-key + secretName: "auditor-credentials-secret" + extraVolumes: + - name: "auditor-keys" + secret: + secretName: "auditor-keys" + extraVolumeMounts: + - name: "auditor-keys" + mountPath: "/keys" + readOnly: true + EOF + ``` + +1. 秘密リソース `ledger-keys` を作成します。 + ```console + kubectl create secret generic ledger-keys --from-file=certificate=./certs/ledger.pem --from-file=private-key=./certs/ledger-key.pem + ``` + +1. 秘密リソース `auditor-keys` を作成します。 + ```console + kubectl create secret generic auditor-keys --from-file=certificate=./certs/auditor.pem --from-file=private-key=./certs/auditor-key.pem + ``` + +1. ScalarDL Ledger をデプロイします。 + ```console + helm install scalardl-ledger scalar-labs/scalardl -f ./scalardl-ledger-custom-values.yaml + ``` + +1. ScalarDL Auditor をデプロイします。 + ```console + helm install scalardl-auditor scalar-labs/scalardl-audit -f ./scalardl-auditor-custom-values.yaml + ``` + +1. ScalarDL Ledger および Auditor ポッドがデプロイされているかどうかを確認します。 + ```console + kubectl get pod + ``` + 【コマンド実行結果】 + ```console + NAME READY STATUS RESTARTS AGE + postgresql-auditor-0 1/1 Running 0 14m + postgresql-ledger-0 1/1 Running 0 14m + scalardl-auditor-auditor-5b885ff4c8-fwkpf 1/1 Running 0 18s + scalardl-auditor-auditor-5b885ff4c8-g69cb 1/1 Running 0 18s + scalardl-auditor-auditor-5b885ff4c8-nsmnq 1/1 Running 0 18s + scalardl-auditor-envoy-689bcbdf65-5mn6v 1/1 Running 0 18s + scalardl-auditor-envoy-689bcbdf65-fpq8j 1/1 Running 0 18s + scalardl-auditor-envoy-689bcbdf65-lsz2t 1/1 Running 0 18s + scalardl-ledger-envoy-547bbf7546-n7p5x 1/1 Running 0 26s + scalardl-ledger-envoy-547bbf7546-p8nwp 1/1 Running 0 26s + scalardl-ledger-envoy-547bbf7546-pskpb 1/1 Running 0 26s + scalardl-ledger-ledger-6db5dc8774-5zsbj 1/1 Running 0 26s + scalardl-ledger-ledger-6db5dc8774-vnmrw 1/1 Running 0 26s + scalardl-ledger-ledger-6db5dc8774-wpjvs 1/1 Running 0 26s + schema-loader-auditor-schema-loading-dvc5r 0/1 Completed 0 11m + schema-loader-ledger-schema-loading-mtllb 0/1 Completed 0 11m + ``` + ScalarDL Ledger および Auditor ポッドが適切にデプロイされている場合、STATUS が **Running** であることがわかります。 + +1. ScalarDL Ledger サービスと Auditor サービスがデプロイされているかどうかを確認します。 + ```console + kubectl get svc + ``` + 【コマンド実行結果】 + ```console + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + kubernetes ClusterIP 10.96.0.1 443/TCP 47d + postgresql-auditor ClusterIP 10.107.9.78 5432/TCP 15m + postgresql-auditor-hl ClusterIP None 5432/TCP 15m + postgresql-ledger ClusterIP 10.108.241.181 5432/TCP 15m + postgresql-ledger-hl ClusterIP None 5432/TCP 15m + scalardl-auditor-envoy ClusterIP 10.100.61.202 40051/TCP,40052/TCP 55s + scalardl-auditor-envoy-metrics ClusterIP 10.99.6.227 9001/TCP 55s + scalardl-auditor-headless ClusterIP None 40051/TCP,40053/TCP,40052/TCP 55s + scalardl-auditor-metrics ClusterIP 10.108.1.147 8080/TCP 55s + scalardl-ledger-envoy ClusterIP 10.101.191.116 50051/TCP,50052/TCP 61s + scalardl-ledger-envoy-metrics ClusterIP 10.106.52.103 9001/TCP 61s + scalardl-ledger-headless ClusterIP None 50051/TCP,50053/TCP,50052/TCP 61s + scalardl-ledger-metrics ClusterIP 10.99.122.106 8080/TCP 61s + ``` + ScalarDL Ledger サービスと Auditor サービスが適切にデプロイされている場合は、CLUSTER-IP 列にプライベート IP アドレスが表示されます。 (注記: `scalardl-ledger-headless` と `scalardl-auditor-headless` には CLUSTER-IP がありません。) + +## ステップ 7. クライアントコンテナを開始する + +クライアントコンテナで証明書ファイルを使用します。 そこで、シークレット リソースを作成し、クライアント コンテナにマウントします。 + +1. 秘密リソース `client-keys` を作成します。 + ``` + kubectl create secret generic client-keys --from-file=certificate=./certs/client.pem --from-file=private-key=./certs/client-key.pem + ``` + +1. Kubernetes クラスター上でクライアント コンテナーを起動します。 + ```console + cat << 'EOF' | kubectl apply -f - + apiVersion: v1 + kind: Pod + metadata: + name: "scalardl-client" + spec: + containers: + - name: scalardl-client + image: eclipse-temurin:8-jdk + command: ['sleep'] + args: ['inf'] + volumeMounts: + - name: "ledger-keys" + mountPath: "/keys/ledger" + readOnly: true + - name: "auditor-keys" + mountPath: "/keys/auditor" + readOnly: true + - name: "client-keys" + mountPath: "/keys/client" + readOnly: true + volumes: + - name: "ledger-keys" + secret: + secretName: "ledger-keys" + - name: "auditor-keys" + secret: + secretName: "auditor-keys" + - name: "client-keys" + secret: + secretName: "client-keys" + restartPolicy: Never + EOF + ``` + +1. クライアントコンテナが実行されているかどうかを確認します。 + ```console + kubectl get pod scalardl-client + ``` + 【コマンド実行結果】 + ```console + NAME READY STATUS RESTARTS AGE + scalardl-client 1/1 Running 0 4s + ``` + +## ステップ 8. クライアント コンテナで ScalarDL サンプル コントラクトを実行する + +以下に最低限の手順を説明します。 ScalarDL Ledger とAuditor について詳しく知りたい場合は、以下のドキュメントを参照してください。 + * [Getting Started with ScalarDL](https://scalardl.scalar-labs.com/ja-jp/docs/latest/getting-started) + * [Getting Started with ScalarDL Auditor](https://scalardl.scalar-labs.com/ja-jp/docs/latest/getting-started-auditor) + +Auditor を使用する場合、クライアントアプリケーションを起動する前に Ledger と Auditor の証明書を登録する必要があります。 Ledger はその証明書を Auditor に登録する必要があり、Auditor はその証明書を Ledger に登録する必要があります。 + +1. クライアントコンテナで bash を実行します。 + ```console + kubectl exec -it scalardl-client -- bash + ``` + この手順の後、クライアント コンテナで各コマンドを実行します。 + +1. git、curl、および unzip コマンドをクライアント コンテナにインストールします。 + ```console + apt update && apt install -y git curl unzip + ``` + +1. ScalarDL Java Client SDK git リポジトリのクローンを作成します。 + ```console + git clone https://github.com/scalar-labs/scalardl-java-client-sdk.git + ``` + +1. ディレクトリを `scalardl-java-client-sdk/` に変更します。 + ```console + cd scalardl-java-client-sdk/ + ``` + ```console + pwd + ``` + 【コマンド実行結果】 + ```console + + /scalardl-java-client-sdk + ``` + +1. ブランチを任意のバージョンに変更します。 + ```console + git checkout -b v3.6.0 refs/tags/v3.6.0 + ``` + ```console + git branch + ``` + 【コマンド実行結果】 + ```console + master + * v3.6.0 + ``` + 別のバージョンを使用する場合は、使用するバージョン(タグ)を指定してください。 同じバージョンの ScalarDL Ledger と ScalarDL Java Client SDK を使用する必要があります。 + +1. サンプルコントラクトを作成します。 + ```console + ./gradlew assemble + ``` + +1. ScalarDL の CLI ツールは [ScalarDL Java Client SDK Releases](https://github.com/scalar-labs/scalardl-java-client-sdk/releases) からダウンロードしてください。 + ```console + curl -OL https://github.com/scalar-labs/scalardl-java-client-sdk/releases/download/v3.6.0/scalardl-java-client-sdk-3.6.0.zip + ``` + 同じバージョンの CLI ツールと ScalarDL Ledger を使用する必要があります。 + +1. `scalardl-java-client-sdk-3.6.0.zip` ファイルを解凍します。 + ```console + unzip ./scalardl-java-client-sdk-3.6.0.zip + ``` + +1. Ledger の証明書を Auditor に登録するための設定ファイル(ledger.as.client.properties)を作成します。 + ```console + cat << 'EOF' > ledger.as.client.properties + # Ledger + scalar.dl.client.server.host=scalardl-ledger-envoy.default.svc.cluster.local + + # Auditor + scalar.dl.client.auditor.enabled=true + scalar.dl.client.auditor.host=scalardl-auditor-envoy.default.svc.cluster.local + + # Certificate + scalar.dl.client.cert_holder_id=ledger + scalar.dl.client.cert_path=/keys/ledger/certificate + scalar.dl.client.private_key_path=/keys/ledger/private-key + EOF + ``` + +1. Auditor の証明書を Ledger に登録するための設定ファイル(auditor.as.client.properties)を作成します。 + ```console + cat << 'EOF' > auditor.as.client.properties + # Ledger + scalar.dl.client.server.host=scalardl-ledger-envoy.default.svc.cluster.local + + # Auditor + scalar.dl.client.auditor.enabled=true + scalar.dl.client.auditor.host=scalardl-auditor-envoy.default.svc.cluster.local + + # Certificate + scalar.dl.client.cert_holder_id=auditor + scalar.dl.client.cert_path=/keys/auditor/certificate + scalar.dl.client.private_key_path=/keys/auditor/private-key + EOF + ``` + +1. Kubernetes クラスター上の ScalarDL Ledger にアクセスするための構成ファイル (client.properties) を作成します。 + ```console + cat << 'EOF' > client.properties + # Ledger + scalar.dl.client.server.host=scalardl-ledger-envoy.default.svc.cluster.local + + # Auditor + scalar.dl.client.auditor.enabled=true + scalar.dl.client.auditor.host=scalardl-auditor-envoy.default.svc.cluster.local + + # Certificate + scalar.dl.client.cert_holder_id=client + scalar.dl.client.cert_path=/keys/client/certificate + scalar.dl.client.private_key_path=/keys/client/private-key + EOF + ``` + +1. Ledger の証明書ファイルを登録します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/register-cert --properties ./ledger.as.client.properties + ``` + +1. Auditor の証明書ファイルを登録します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/register-cert --properties ./auditor.as.client.properties + ``` + +1. クライアントの証明書ファイルを登録します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/register-cert --properties ./client.properties + ``` + +1. サンプルコントラクト `StateUpdater` を登録します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/register-contract --properties ./client.properties --contract-id StateUpdater --contract-binary-name com.org1.contract.StateUpdater --contract-class-file ./build/classes/java/main/com/org1/contract/StateUpdater.class + ``` + +1. サンプルコントラクト `StateReader` を登録します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/register-contract --properties ./client.properties --contract-id StateReader --contract-binary-name com.org1.contract.StateReader --contract-class-file ./build/classes/java/main/com/org1/contract/StateReader.class + ``` + +1. 検証リクエストを実行するためのコントラクト `ValdateLedger` を登録します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/register-contract --properties ./client.properties --contract-id validate-ledger --contract-binary-name com.scalar.dl.client.contract.ValidateLedger --contract-class-file ./build/classes/java/main/com/scalar/dl/client/contract/ValidateLedger.class + ``` + +1. コントラクト `StateUpdater` を実行します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/execute-contract --properties ./client.properties --contract-id StateUpdater --contract-argument '{"asset_id": "test_asset", "state": 3}' + ``` + このサンプル コントラクトは、`test_asset` という名前のアセットの `state` (値) を `3` に更新します。 + +1. コントラクト `StateReader` を実行します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/execute-contract --properties ./client.properties --contract-id StateReader --contract-argument '{"asset_id": "test_asset"}' + ``` + 【コマンド実行結果】 + ```console + Contract result: + { + "id" : "test_asset", + "age" : 0, + "output" : { + "state" : 3 + } + } + ``` + * 参考情報 + * 資産データが改ざんされていない場合、コントラクト実行要求(execute-contract コマンド)は結果として `OK` を返します。 + * 資産データが改ざんされている場合(例:DBの `state` 値が改ざんされている場合)、コントラクト実行要求(execute-contract コマンド)は結果として `OK` 以外の値(例:`INCONSISTENT_STATES`)を返す , 以下のような感じです。 + 【コマンド実行結果(資産データが改ざんされた場合)】 + ```console + { + "status_code" : "INCONSISTENT_STATES", + "error_message" : "The results from Ledger and Auditor don't match" + } + ``` + * このようにして、ScalarDL はデータの改ざんを検出できます。 + +1. アセットの検証リクエストを実行します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/validate-ledger --properties ./client.properties --asset-id "test_asset" + ``` + 【コマンド実行結果】 + ```console + { + "status_code" : "OK", + "Ledger" : { + "id" : "test_asset", + "age" : 0, + "nonce" : "3533427d-03cf-41d1-bf95-4d31eb0cb24d", + "hash" : "FiquvtPMKLlxKf4VGoccSAGsi9ptn4ozYVVTwdSzEQ0=", + "signature" : "MEYCIQDiiXqzw6K+Ml4uvn8rK43o5wHWESU3hoXnZPi6/OeKVwIhAM+tFBcapl6zg47Uq0Uc8nVNGWNHZLBDBGve3F0xkzTR" + }, + "Auditor" : { + "id" : "test_asset", + "age" : 0, + "nonce" : "3533427d-03cf-41d1-bf95-4d31eb0cb24d", + "hash" : "FiquvtPMKLlxKf4VGoccSAGsi9ptn4ozYVVTwdSzEQ0=", + "signature" : "MEUCIQDLsfUR2PmxSvfpL3YvHJUkz00RDpjCdctkroZKXE8d5QIgH73FQH2e11jfnynD00Pp9DrIG1vYizxDsvxUsMPo9IU=" + } + } + ``` + * 参考情報 + * 資産データが改ざんされていない場合、検証リクエスト(validate-ledger コマンド)は結果として `OK` を返します。 + * 資産データが改ざんされている場合(例:DBの `state` 値が改ざんされている場合)、検証リクエスト(validate-ledger コマンド)は結果として `OK` 以外の値(例: `INVALID_OUTPUT`)を返します。 以下のような。 + 【コマンド実行結果(資産データが改ざんされた場合)】 + ```console + { + "status_code" : "INCONSISTENT_STATES", + "error_message" : "The results from Ledger and Auditor don't match" + } + ``` + * このようにして、ScalarDL Ledger はデータの改ざんを検出できます。 + +## ステップ 9. すべてのリソースを削除する + +Kubernetes クラスターで ScalarDL Ledger テストを完了したら、すべてのリソースを削除します。 + +1. ScalarDL Ledger、ScalarDL Schema Loader、PostgreSQL をアンインストールします。 + ```console + helm uninstall scalardl-ledger schema-loader-ledger postgresql-ledger scalardl-auditor schema-loader-auditor postgresql-auditor + ``` + +1. クライアントコンテナを削除します。 + ``` + kubectl delete pod scalardl-client --force --grace-period 0 + ``` + +1. 作業ディレクトリとサンプル ファイル (構成ファイル、キー、証明書) を削除します。 + ```console + cd ~ + ``` + ```console + rm -rf ~/scalardl-test/ + ``` + +## 参考文献 + +Scalar 製品の監視またはログ記録を開始する方法については、次のドキュメントで説明しています。 + +* [Helm Charts の入門 (Prometheus Operator を使用したモニタリング)](getting-started-monitoring.mdx) +* [Helm Charts の入門 (Loki スタックを使用したロギング)](getting-started-logging.mdx) +* [Helm Charts の入門 (Scalar Manager)](getting-started-scalar-manager.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardl-ledger.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardl-ledger.mdx new file mode 100644 index 00000000..c42dba26 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/getting-started-scalardl-ledger.mdx @@ -0,0 +1,615 @@ +--- +--- + +# Helm Charts の入門 (ScalarDL Ledger / Ledger のみ) + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Kubernetes クラスター上の Helm Chart をテスト環境として使用して、ScalarDL Ledger を開始する方法について説明します。 ここでは、テスト用の Mac または Linux 環境がすでにあることを前提としています。 このドキュメントでは **Minikube** を使用しますが、これから説明する手順はどの Kubernetes クラスターでも機能するはずです。 + +## 要件 + +以下のコンテナイメージを入手するには、[AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-rzbuhxgvqf4d2) または [Azure Marketplace](https://azuremarketplace.microsoft.com/en/marketplace/apps/scalarinc.scalardb) でScalarDL Ledgerを購読する必要があります。 + * AWS Marketplace + * scalar-ledger + * scalar-ledger-envoy + * scalardl-schema-loader-ledger + * Azure Marketplace + * scalar-ledger + * scalardl-envoy + * scalardl-schema-loader + +詳細については、以下のドキュメントを参照してください。 + * [How to install Scalar products through AWS Marketplace](../scalar-kubernetes/AwsMarketplaceGuide.mdx) + * [How to install Scalar products through Azure Marketplace](../scalar-kubernetes/AzureMarketplaceGuide.mdx) + +## 私たちが作るもの + +次のように、次のコンポーネントを Kubernetes クラスターにデプロイします。 + +``` ++--------------------------------------------------------------------------------------------------------------------------------------+ +| [Kubernetes クラスター] | +| | +| [ポッド] [ポッド] [ポッド] [ポッド] | +| | +| +-------+ +-----------------+ | +| +---> | Envoy | ---+ +---> | ScalarDL Ledger | ---+ | +| | +-------+ | | +-----------------+ | | +| | | | | | +| +--------+ +---------+ | +-------+ | +-------------------+ | +-----------------+ | +------------+ | +| | クライアント | ---> | サービス | ---+---> | Envoy | ---+---> | サービス | ---+---> | ScalarDL Ledger | ---+---> | PostgreSQL | | +| +--------+ | (Envoy) | | +-------+ | | (ScalarDL Ledger) | | +-----------------+ | +------------+ | +| +---------+ | | +-------------------+ | | | +| | +-------+ | | +-----------------+ | | +| +---> | Envoy | ---+ +---> | ScalarDL Ledger | ---+ | +| +-------+ +-----------------+ | +| | ++--------------------------------------------------------------------------------------------------------------------------------------+ +``` + +## ステップ 1. Kubernetes クラスターを開始する + +まず、Kubernetes クラスターを準備する必要があります。 **minikube** 環境を使用する場合は、[Scalar Helm Charts の入門](./getting-started-scalar-helm-charts.mdx) を参照してください。 すでに Kubernetes クラスターを開始している場合は、この手順をスキップできます。 + +## ステップ 2. PostgreSQL コンテナーを開始する + +ScalarDL Ledger は、バックエンド データベースとして何らかのデータベース システムを使用します。 このドキュメントでは PostgreSQL を使用します。 + +次のようにして、Kubernetes クラスターに PostgreSQL をデプロイできます。 + +1. Bitnami Helm リポジトリを追加します。 + ```console + helm repo add bitnami https://charts.bitnami.com/bitnami + ``` + +1. PostgreSQLをデプロイします。 + ```console + helm install postgresql-ledger bitnami/postgresql \ + --set auth.postgresPassword=postgres \ + --set primary.persistence.enabled=false + ``` + +1. PostgreSQL コンテナが実行されているかどうかを確認します。 + ```console + kubectl get pod + ``` + 【コマンド実行結果】 + ```console + NAME READY STATUS RESTARTS AGE + postgresql-ledger-0 1/1 Running 0 11s + ``` + +## ステップ 3. 作業ディレクトリを作成する + +いくつかの構成ファイルとキー/証明書ファイルをローカルに作成します。 したがって、それらの作業ディレクトリを作成します。 + +1. 作業ディレクトリを作成します。 + ```console + mkdir -p ~/scalardl-test/certs/ + ``` + +## ステップ 4. キー/証明書ファイルを作成する + +注記:このガイドでは、テストに自己署名証明書を使用します。 ただし、これらの証明書を運用環境では使用しないことを強くお勧めします。 + +1. 作業ディレクトリを `~/scalardl-test/certs/` ディレクトリに変更します。 + ```console + cd ~/scalardl-test/certs/ + ``` + +1. Ledger 情報を含む JSON ファイルを作成します。 + ```console + cat << 'EOF' > ~/scalardl-test/certs/ledger.json + { + "CN": "ledger", + "hosts": ["example.com","*.example.com"], + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "O": "ledger", + "OU": "test team", + "L": "Shinjuku", + "ST": "Tokyo", + "C": "JP" + } + ] + } + EOF + ``` + +1. クライアント情報を含む JSON ファイルを作成します。 + ```console + cat << 'EOF' > ~/scalardl-test/certs/client.json + { + "CN": "client", + "hosts": ["example.com","*.example.com"], + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "O": "client", + "OU": "test team", + "L": "Shinjuku", + "ST": "Tokyo", + "C": "JP" + } + ] + } + EOF + ``` + +1. Ledger のキー/証明書ファイルを作成します。 + ```console + cfssl selfsign "" ./ledger.json | cfssljson -bare ledger + ``` + +1. クライアントのキー/証明書ファイルを作成します。 + ```console + cfssl selfsign "" ./client.json | cfssljson -bare client + ``` + +1. キー/証明書ファイルが作成されたことを確認します。 + ```console + ls -1 + ``` + 【コマンド実行結果】 + ```console + client-key.pem + client.csr + client.json + client.pem + ledger-key.pem + ledger.csr + ledger.json + ledger.pem + ``` + +## ステップ 5. Helm Charts を使用して ScalarDL Ledger の DB スキーマを作成する + +Helm Charts を使用して、ScalarDL Schema Loader を Kubernetes クラスターにデプロイします。 +ScalarDL Schema Loader は、PostgreSQL で ScalarDL Ledger の DB スキーマを作成します。 + +1. 作業ディレクトリを `~/scalardl-test/` に変更します。 + ```console + cd ~/scalardl-test/ + ``` + +1. Scalar helm リポジトリを追加します。 + ```console + helm repo add scalar-labs https://scalar-labs.github.io/helm-charts + ``` + +1. AWS/Azure Marketplace から ScalarDL コンテナー イメージをプルするためのシークレット リソースを作成します。 + * AWS Marketplace + ```console + 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 + ```console + kubectl create secret docker-registry reg-acr-secrets \ + --docker-server= \ + --docker-username= \ + --docker-password= + ``` + + 詳細については、以下のドキュメントを参照してください。 + + * [How to install Scalar products through AWS Marketplace](../scalar-kubernetes/AwsMarketplaceGuide.mdx) + * [How to install Scalar products through Azure Marketplace](../scalar-kubernetes/AzureMarketplaceGuide.mdx) + +1. ScalarDL Schema Loader のカスタム値ファイル (schema-loader-ledger-custom-values.yaml) を作成します。 + * AWS Marketplace + + ```console + cat << 'EOF' > ~/scalardl-test/schema-loader-ledger-custom-values.yaml + schemaLoading: + schemaType: "ledger" + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalardl-schema-loader-ledger" + version: "3.6.0" + imagePullSecrets: + - name: "reg-ecr-mp-secrets" + databaseProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_PASSWORD "" }} + scalar.db.storage=jdbc + secretName: "ledger-credentials-secret" + EOF + ``` + + * Azure Marketplace + + ```console + cat << 'EOF' > ~/scalardl-test/schema-loader-ledger-custom-values.yaml + schemaLoading: + schemaType: "ledger" + image: + repository: "/scalarinc/scalardl-schema-loader" + version: "3.6.0" + imagePullSecrets: + - name: "reg-acr-secrets" + databaseProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_PASSWORD "" }} + scalar.db.storage=jdbc + secretName: "ledger-credentials-secret" + EOF + ``` + +1. PostgreSQL のユーザー名とパスワードを含むシークレット リソースを作成します。 + ```console + kubectl create secret generic ledger-credentials-secret \ + --from-literal=SCALAR_DL_LEDGER_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DL_LEDGER_POSTGRES_PASSWORD=postgres + ``` + +1. ScalarDL Schema Loader をデプロイします。 + ```console + helm install schema-loader-ledger scalar-labs/schema-loading -f ./schema-loader-ledger-custom-values.yaml + ``` + +1. ScalarDL Schema Loader ポッドがデプロイされ、完了しているかどうかを確認します。 + ```console + kubectl get pod + ``` + 【コマンド実行結果】 + ```console + NAME READY STATUS RESTARTS AGE + postgresql-ledger-0 1/1 Running 0 11m + schema-loader-ledger-schema-loading-46rcr 0/1 Completed 0 3s + ``` + ScalarDL Schema Loader ポッドが **ContainerCreating** または **Running** の場合は、プロセスが完了するまで待ちます (STATUS は **Completed** になります)。 + +## ステップ 6. Helm Charts を使用して Kubernetes クラスターに ScalarDL Ledger をデプロイする + +1. ScalarDL Ledger のカスタム値ファイル (scalardl-ledger-custom-values.yaml) を作成します。 + * AWS Marketplace + + ```console + cat << 'EOF' > ~/scalardl-test/scalardl-ledger-custom-values.yaml + envoy: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalar-ledger-envoy" + version: "1.3.0" + imagePullSecrets: + - name: "reg-ecr-mp-secrets" + + ledger: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalar-ledger" + version: "3.6.0" + imagePullSecrets: + - name: "reg-ecr-mp-secrets" + ledgerProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_PASSWORD "" }} + scalar.db.storage=jdbc + scalar.dl.ledger.proof.enabled=true + scalar.dl.ledger.proof.private_key_path=/keys/private-key + secretName: "ledger-credentials-secret" + extraVolumes: + - name: "ledger-keys" + secret: + secretName: "ledger-keys" + extraVolumeMounts: + - name: "ledger-keys" + mountPath: "/keys" + readOnly: true + EOF + ``` + + * Azure Marketplace + + ```console + cat << 'EOF' > ~/scalardl-test/scalardl-ledger-custom-values.yaml + envoy: + image: + repository: "/scalarinc/scalardl-envoy" + version: "1.3.0" + imagePullSecrets: + - name: "reg-acr-secrets" + + ledger: + image: + repository: "/scalarinc/scalar-ledger" + version: "3.6.0" + imagePullSecrets: + - name: "reg-acr-secrets" + ledgerProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_PASSWORD "" }} + scalar.db.storage=jdbc + scalar.dl.ledger.proof.enabled=true + scalar.dl.ledger.proof.private_key_path=/keys/private-key + secretName: "ledger-credentials-secret" + extraVolumes: + - name: "ledger-keys" + secret: + secretName: "ledger-keys" + extraVolumeMounts: + - name: "ledger-keys" + mountPath: "/keys" + readOnly: true + EOF + ``` + +1. 秘密リソース `ledger-keys` を作成します。 + ```console + kubectl create secret generic ledger-keys --from-file=private-key=./certs/ledger-key.pem + ``` + +1. ScalarDL Ledger をデプロイします。 + ```console + helm install scalardl-ledger scalar-labs/scalardl -f ./scalardl-ledger-custom-values.yaml + ``` + +1. ScalarDL Ledger ポッドがデプロイされているかどうかを確認します。 + ```console + kubectl get pod + ``` + 【コマンド実行結果】 + ```console + NAME READY STATUS RESTARTS AGE + postgresql-ledger-0 1/1 Running 0 14m + scalardl-ledger-envoy-547bbf7546-6cn88 1/1 Running 0 52s + scalardl-ledger-envoy-547bbf7546-rpg5p 1/1 Running 0 52s + scalardl-ledger-envoy-547bbf7546-x2vlg 1/1 Running 0 52s + scalardl-ledger-ledger-9bdf7f8bd-29bzm 1/1 Running 0 52s + scalardl-ledger-ledger-9bdf7f8bd-9fklw 1/1 Running 0 52s + scalardl-ledger-ledger-9bdf7f8bd-9tw5x 1/1 Running 0 52s + schema-loader-ledger-schema-loading-46rcr 0/1 Completed 0 3m38s + ``` + ScalarDL Ledger ポッドが適切にデプロイされている場合、STATUS が **Running** であることがわかります。 + +1. ScalarDL Ledger サービスがデプロイされているかどうかを確認します。 + ```console + kubectl get svc + ``` + 【コマンド実行結果】 + ```console + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + kubernetes ClusterIP 10.96.0.1 443/TCP 47d + postgresql-ledger ClusterIP 10.109.253.150 5432/TCP 15m + postgresql-ledger-hl ClusterIP None 5432/TCP 15m + scalardl-ledger-envoy ClusterIP 10.106.141.153 50051/TCP,50052/TCP 83s + scalardl-ledger-envoy-metrics ClusterIP 10.108.36.136 9001/TCP 83s + scalardl-ledger-headless ClusterIP None 50051/TCP,50053/TCP,50052/TCP 83s + scalardl-ledger-metrics ClusterIP 10.98.4.217 8080/TCP 83s + ``` + ScalarDL Ledger サービスが適切にデプロイされている場合は、CLUSTER-IP 列にプライベート IP アドレスが表示されます。 (注記: `scalardl-ledger-headless` には CLUSTER-IP がありません。) + +## ステップ 7. クライアントコンテナを開始する + +クライアントコンテナで証明書ファイルを使用します。 そこで、シークレット リソースを作成し、クライアント コンテナにマウントします。 + +1. 秘密リソース `client-keys` を作成します。 + ``` + kubectl create secret generic client-keys --from-file=certificate=./certs/client.pem --from-file=private-key=./certs/client-key.pem + ``` + +1. Kubernetes クラスター上でクライアント コンテナーを起動します。 + ```console + cat << 'EOF' | kubectl apply -f - + apiVersion: v1 + kind: Pod + metadata: + name: "scalardl-client" + spec: + containers: + - name: scalardl-client + image: eclipse-temurin:8-jdk + command: ['sleep'] + args: ['inf'] + volumeMounts: + - name: "client-keys" + mountPath: "/keys" + readOnly: true + volumes: + - name: "client-keys" + secret: + secretName: "client-keys" + restartPolicy: Never + EOF + ``` + +1. クライアントコンテナが実行されているかどうかを確認します。 + ```console + kubectl get pod scalardl-client + ``` + 【コマンド実行結果】 + ```console + NAME READY STATUS RESTARTS AGE + scalardl-client 1/1 Running 0 11s + ``` + +## ステップ 8. クライアント コンテナで ScalarDL サンプル コントラクトを実行する + +以下に最低限の手順を説明します。 ScalarDL の詳細やコントラクトについて知りたい場合は、[Getting Started with ScalarDL](https://scalardl.scalar-labs.com/ja-jp/docs/latest/getting-started) をご覧ください。 + +1. クライアントコンテナで bash を実行します。 + ```console + kubectl exec -it scalardl-client -- bash + ``` + この手順の後、クライアント コンテナで各コマンドを実行します。 + +1. git、curl、および unzip コマンドをクライアント コンテナにインストールします。 + ```console + apt update && apt install -y git curl unzip + ``` + +1. ScalarDL Java Client SDK git リポジトリのクローンを作成します。 + ```console + git clone https://github.com/scalar-labs/scalardl-java-client-sdk.git + ``` + +1. ディレクトリを `scalardl-java-client-sdk/` に変更します。 + ```console + cd scalardl-java-client-sdk/ + ``` + ```console + pwd + ``` + 【コマンド実行結果】 + ```console + + /scalardl-java-client-sdk + ``` + +1. ブランチを任意のバージョンに変更します。 + ```console + git checkout -b v3.6.0 refs/tags/v3.6.0 + ``` + ```console + git branch + ``` + 【コマンド実行結果】 + ```console + master + * v3.6.0 + ``` + 別のバージョンを使用する場合は、使用するバージョン(タグ)を指定してください。 同じバージョンの ScalarDL Ledger と ScalarDL Java Client SDK を使用する必要があります。 + +1. サンプルコントラクトを作成します。 + ```console + ./gradlew assemble + ``` + +1. ScalarDL の CLI ツールは [ScalarDL Java Client SDK Releases](https://github.com/scalar-labs/scalardl-java-client-sdk/releases) からダウンロードしてください。 + ```console + curl -OL https://github.com/scalar-labs/scalardl-java-client-sdk/releases/download/v3.6.0/scalardl-java-client-sdk-3.6.0.zip + ``` + 同じバージョンの CLI ツールと ScalarDL Ledger を使用する必要があります。 + +1. `scalardl-java-client-sdk-3.6.0.zip` ファイルを解凍します。 + ```console + unzip ./scalardl-java-client-sdk-3.6.0.zip + ``` + +1. Kubernetes クラスター上の ScalarDL Ledger にアクセスするための構成ファイル (client.properties) を作成します。 + ```console + cat << 'EOF' > client.properties + scalar.dl.client.server.host=scalardl-ledger-envoy.default.svc.cluster.local + scalar.dl.client.cert_holder_id=client + scalar.dl.client.cert_path=/keys/certificate + scalar.dl.client.private_key_path=/keys/private-key + EOF + ``` + +1. クライアントの証明書ファイルを登録します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/register-cert --properties ./client.properties + ``` + +1. サンプルコントラクト`StateUpdater`を登録します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/register-contract --properties ./client.properties --contract-id StateUpdater --contract-binary-name com.org1.contract.StateUpdater --contract-class-file ./build/classes/java/main/com/org1/contract/StateUpdater.class + ``` + +1. サンプルコントラクト`StateReader`を登録します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/register-contract --properties ./client.properties --contract-id StateReader --contract-binary-name com.org1.contract.StateReader --contract-class-file ./build/classes/java/main/com/org1/contract/StateReader.class + ``` + +1. コントラクト`StateUpdater`を実行します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/execute-contract --properties ./client.properties --contract-id StateUpdater --contract-argument '{"asset_id": "test_asset", "state": 3}' + ``` + このサンプル コントラクトは、`test_asset` という名前のアセットの `state` (値) を `3` に更新します。 + +1. コントラクト `StateReader` を実行します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/execute-contract --properties ./client.properties --contract-id StateReader --contract-argument '{"asset_id": "test_asset"}' + ``` + 【コマンド実行結果】 + ```console + Contract result: + { + "id" : "test_asset", + "age" : 0, + "output" : { + "state" : 3 + } + } + ``` + +1. アセットの検証リクエストを実行します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/validate-ledger --properties ./client.properties --asset-id "test_asset" + ``` + 【コマンド実行結果】 + ```console + { + "status_code" : "OK", + "Ledger" : { + "id" : "test_asset", + "age" : 0, + "nonce" : "f31599c6-e6b9-4b77-adc3-61cb5f119bd3", + "hash" : "9ExfFl5Lg9IQwdXdW9b87Bi+PWccn3OSNRbhmI/dboo=", + "signature" : "MEQCIG6Xa4WOWGMIIbA3PnCje4aAapYfCMerF54xRW0gaUuzAiBCA1nCAPoFWgxArB34/u9b+KeoxQBMALI/pOzMNoLExg==" + }, + "Auditor" : null + } + ``` + * 参考情報 + * 資産データが改ざんされていない場合、検証リクエスト(validate-ledger コマンド)は結果として `OK` を返します。 + * 資産データが改ざんされている場合(例:DBの `state` 値が改ざんされている場合)、検証リクエスト(validate-ledger コマンド)は結果として `OK` 以外の値(例:`INVALID_OUTPUT`)を返します。 以下のような。 + 【コマンド実行結果(資産データが改ざんされた場合)】 + ```console + { + "status_code" : "INVALID_OUTPUT", + "Ledger" : { + "id" : "test_asset", + "age" : 0, + "nonce" : "f31599c6-e6b9-4b77-adc3-61cb5f119bd3", + "hash" : "9ExfFl5Lg9IQwdXdW9b87Bi+PWccn3OSNRbhmI/dboo=", + "signature" : "MEQCIGtJerW7N93c/bvIBy/7NXxoQwGFznHMmV6RzsgHQg0dAiBu+eBxkfmMQKJY2d9fLNvCH+4b+9rl7gZ3OXJ2NYeVsA==" + }, + "Auditor" : null + } + ``` + * このようにして、ScalarDL Ledger はデータの改ざんを検出できます。 + +## ステップ 9. すべてのリソースを削除する + +Kubernetes クラスターで ScalarDL Ledger テストを完了したら、すべてのリソースを削除します。 + +1. ScalarDL Ledger、ScalarDL Schema Loader、PostgreSQL をアンインストールします。 + ```console + helm uninstall scalardl-ledger schema-loader-ledger postgresql-ledger + ``` + +1. クライアントコンテナを削除します。 + ``` + kubectl delete pod scalardl-client --force --grace-period 0 + ``` + +1. 作業ディレクトリとサンプル ファイル (構成ファイル、キー、証明書) を削除します。 + ```console + cd ~ + ``` + ```console + rm -rf ~/scalardl-test/ + ``` + +## 参考文献 + +Scalar 製品の監視またはログ記録を開始する方法については、次のドキュメントで説明しています。 + +* [Helm Charts の入門 (Prometheus Operator を使用したモニタリング)](getting-started-monitoring.mdx) +* [Helm Charts の入門 (Loki スタックを使用したロギング)](getting-started-logging.mdx) +* [Helm Charts の入門 (Scalar Manager)](getting-started-scalar-manager.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalar-admin-for-kubernetes.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalar-admin-for-kubernetes.mdx new file mode 100644 index 00000000..735b8f92 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalar-admin-for-kubernetes.mdx @@ -0,0 +1,37 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +--- + +# Kubernetes 用に Scalar Admin をデプロイする方法 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Scalar Helm Chart を使用して Kubernetes に Scalar Admin をデプロイする方法について説明します。 Scalar Admin for Kubernetes のカスタム値ファイルの詳細については、[Scalar Admin for Kubernetes のカスタム値ファイルの構成](configure-custom-values-scalar-admin-for-kubernetes.mdx) を参照してください。 + +## Kubernetes 用の Scalar Admin をデプロイする + +Scalar Admin for Kubernetes をデプロイするには、次のコマンドを実行します。山かっこ内の内容を説明どおりに置き換えます。 + +```console +helm install scalar-labs/scalar-admin-for-kubernetes -n -f / --version +``` + +## Scalar Admin for Kubernetes ジョブをアップグレードする + +Scalar Admin for Kubernetes ジョブをアップグレードするには、次のコマンドを実行して、山かっこ内の内容を説明どおりに置き換えます。 + +```console +helm upgrade scalar-labs/scalar-admin-for-kubernetes -n -f / --version +``` + +## Scalar Admin for Kubernetes ジョブを削除する + +Scalar Admin for Kubernetes ジョブを削除するには、次のコマンドを実行して、山括弧内の内容を説明どおりに置き換えます。 + +```console +helm uninstall -n +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalar-products.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalar-products.mdx new file mode 100644 index 00000000..433df160 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalar-products.mdx @@ -0,0 +1,70 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +--- + +# Scalar Helm Chart を使用して Scalar 製品をデプロイする + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Scalar Helm Chart を使用して Scalar 製品をデプロイする方法について説明します。 minikube クラスターを使用してローカル環境で Scalar 製品をテストする場合は、次のスタート ガイドを参照してください。 + +* [Scalar Helm Charts の入門](getting-started-scalar-helm-charts.mdx) + +## 前提条件 + +### Helm コマンドをインストールする + +Scalar Helm Charts を使用するには、helm コマンドをインストールする必要があります。 [Helm ドキュメント](https://helm.sh/docs/intro/install/)に従って helm コマンドをインストールしてください。 + +### Scalar Helm Charts リポジトリを追加する + +```console +helm repo add scalar-labs https://scalar-labs.github.io/helm-charts +``` +```console +helm repo update scalar-labs +``` + +### Kubernetes クラスターを準備する + +Scalar 製品を展開するには、Kubernetes クラスターを準備する必要があります。 運用環境で EKS (Amazon Elastic Kubernetes Service) または AKS (Azure Kubernetes Service) を使用している場合。 詳細については、次のドキュメントを参照してください。 + +- [Scalar 製品用の Amazon EKS クラスターを作成するためのガイドライン](../scalar-kubernetes/CreateEKSClusterForScalarProducts.mdx) +- [Scalar 製品用の AKS クラスターを作成するためのガイドライン](../scalar-kubernetes/CreateAKSClusterForScalarProducts.mdx) + +サポートされているバージョンの Kubernetes を準備する必要があります。Scalar Helm Charts がサポートするバージョンについては、[Kubernetes](https://scalardb.scalar-labs.com/docs/latest/requirements/#kubernetes) を参照してください。 + +### データベースの準備 (ScalarDB、ScalarDL Ledger、ScalarDL Auditor) + +ScalarDB/ScalarDLのバックエンドストレージとしてデータベースを用意する必要があります。 ScalarDB/ScalarDL がサポートするデータベースは次のドキュメントで確認できます。 + +* [ScalarDB がサポートするデータベース](https://scalardb.scalar-labs.com/docs/latest/requirements#databases) + +### カスタム値ファイルを準備する + +環境に基づいてカスタム値ファイルを準備する必要があります。 カスタム値ファイルの作成方法の詳細については、次のドキュメントを参照してください。 + +* [Scalar Helm Charts のカスタム値ファイルを構成する](configure-custom-values-file.mdx) + +### コンテナイメージを取得する + +特に商用ライセンス製品を使用する場合は、Scalar 製品のコンテナ イメージを取得する必要があります。 Scalar 製品のコンテナ リポジトリの詳細については、[Scalar 製品のコンテナ イメージを取得する方法](../scalar-kubernetes/HowToGetContainerImages.mdx) を参照してください。 + +PostgreSQL で ScalarDB Analytics などの OSS 製品を使用する場合は、パブリック コンテナ リポジトリからコンテナ イメージを取得できます。 + +## Scalar 製品をデプロイする + +各製品の導入方法の詳細については、次のドキュメントを参照してください。 + +* [ScalarDB Cluster](how-to-deploy-scalardb-cluster.mdx) +* [ScalarDB Analytics with PostgreSQL](how-to-deploy-scalardb-analytics-postgresql.mdx) +* [ScalarDL Ledger](how-to-deploy-scalardl-ledger.mdx) +* [ScalarDL Auditor](how-to-deploy-scalardl-auditor.mdx) +* [Scalar Admin for Kubernetes](how-to-deploy-scalar-admin-for-kubernetes.mdx) +* [Scalar Manager](getting-started-scalar-manager.mdx) +* [[非推奨] ScalarDB Server](how-to-deploy-scalardb.mdx) +* [[非推奨] ScalarDB GraphQL](how-to-deploy-scalardb-graphql.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalardb-analytics-postgresql.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalardb-analytics-postgresql.mdx new file mode 100644 index 00000000..12d0e680 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalardb-analytics-postgresql.mdx @@ -0,0 +1,44 @@ +--- +tags: + - Community +--- + +# ScalarDB Analytics with PostgreSQL の導入方法 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Scalar Helm Chart を使用して ScalarDB Analytics with PostgreSQL をデプロイする方法について説明します。 ScalarDB Analytics with PostgreSQL のカスタム値ファイルの詳細については、[ScalarDB Analytics with PostgreSQL のカスタム値ファイルの構成](configure-custom-values-scalardb-analytics-postgresql.mdx) を参照してください。 + +## シークレットリソースを準備する + +`ScalarDB Analytics with PostgreSQL` をデプロイする前に、キー `superuser-password` を使用して、PostgreSQL のスーパーユーザー パスワードを含むシークレット リソース `scalardb-analytics-postgresql-superuser-password` を作成する必要があります。 Scalar Helm Chart は、この秘密リソースをマウントし、`POSTGRES_PASSWORD` 環境変数を `superuser-password` キーの値に設定します。 + +```console +kubectl create secret generic scalardb-analytics-postgresql-superuser-password --from-literal=superuser-password= -n +``` + +## ScalarDB Analytics with PostgreSQLをデプロイする + +ScalarDB Analytics with PostgreSQL をデプロイするには、次のコマンドを実行します。山かっこ内の内容を説明どおりに置き換えます。 + +```console +helm install scalar-labs/scalardb-analytics-postgresql -n -f / --version +``` + +## ScalarDB Analytics with PostgreSQL 展開をアップグレードする + +ScalarDB Analytics with PostgreSQL デプロイメントをアップグレードするには、次のコマンドを実行します。山括弧内の内容は説明どおりに置き換えてください。 + +```console +helm upgrade scalar-labs/scalardb-analytics-postgresql -n -f / --version +``` + +## ScalarDB Analytics with PostgreSQL デプロイメントを削除する + +ScalarDB Analytics with PostgreSQL デプロイメントを削除するには、次のコマンドを実行して、山括弧内の内容を説明どおりに置き換えます。 + +```console +helm uninstall -n +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalardb-cluster.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalardb-cluster.mdx new file mode 100644 index 00000000..bfb0a74c --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalardb-cluster.mdx @@ -0,0 +1,77 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +--- + +# ScalarDB Cluster のデプロイする方法 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Scalar Helm Chart を使用して ScalarDB Cluster をデプロイする方法について説明します。 ScalarDB Cluster のカスタム値ファイルの詳細については、[ScalarDB Cluster のカスタム値ファイルの構成](configure-custom-values-scalardb-cluster.mdx) を参照してください。 + +## ScalarDB Cluster をデプロイする + +```console +helm install scalar-labs/scalardb-cluster -n -f / --version +``` + +## ScalarDB Cluster のデプロイメントをアップグレードする + +```console +helm upgrade scalar-labs/scalardb-cluster -n -f / --version +``` + +## ScalarDB Cluster のデプロイメントを削除する + +```console +helm uninstall -n +``` + +## `direct-kubernetes` モードを使用してクライアント アプリケーションを Kubernetes にデプロイします + +ScalarDB Cluster を `direct-kubernetes` モードで使用する場合は、次のことを行う必要があります。 + +1. アプリケーション ポッドを ScalarDB Cluster と同じ Kubernetes クラスターにデプロイします。 +2. 3 つの Kubernetes リソース (`Role`、`RoleBinding`、`ServiceAccount`) を作成します。 +3. アプリケーション ポッドに `ServiceAccount` をマウントします。 + +このメソッドが必要なのは、`direct-kubernetes` モードの ScalarDB Cluster クライアント ライブラリがアプリケーション ポッド内から Kubernetes API を実行して、ScalarDB Cluster ポッドに関する情報を取得するためです。 + +* Role + ```yaml + apiVersion: rbac.authorization.k8s.io/v1 + kind: Role + metadata: + name: scalardb-cluster-client-role + namespace: + rules: + - apiGroups: [""] + resources: ["endpoints"] + verbs: ["get", "watch", "list"] + ``` +* RoleBinding + ```yaml + apiVersion: rbac.authorization.k8s.io/v1 + kind: RoleBinding + metadata: + name: scalardb-cluster-client-rolebinding + namespace: + subjects: + - kind: ServiceAccount + name: scalardb-cluster-client-sa + roleRef: + kind: Role + name: scalardb-cluster-role + apiGroup: rbac.authorization.k8s.io + ``` +* ServiceAccount + ```yaml + apiVersion: v1 + kind: ServiceAccount + metadata: + name: scalardb-cluster-client-sa + namespace: + ``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalardb-graphql.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalardb-graphql.mdx new file mode 100644 index 00000000..8f613748 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalardb-graphql.mdx @@ -0,0 +1,49 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +--- + +# [非推奨] ScalarDB GraphQL をデプロイする方法 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +:::note + +ScalarDB GraphQL サーバーは非推奨になりました。 代わりに [ScalarDB Cluster](how-to-deploy-scalardb-cluster.mdx) を使用してください。 + +::: + +このドキュメントでは、Scalar Helm Chart を使用して ScalarDB GraphQL をデプロイする方法について説明します。 カスタム値ファイルを準備する必要があります。 ScalarDB GraphQL のカスタム値ファイルの詳細については、次のドキュメントを参照してください。 + +* [[非推奨] ScalarDB GraphQL のカスタム値ファイルを構成する](configure-custom-values-scalardb-graphql.mdx) + +## ScalarDB Server のデプロイ (推奨オプション) + +ScalarDB GraphQL をデプロイする場合は、次のように ScalarDB GraphQL とバックエンド データベースの間に ScalarDB Server をデプロイすることをお勧めします。 + +``` +[クライアント] ---> [ScalarDB GraphQL] ---> [ScalarDB Server] ---> [バックエンドデータベース] +``` + +ScalarDB GraphQLをデプロイする前に、ドキュメント [ScalarDB Server をデプロイする方法](how-to-deploy-scalardb.mdx) に従ってScalarDB Serverをデプロイしてください。 + +## ScalarDB GraphQL をデプロイする + +```console +helm install scalar-labs/scalardb-graphql -n -f / --version +``` + +## ScalarDB GraphQL のデプロイメントをアップグレードする + +```console +helm upgrade scalar-labs/scalardb-graphql -n -f / --version +``` + +## ScalarDB GraphQL のデプロイメントを削除する + +```console +helm uninstall -n +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalardb.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalardb.mdx new file mode 100644 index 00000000..0c4eb676 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalardb.mdx @@ -0,0 +1,40 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium + - Deprecated +--- + +# [非推奨] ScalarDB Server をデプロイする方法 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +:::note + +ScalarDB Server は非推奨になりました。 代わりに [ScalarDB Cluster](how-to-deploy-scalardb-cluster.mdx) を使用してください。 + +::: + +このドキュメントでは、Scalar Helm Chart を使用して ScalarDB Server をデプロイする方法について説明します。 カスタム値ファイルを準備する必要があります。 ScalarDB Server のカスタム値ファイルの詳細については、次のドキュメントを参照してください。 + +* [[非推奨] ScalarDB Server のカスタム値ファイルを構成する](configure-custom-values-scalardb.mdx) + +## ScalarDB Server をデプロイする + +```console +helm install scalar-labs/scalardb -n -f / --version +``` + +## ScalarDB Server のデプロイメントをアップグレードする + +```console +helm upgrade scalar-labs/scalardb -n -f / --version +``` + +## ScalarDB Server のデプロイメントを削除します + +```console +helm uninstall -n +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalardl-auditor.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalardl-auditor.mdx new file mode 100644 index 00000000..74852ba2 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalardl-auditor.mdx @@ -0,0 +1,45 @@ +--- +--- + +# ScalarDL Auditor のデプロイする方法 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Scalar Helm Chart を使用して ScalarDL Auditor をデプロイする方法について説明します。 カスタム値ファイルを準備する必要があります。 ScalarDL Auditor および ScalarDL Schema Loader のカスタム値ファイルの詳細については、次のドキュメントを参照してください。 + +* [ScalarDL Auditor のカスタム値ファイルを構成する](configure-custom-values-scalardl-auditor.mdx) +* [ScalarDL Schema Loaderのカスタム値ファイルを構成する](configure-custom-values-scalardl-schema-loader.mdx) + +## 秘密鍵ファイルと証明書ファイルを準備する + +ScalarDL Auditor をデプロイするときは、秘密キー ファイルと証明書ファイルを ScalarDL Auditor ポッドにマウントするための Secrete リソースを作成する必要があります。 + +ScalarDL ポッドにキー ファイルと証明書ファイルをマウントする方法の詳細については、[ScalarDL Helm Charts のポッドにキーファイルと証明書ファイルをマウントする](mount-files-or-volumes-on-scalar-pods.mdx#scalardl-helm-charts-のポッドにキーファイルと証明書ファイルをマウントする) を参照してください。 + +## ScalarDL Auditor のスキーマの作成 (ScalarDL Schema Loader のデプロイ) + +ScalarDL Auditor をデプロイする前に、バックエンド データベースに ScalarDL Auditor のスキーマを作成する必要があります。 + +```console +helm install scalar-labs/schema-loading -n -f / --version +``` + +## ScalarDL Auditor のデプロイ + +```console +helm install scalar-labs/scalardl-audit -n -f / --version +``` + +## ScalarDL Auditor の展開をアップグレードする + +```console +helm upgrade scalar-labs/scalardl-audit -n -f / --version +``` + +## ScalarDL Auditor および ScalarDL Schema Loader のデプロイメントを削除する + +```console +helm uninstall -n +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalardl-ledger.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalardl-ledger.mdx new file mode 100644 index 00000000..c9267056 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/how-to-deploy-scalardl-ledger.mdx @@ -0,0 +1,47 @@ +--- +--- + +# ScalarDL Ledger のデプロイ方法 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Scalar Helm Chart を使用して ScalarDL Ledger をデプロイする方法について説明します。 カスタム値ファイルを準備する必要があります。 ScalarDL Ledger および ScalarDL Schema Loader のカスタム値ファイルの詳細については、次のドキュメントを参照してください。 + +* [ScalarDL Ledger のカスタム値ファイルを構成する](configure-custom-values-scalardl-ledger.mdx) +* [ScalarDL Schema Loaderのカスタム値ファイルを構成する](configure-custom-values-scalardl-schema-loader.mdx) + +## 秘密鍵ファイルを準備します (オプション / ScalarDL Auditor を使用する場合は必要です) + +ScalarDL Ledger の [asset proofs](https://scalardl.scalar-labs.com/ja-jp/docs/latest/how-to-use-proof) を使用する場合は、秘密キー ファイルを ScalarDL Ledger ポッドにマウントするための Secrete リソースを作成する必要があります。 ScalarDL Auditorを使用する場合は資産証明が必要です。 + +ScalarDL ポッドにキー/証明書ファイルをマウントする方法の詳細については、次のドキュメントを参照してください。 + +* [ScalarDL Helm Charts のポッドにキーファイルと証明書ファイルをマウントする](mount-files-or-volumes-on-scalar-pods.mdx#scalardl-helm-charts-のポッドにキーファイルと証明書ファイルをマウントする) + +## ScalarDL Ledger のスキーマの作成 (ScalarDL Schema Loader のデプロイ) + +ScalarDL Ledger をデプロイする前に、バックエンド データベースに ScalarDL Ledger のスキーマを作成する必要があります。 + +```console +helm install scalar-labs/schema-loading -n -f / --version +``` + +## ScalarDL Ledger のデプロイ + +```console +helm install scalar-labs/scalardl -n -f / --version +``` + +## ScalarDL Ledger の展開をアップグレードする + +```console +helm upgrade scalar-labs/scalardl -n -f / --version +``` + +## ScalarDL Ledger および ScalarDL Schema Loader のデプロイメントを削除する + +```console +helm uninstall -n +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/mount-files-or-volumes-on-scalar-pods.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/mount-files-or-volumes-on-scalar-pods.mdx new file mode 100644 index 00000000..11bd03d2 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/mount-files-or-volumes-on-scalar-pods.mdx @@ -0,0 +1,141 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +--- + +# Scalar 製品ポッドにファイルまたはボリュームをマウントします + +ScalarDB Server、ScalarDB Cluster、ScalarDB Analytics with PostgreSQL、または ScalarDL Helm Charts (ScalarDL Ledger および ScalarDL Auditor) を使用する場合、Scalar 製品ポッドに任意のファイルまたはボリュームをマウントできます。 + +## ScalarDL Helm Charts のポッドにキーファイルと証明書ファイルをマウントする + +ScalarDL Auditor を実行するには、キー ファイルと証明書ファイルをマウントする必要があります。 + +* 構成例 + * ScalarDL Ledger + ```yaml + ledger: + ledgerProperties: | + ... + scalar.dl.ledger.proof.enabled=true + scalar.dl.ledger.auditor.enabled=true + scalar.dl.ledger.proof.private_key_path=/keys/private-key + ``` + * ScalarDL Auditor + ```yaml + auditor: + auditorProperties: | + ... + scalar.dl.auditor.private_key_path=/keys/private-key + scalar.dl.auditor.cert_path=/keys/certificate + ``` + +この例では、**秘密キー** ファイルと **証明書** ファイルをコンテナ内の `/keys` ディレクトリにマウントする必要があります。 そして、`private-key` と `certificate` という名前のファイルをマウントする必要があります。 これらのファイルをマウントするには、`extraVolumes` および `extraVolumeMounts` を使用できます。 + +1. Kubernetes マニフェストと同じ構文を使用して、カスタム値ファイルに `extraVolumes` と `extraVolumeMounts` を設定します。 `mountPath` キーにディレクトリ名を指定する必要があります。 + * 例 + * ScalarDL Ledger + ```yaml + ledger: + extraVolumes: + - name: ledger-keys + secret: + secretName: ledger-keys + extraVolumeMounts: + - name: ledger-keys + mountPath: /keys + readOnly: true + ``` + * ScalarDL Auditor + ```yaml + auditor: + extraVolumes: + - name: auditor-keys + secret: + secretName: auditor-keys + extraVolumeMounts: + - name: auditor-keys + mountPath: /keys + readOnly: true + ``` + +1. キーと証明書ファイルを含む `Secret` リソースを作成します。 + + Secret のキーにはファイル名を指定する必要があります。 + + * 例 + * ScalarDL Ledger + ```console + kubectl create secret generic ledger-keys \ + --from-file=tls.key=./ledger-key.pem + ``` + * ScalarDL Auditor + ```console + kubectl create secret generic auditor-keys \ + --from-file=tls.key=./auditor-key.pem \ + --from-file=certificate=./auditor-cert.pem + ``` + +1. 上記のカスタム値ファイルを使用して Scalar 製品をデプロイします。 + + Scalar 製品を展開した後、次のようにキー ファイルと証明書ファイルが `/keys` ディレクトリにマウントされます。 + + * 例 + * ScalarDL Ledger + ```console + ls -l /keys/ + ``` + + 次のような結果が表示されます: + + ```console + total 0 + lrwxrwxrwx 1 root root 18 Jun 27 03:12 private-key -> ..data/private-key + ``` + * ScalarDL Auditor + ```console + ls -l /keys/ + ``` + + 次のような結果が表示されます: + + ```console + total 0 + lrwxrwxrwx 1 root root 18 Jun 27 03:16 certificate -> ..data/certificate + lrwxrwxrwx 1 root root 18 Jun 27 03:16 private-key -> ..data/private-key + ``` + +## emptyDir をマウントしてヒープ ダンプ ファイルを取得します + +カスタム値ファイルで次のキーを使用して、emptyDir を Scalar 製品ポッドにマウントできます。 たとえば、このボリュームを使用して、Scalar 製品のヒープ ダンプを取得できます。 + +* キー + * `scalardb.extraVolumes` / `scalardb.extraVolumeMounts` (ScalarDB Server) + * `scalardbCluster.extraVolumes` / `scalardbCluster.extraVolumeMounts` (ScalarDB Cluster) + * `scalardbAnalyticsPostgreSQL.extraVolumes` / `scalardbAnalyticsPostgreSQL.extraVolumeMounts` (ScalarDB Analytics with PostgreSQL) + * `ledger.extraVolumes` / `ledger.extraVolumeMounts` (ScalarDL Ledger) + * `auditor.extraVolumes` / `auditor.extraVolumeMounts` (ScalarDL Auditor) + +* 例 (ScalarDB Server) + ```yaml + scalardb: + extraVolumes: + - name: heap-dump + emptyDir: {} + extraVolumeMounts: + - name: heap-dump + mountPath: /dump + ``` + +この例では、次のように ScalarDB Server ポッドにマウントされたボリュームを確認できます。 + +```console +ls -ld /dump +``` + +次のような結果が表示されます: + +```console +drwxrwxrwx 2 root root 4096 Feb 6 07:43 /dump +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/use-secret-for-credentials.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/use-secret-for-credentials.mdx new file mode 100644 index 00000000..8714ca07 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/helm-charts/use-secret-for-credentials.mdx @@ -0,0 +1,245 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +--- + +# Secret リソースを使用して資格情報を環境変数としてプロパティ ファイルに渡す方法 + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +Kubernetes の `Secret` リソースを介して、**username** や **password** などの資格情報を環境変数として渡すことができます。 Scalar 製品の以前のバージョンの Docker イメージは、プロパティ ファイルのテンプレート化に `dockerize` コマンドを使用します。 Scalar 製品の最新バージョンの Docker イメージは、環境変数から直接値を取得します。 + +注記:次の環境変数名は、Scalar Helm Chart の内部で使用されるため、カスタム値ファイルで使用できません。 +```console +HELM_SCALAR_DB_CONTACT_POINTS +HELM_SCALAR_DB_CONTACT_PORT +HELM_SCALAR_DB_USERNAME +HELM_SCALAR_DB_PASSWORD +HELM_SCALAR_DB_STORAGE +HELM_SCALAR_DL_LEDGER_PROOF_ENABLED +HELM_SCALAR_DL_LEDGER_AUDITOR_ENABLED +HELM_SCALAR_DL_LEDGER_PROOF_PRIVATE_KEY_PATH +HELM_SCALAR_DL_AUDITOR_SERVER_PORT +HELM_SCALAR_DL_AUDITOR_SERVER_PRIVILEGED_PORT +HELM_SCALAR_DL_AUDITOR_SERVER_ADMIN_PORT +HELM_SCALAR_DL_AUDITOR_LEDGER_HOST +HELM_SCALAR_DL_AUDITOR_CERT_HOLDER_ID +HELM_SCALAR_DL_AUDITOR_CERT_VERSION +HELM_SCALAR_DL_AUDITOR_CERT_PATH +HELM_SCALAR_DL_AUDITOR_PRIVATE_KEY_PATH +SCALAR_DB_LOG_LEVEL +SCALAR_DL_LEDGER_LOG_LEVEL +SCALAR_DL_AUDITOR_LOG_LEVEL +SCALAR_DB_CLUSTER_MEMBERSHIP_KUBERNETES_ENDPOINT_NAMESPACE_NAME +SCALAR_DB_CLUSTER_MEMBERSHIP_KUBERNETES_ENDPOINT_NAME +``` + +1. 環境変数名をカスタム値ファイルのプロパティ構成に設定します。使用している製品に応じて、次の例を参照してください。 + + + + ```yaml + scalardbCluster: + scalardbClusterNodeProperties: | + ... + scalar.db.username=${env:SCALAR_DB_USERNAME} + scalar.db.password=${env:SCALAR_DB_PASSWORD} + ... + ``` + + + ```yaml + scalardbAnalyticsPostgreSQL: + databaseProperties: | + ... + scalar.db.username=${env:SCALAR_DB_USERNAME} + scalar.db.password=${env:SCALAR_DB_PASSWORD} + ... + ``` + + +

ScalarDB Server 3.8 以降 (Apache Commons Text 構文)

+ + ```yaml + scalardb: + databaseProperties: | + ... + scalar.db.username=${env:SCALAR_DB_USERNAME} + scalar.db.password=${env:SCALAR_DB_PASSWORD} + ... + ``` + +

ScalarDB Server 3.7 以前 (Go テンプレート構文)

+ + ```yaml + scalardb: + databaseProperties: | + ... + scalar.db.username={{ default .Env.SCALAR_DB_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DB_PASSWORD "" }} + ... + ``` +
+ +

ScalarDL Ledger 3.8 以降 (Apache Commons Text 構文)

+ + ```yaml + ledger: + ledgerProperties: | + ... + scalar.db.username=${env:SCALAR_DB_USERNAME} + scalar.db.password=${env:SCALAR_DB_PASSWORD} + ... + ``` + +

ScalarDL Ledger 3.7 以前 (Go テンプレート構文)

+ + ```yaml + ledger: + ledgerProperties: | + ... + scalar.db.username={{ default .Env.SCALAR_DB_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DB_PASSWORD "" }} + ... + ``` +
+ +

ScalarDL Auditor 3.8 以降 (Apache Commons Text 構文)

+ + ```yaml + auditor: + auditorProperties: | + ... + scalar.db.username=${env:SCALAR_DB_USERNAME} + scalar.db.password=${env:SCALAR_DB_PASSWORD} + ... + ``` + +

ScalarDL Auditor 3.7 以前 (Go テンプレート構文)

+ + ```yaml + auditor: + auditorProperties: | + ... + scalar.db.username={{ default .Env.SCALAR_DB_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DB_PASSWORD "" }} + ... + ``` +
+ +

ScalarDL Schema Loader 3.8 以降 (Apache Commons Text 構文)

+ + ```yaml + schemaLoading: + databaseProperties: | + ... + scalar.db.username=${env:SCALAR_DB_USERNAME} + scalar.db.password=${env:SCALAR_DB_PASSWORD} + ... + ``` + +

ScalarDL Schema Loader 3.7 以前 (Go テンプレート構文)

+ + ```yaml + schemaLoading: + databaseProperties: | + ... + scalar.db.username={{ default .Env.SCALAR_DB_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DB_PASSWORD "" }} + ... + ``` +
+
+ +1. 資格情報を含む `Secret` リソースを作成します。 + `Secret` のキーとして環境変数名を指定する必要があります。 + * 例 + ```console + kubectl create secret generic scalardb-credentials-secret \ + --from-literal=SCALAR_DB_USERNAME=postgres \ + --from-literal=SCALAR_DB_PASSWORD=postgres + ``` + +1. カスタム値ファイル内の次のキーに `Secret` 名を設定します。使用している製品に応じて、次の例を参照してください。 + + + + **キー:** `scalardbCluster.secretName` + + ```yaml + scalardbCluster: + secretName: "scalardb-cluster-credentials-secret" + ``` + + + **キー:** `scalardbAnalyticsPostgreSQL.secretName` + + ```yaml + scalardbAnalyticsPostgreSQL: + secretName: "scalardb-analytics-postgresql-credentials-secret" + ``` + + + **キー:** `scalardb.secretName` + + ```yaml + scalardb: + secretName: "scalardb-credentials-secret" + ``` + + + **キー:** `ledger.secretName` + + ```yaml + ledger: + secretName: "ledger-credentials-secret" + ``` + + + **キー:** `auditor.secretName` + + ```yaml + auditor: + secretName: "auditor-credentials-secret" + ``` + + + **キー:** `schemaLoading.secretName` + + ```yaml + schemaLoading: + secretName: "schema-loader-ledger-credentials-secret" + ``` + + + +1. 上記のカスタム値ファイルを使用して Scalar 製品をデプロイします。 + + Scalar 製品をデプロイした後、Go テンプレート文字列 (環境変数) は `Secret` の値に置き換えられます。 + + * 例 + * カスタム値ファイル + + ```yaml + scalardb: + databaseProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-scalardb.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DB_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DB_PASSWORD "" }} + scalar.db.storage=jdbc + ``` + + * コンテナ内のプロパティ ファイル + ```properties + scalar.db.contact_points=jdbc:postgresql://postgresql-scalardb.default.svc.cluster.local:5432/postgres + scalar.db.username=postgres + scalar.db.password=postgres + scalar.db.storage=jdbc + ``` + + Apache Commons Text 構文を使用する場合、Scalar 製品は環境変数から直接値を取得します。