Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ displayed_sidebar: docsJapanese

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CertificateManagement from '/src/components/ja-jp/_certificate-management.mdx';

このドキュメントでは、Scalar Envoy チャートのカスタム値ファイルを作成する方法について説明します。パラメータの詳細を知りたい場合は、Scalar Envoy チャートの [README](https://github.com/scalar-labs/helm-charts/blob/main/charts/envoy/README.md) を参照してください。

Expand Down Expand Up @@ -166,50 +167,7 @@ AWS または Azure を使用している場合、詳細については次のド
- クライアントと 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[<a href='https://cert-manager.io/docs/'>cert-manager</a> を使用して<br />秘密鍵と証明書ファイルを<br />自動的に管理しますか?]
A -->|はい、証明書を自動的に<br />管理したいです。| B
A -->|いいえ、証明書は自分で手動で<br />管理したいです。| C
B[自己署名 CA と<br />信頼された CA の<br />どちらを使用しますか?]
C[自己署名 CA と<br />信頼された CA の<br />どちらを使用しますか?]
B -->|自己署名 CA を<br />使用したいです。| D
B -->|信頼できる CA <br />を使用したいです。| E
C -->|自己署名 CA <br />を使用したいです。| F
C -->|信頼できる CA <br />を使用したいです。| G
D[<a href='#cert-manager-で自己署名-ca-を使用して秘密鍵と証明書ファイルを管理する'>cert-manager で自己署名 CA を使用して<br />秘密鍵と証明書ファイルを管理する</a><br />を参照してください。]
E[<a href='#cert-manager-で信頼できる-ca-を使用して秘密鍵と証明書ファイルを管理する'>cert-manager で信頼できる CA を使用して<br />秘密鍵と証明書ファイルを管理する</a><br />を参照してください。]
F[<a href='#秘密鍵と証明書ファイルを使用する'>秘密鍵と証明書ファイルを使用する</a>を参照し、<br />生成した自己署名証明書を使用します。]
G[<a href='#秘密鍵と証明書ファイルを使用する'>秘密鍵と証明書ファイルを使用する</a>を参照し、<br />第三者によって生成された<br />信頼できる証明書を使用します。]
```
<CertificateManagement />

#### ダウンストリーム接続で TLS を有効にする

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,275 @@
---
tags:
- Enterprise Option
displayed_sidebar: docsJapanese
---

# ScalarDB Analytics server のカスタム値ファイルを構成する

import CertificateManagement from '/src/components/ja-jp/_certificate-management.mdx';

このドキュメントでは、ScalarDB Analytics server チャートのカスタム値ファイルを作成する方法について説明します。パラメータの詳細については、ScalarDB Analytics server チャートの [README](https://github.com/scalar-labs/helm-charts/blob/main/charts/scalardb-analytics-server/README.md) を参照してください。

## 必要な構成

このセクションでは、必須の設定項目であるイメージ、データベース、およびサービスの構成について説明します。

### コンテナイメージ構成

`scalarDbAnalyticsServer.image.repository` を設定する必要があります。コンテナリポジトリからイメージをプルできるように、必ず ScalarDB Analytics server コンテナイメージを指定してください。

```yaml
scalarDbAnalyticsServer:
image:
repository: <SCALARDB_ANALYTICS_SERVER_CONTAINER_IMAGE>
```

### データベース構成

`scalarDbAnalyticsServer.properties` を設定する必要があります。このパラメータの値の設定の詳細については、[ScalarDB Analytics サーバー設定](https://scalardb.scalar-labs.com/ja-jp/docs/latest/scalardb-analytics/configuration)参照してください。

```yaml
scalarDbAnalyticsServer:
properties: |
scalar.db.analytics.server.db.url=jdbc:postgresql://localhost:5432/scalardb_analytics
scalar.db.analytics.server.db.username=analytics_user
scalar.db.analytics.server.db.password=your_secure_password
```

### サービス構成

Kubernetes のサービスリソースタイプを指定するには、`scalarDbAnalyticsServer.service.type` を設定する必要があります。

ScalarDB Analytics server が Kubernetes クラスターの内部からのみクライアントリクエストを受け入れる場合 (たとえば、クライアントアプリケーションを Scalar 製品と同じ Kubernetes クラスターにデプロイする場合)、`scalarDbAnalyticsServer.service.type` を `ClusterIP` に設定できます。この構成では、クラウドサービスプロバイダーが提供するロードバランサーは作成されません。

```yaml
scalarDbAnalyticsServer:
service:
type: ClusterIP
```

クラウドサービスプロバイダーが提供するロードバランサーを使用して、Kubernetes クラスターの外部からのクライアントリクエストを受け入れる場合は、`scalarDbAnalyticsServer.service.type` を `LoadBalancer` に設定する必要があります。

```yaml
scalarDbAnalyticsServer:
service:
type: LoadBalancer
```

アノテーションを介してロードバランサを設定したい場合は、アノテーションを `scalarDbAnalyticsServer.service.annotations` に設定することもできます。

```yaml
scalarDbAnalyticsServer:
service:
type: LoadBalancer
annotations:
service.beta.kubernetes.io/aws-load-balancer-internal: "true"
service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
```

## オプションの構成

### シークレット構成 (運用環境で推奨)

環境変数を使用してプロパティ (資格情報など) を設定するには、`scalarDbAnalyticsServer.secretName` を使用して、資格情報を含む Secret リソースを指定します。

たとえば、環境変数を使用してバックエンドデータベースの資格情報 (`scalar.db.analytics.server.db.username` and `scalar.db.analytics.server.db.password`) を設定できるため、Pod の安全性が高まります。

```yaml
scalarDbAnalyticsServer:
secretName: "scalardb-analytics-server-credentials-secret"
```

:::tip

ScalarDB Analytics server は、特定の環境変数から設定を自動的に読み込みます。環境変数の命名規則は次のとおりです。

- プロパティ名のすべての文字を大文字にします。
- ピリオド (`.`) を アンダースコア (`_`) に置き換えます。

たとえば、`scalar.db.analytics.server.db.username` と `scalar.db.analytics.server.db.password` を環境変数で設定する場合は、`SCALAR_DB_ANALYTICS_SERVER_DB_USERNAME` と `SCALAR_DB_ANALYTICS_SERVER_DB_PASSWORD` という環境変数を設定する必要があります。

この場合、`scalarDbAnalyticsServer.properties` で `scalar.db.analytics.server.db.username` と `scalar.db.analytics.server.db.password` を設定する必要はありません。環境変数のみを設定すれば十分です。

たとえば、次のようにして、`SCALAR_DB_ANALYTICS_SERVER_DB_USERNAME` と `SCALAR_DB_ANALYTICS_SERVER_DB_PASSWORD` を含むシークレットリソースを作成できます。

```console
kubectl create secret generic scalardb-analytics-server-credentials-secret \
--from-literal=SCALAR_DB_ANALYTICS_SERVER_DB_USERNAME=analytics_user \
--from-literal=SCALAR_DB_ANALYTICS_SERVER_DB_PASSWORD=your_secure_password
```

:::

### SecurityContext 設定 (デフォルト値を推奨)

ScalarDB Analytics server Pod の SecurityContext と PodSecurityContext を設定するには、`scalarDbAnalyticsServer.securityContext` と `scalarDbAnalyticsServer.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
scalarDbAnalyticsServer:
podSecurityContext:
seccompProfile:
type: RuntimeDefault
securityContext:
capabilities:
drop:
- ALL
runAsNonRoot: true
allowPrivilegeEscalation: false
```

### TLS 構成 (環境に応じてオプション)

TLS は、次の通信で有効にできます:

- ScalarDB Analytics server とクライアント間の通信。

<CertificateManagement />

#### TLS を有効にする

次の構成を使用して、すべての ScalarDB Analytics server 接続で TLS を有効にできます。

```yaml
scalarDbAnalyticsServer:
properties: |
...(omit)...
scalar.db.analytics.server.tls.enabled=true
scalar.db.analytics.server.tls.cert_chain_path=/tls/scalardb-analytics-server/certs/tls.crt
scalar.db.analytics.server.tls.private_key_path=/tls/scalardb-analytics-server/certs/tls.key
tls:
enabled: true
```

:::note

cert-manager によって生成される秘密鍵と証明書の仕様、およびこの表の仕様に基づき、TLS 機能を有効にする場合は、固定のファイルパスとファイル名を設定する必要があります。`scalar.db.analytics.server.tls.cert_chain_path` および `scalar.db.analytics.server.tls.private_key_path` には、上記のファイルパスとファイル名をそのまま設定してください。

:::

##### 秘密鍵と証明書ファイルを使用する

次の構成を使用して、秘密鍵と証明書ファイルを設定できます。

```yaml
scalarDbAnalyticsServer:
tls:
enabled: true
caRootCertSecret: "scalardb-analytics-server-tls-ca"
certChainSecret: "scalardb-analytics-server-tls-cert"
privateKeySecret: "scalardb-analytics-server-tls-key"
```

この場合、次のように山括弧内の内容を置き換えて、ScalarDB Analytics server の秘密鍵と証明書ファイルを含むシークレットリソースを作成する必要があります。

```console
kubectl create secret generic scalardb-analytics-server-tls-ca --from-file=ca.crt=<PATH_TO_YOUR_CA_CERTIFICATE_FILE_FOR_SCALARDB_ANALYTICS_SERVER> -n <NAMESPACE>
kubectl create secret generic scalardb-analytics-server-tls-cert --from-file=tls.crt=<PATH_TO_YOUR_CERTIFICATE_FILE_FOR_SCALARDB_ANALYTICS_SERVER> -n <NAMESPACE>
kubectl create secret generic scalardb-analytics-server-tls-key --from-file=tls.key=<PATH_TO_YOUR_PRIVATE_KEY_FILE_FOR_SCALARDB_ANALYTICS_SERVER> -n <NAMESPACE>
```

秘密鍵と証明書ファイルを準備する方法の詳細については、[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
scalarDbAnalyticsServer:
tls:
enabled: true
certManager:
enabled: true
issuerRef:
name: <YOUR_TRUSTED_CA>
dnsNames:
- server.analytics.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
scalarDbAnalyticsServer:
tls:
enabled: true
certManager:
enabled: true
selfSigned:
enabled: true
dnsNames:
- server.analytics.scalardb.example.com
```

この場合、Scalar Helm Charts と cert-manager が秘密鍵と自己署名証明書ファイルを発行します。秘密鍵と証明書ファイルを手動でマウントする必要はありません。

##### TLS通信のカスタム権限を設定する

`scalarDbAnalyticsServer.tls.overrideAuthority` を使用して、TLS 通信のカスタム権限を設定できます。この値によって、実際に接続されているホストが変わることはありません。この値はテスト用ですが、DNS オーバーライドの代替としてテスト以外でも安全に使用できます。たとえば、`scalarDbAnalyticsServer.tls.certChainSecret` を使用して設定した証明書チェーンファイルで提示されるホスト名を指定できます。このチャートでは、ヘルスチェックリクエスト (`startupProbe` と `livenessProbe`) にこの値を使用しています。

```yaml
scalarDbAnalyticsServer:
tls:
enabled: true
overrideAuthority: "server.analytics.scalardb.example.com"
```

### アフィニティ構成 (環境に応じてオプション)

Kubernetes でアフィニティとアンチアフィニティを使用して Pod のデプロイメントを制御するには、`scalarDbAnalyticsServer.affinity` を使用できます。

Kubernetes のアフィニティとアンチアフィニティと同じ構文を使用して、アフィニティとアンチアフィニティを構成できます。Kubernetes でのアフィニティの構成の詳細については、[Assigning Pods to Nodes](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) を参照してください。

```yaml
scalarDbAnalyticsServer:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchExpressions:
- key: app.kubernetes.io/name
operator: In
values:
- scalardb-analytics-server
- key: app.kubernetes.io/app
operator: In
values:
- scalardb-analytics-server
topologyKey: kubernetes.io/hostname
weight: 50
```

### 汚染と許容の構成 (環境に応じてオプション)

Kubernetes のテイントと許容を使用して Pod のデプロイメントを制御したい場合は、`scalarDbAnalyticsServer.tolerations` を使用できます。

Kubernetes の許容と同じ構文を使用して、テイントと許容を構成できます。Kubernetes での許容設定の詳細については、Kubernetes の公式ドキュメント [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) を参照してください。

```yaml
scalarDbAnalyticsServer:
tolerations:
- effect: NoSchedule
key: scalar-labs.com/dedicated-node
operator: Equal
value: scalardb-analytics-server
```
Loading