|
| 1 | +--- |
| 2 | +tags: |
| 3 | + - Enterprise Option |
| 4 | +displayed_sidebar: docsJapanese |
| 5 | +--- |
| 6 | + |
| 7 | +# ScalarDB Analytics server のカスタム値ファイルを構成する |
| 8 | + |
| 9 | +import CertificateManagement from '/src/components/ja-jp/_certificate-management.mdx'; |
| 10 | + |
| 11 | +このドキュメントでは、ScalarDB Analytics server チャートのカスタム値ファイルを作成する方法について説明します。パラメータの詳細については、ScalarDB Analytics server チャートの [README](https://github.com/scalar-labs/helm-charts/blob/main/charts/scalardb-analytics-server/README.md) を参照してください。 |
| 12 | + |
| 13 | +## 必要な構成 |
| 14 | + |
| 15 | +このセクションでは、必須の設定項目であるイメージ、データベース、およびサービスの構成について説明します。 |
| 16 | + |
| 17 | +### コンテナイメージ構成 |
| 18 | + |
| 19 | +`scalarDbAnalyticsServer.image.repository` を設定する必要があります。コンテナリポジトリからイメージをプルできるように、必ず ScalarDB Analytics server コンテナイメージを指定してください。 |
| 20 | + |
| 21 | +```yaml |
| 22 | +scalarDbAnalyticsServer: |
| 23 | + image: |
| 24 | + repository: <SCALARDB_ANALYTICS_SERVER_CONTAINER_IMAGE> |
| 25 | +``` |
| 26 | +
|
| 27 | +### データベース構成 |
| 28 | +
|
| 29 | +`scalarDbAnalyticsServer.properties` を設定する必要があります。このパラメータの値の設定の詳細については、[ScalarDB Analytics サーバー設定](https://scalardb.scalar-labs.com/ja-jp/docs/latest/scalardb-analytics/configuration)参照してください。 |
| 30 | + |
| 31 | +```yaml |
| 32 | +scalarDbAnalyticsServer: |
| 33 | + properties: | |
| 34 | + scalar.db.analytics.server.db.url=jdbc:postgresql://localhost:5432/scalardb_analytics |
| 35 | + scalar.db.analytics.server.db.username=analytics_user |
| 36 | + scalar.db.analytics.server.db.password=your_secure_password |
| 37 | +``` |
| 38 | + |
| 39 | +### サービス構成 |
| 40 | + |
| 41 | +Kubernetes のサービスリソースタイプを指定するには、`scalarDbAnalyticsServer.service.type` を設定する必要があります。 |
| 42 | + |
| 43 | +ScalarDB Analytics server が Kubernetes クラスターの内部からのみクライアントリクエストを受け入れる場合 (たとえば、クライアントアプリケーションを Scalar 製品と同じ Kubernetes クラスターにデプロイする場合)、`scalarDbAnalyticsServer.service.type` を `ClusterIP` に設定できます。この構成では、クラウドサービスプロバイダーが提供するロードバランサーは作成されません。 |
| 44 | + |
| 45 | +```yaml |
| 46 | +scalarDbAnalyticsServer: |
| 47 | + service: |
| 48 | + type: ClusterIP |
| 49 | +``` |
| 50 | + |
| 51 | +クラウドサービスプロバイダーが提供するロードバランサーを使用して、Kubernetes クラスターの外部からのクライアントリクエストを受け入れる場合は、`scalarDbAnalyticsServer.service.type` を `LoadBalancer` に設定する必要があります。 |
| 52 | + |
| 53 | +```yaml |
| 54 | +scalarDbAnalyticsServer: |
| 55 | + service: |
| 56 | + type: LoadBalancer |
| 57 | +``` |
| 58 | + |
| 59 | +アノテーションを介してロードバランサを設定したい場合は、アノテーションを `scalarDbAnalyticsServer.service.annotations` に設定することもできます。 |
| 60 | + |
| 61 | +```yaml |
| 62 | +scalarDbAnalyticsServer: |
| 63 | + service: |
| 64 | + type: LoadBalancer |
| 65 | + annotations: |
| 66 | + service.beta.kubernetes.io/aws-load-balancer-internal: "true" |
| 67 | + service.beta.kubernetes.io/aws-load-balancer-type: "nlb" |
| 68 | +``` |
| 69 | + |
| 70 | +## オプションの構成 |
| 71 | + |
| 72 | +### シークレット構成 (運用環境で推奨) |
| 73 | + |
| 74 | +環境変数を使用してプロパティ (資格情報など) を設定するには、`scalarDbAnalyticsServer.secretName` を使用して、資格情報を含む Secret リソースを指定します。 |
| 75 | + |
| 76 | +たとえば、環境変数を使用してバックエンドデータベースの資格情報 (`scalar.db.analytics.server.db.username` and `scalar.db.analytics.server.db.password`) を設定できるため、Pod の安全性が高まります。 |
| 77 | + |
| 78 | +```yaml |
| 79 | +scalarDbAnalyticsServer: |
| 80 | + secretName: "scalardb-analytics-server-credentials-secret" |
| 81 | +``` |
| 82 | + |
| 83 | +:::tip |
| 84 | + |
| 85 | +ScalarDB Analytics server は、特定の環境変数から設定を自動的に読み込みます。環境変数の命名規則は次のとおりです。 |
| 86 | + |
| 87 | +- プロパティ名のすべての文字を大文字にします。 |
| 88 | +- ピリオド (`.`) を アンダースコア (`_`) に置き換えます。 |
| 89 | + |
| 90 | +たとえば、`scalar.db.analytics.server.db.username` と `scalar.db.analytics.server.db.password` を環境変数で設定する場合は、`SCALAR_DB_ANALYTICS_SERVER_DB_USERNAME` と `SCALAR_DB_ANALYTICS_SERVER_DB_PASSWORD` という環境変数を設定する必要があります。 |
| 91 | + |
| 92 | +この場合、`scalarDbAnalyticsServer.properties` で `scalar.db.analytics.server.db.username` と `scalar.db.analytics.server.db.password` を設定する必要はありません。環境変数のみを設定すれば十分です。 |
| 93 | + |
| 94 | +たとえば、次のようにして、`SCALAR_DB_ANALYTICS_SERVER_DB_USERNAME` と `SCALAR_DB_ANALYTICS_SERVER_DB_PASSWORD` を含むシークレットリソースを作成できます。 |
| 95 | + |
| 96 | +```console |
| 97 | +kubectl create secret generic scalardb-analytics-server-credentials-secret \ |
| 98 | + --from-literal=SCALAR_DB_ANALYTICS_SERVER_DB_USERNAME=analytics_user \ |
| 99 | + --from-literal=SCALAR_DB_ANALYTICS_SERVER_DB_PASSWORD=your_secure_password |
| 100 | +``` |
| 101 | + |
| 102 | +::: |
| 103 | + |
| 104 | +### SecurityContext 設定 (デフォルト値を推奨) |
| 105 | + |
| 106 | +ScalarDB Analytics server Pod の SecurityContext と PodSecurityContext を設定するには、`scalarDbAnalyticsServer.securityContext` と `scalarDbAnalyticsServer.podSecurityContext` を使用できます。 |
| 107 | + |
| 108 | +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/) を参照してください。 |
| 109 | + |
| 110 | +```yaml |
| 111 | +scalarDbAnalyticsServer: |
| 112 | + podSecurityContext: |
| 113 | + seccompProfile: |
| 114 | + type: RuntimeDefault |
| 115 | + securityContext: |
| 116 | + capabilities: |
| 117 | + drop: |
| 118 | + - ALL |
| 119 | + runAsNonRoot: true |
| 120 | + allowPrivilegeEscalation: false |
| 121 | +``` |
| 122 | + |
| 123 | +### TLS 構成 (環境に応じてオプション) |
| 124 | + |
| 125 | +TLS は、次の通信で有効にできます: |
| 126 | + |
| 127 | +- ScalarDB Analytics server とクライアント間の通信。 |
| 128 | + |
| 129 | +<CertificateManagement /> |
| 130 | + |
| 131 | +#### TLS を有効にする |
| 132 | + |
| 133 | +次の構成を使用して、すべての ScalarDB Analytics server 接続で TLS を有効にできます。 |
| 134 | + |
| 135 | +```yaml |
| 136 | +scalarDbAnalyticsServer: |
| 137 | + properties: | |
| 138 | + ...(omit)... |
| 139 | + scalar.db.analytics.server.tls.enabled=true |
| 140 | + scalar.db.analytics.server.tls.cert_chain_path=/tls/scalardb-analytics-server/certs/tls.crt |
| 141 | + scalar.db.analytics.server.tls.private_key_path=/tls/scalardb-analytics-server/certs/tls.key |
| 142 | + tls: |
| 143 | + enabled: true |
| 144 | +``` |
| 145 | + |
| 146 | +:::note |
| 147 | + |
| 148 | +cert-manager によって生成される秘密鍵と証明書の仕様、およびこの表の仕様に基づき、TLS 機能を有効にする場合は、固定のファイルパスとファイル名を設定する必要があります。`scalar.db.analytics.server.tls.cert_chain_path` および `scalar.db.analytics.server.tls.private_key_path` には、上記のファイルパスとファイル名をそのまま設定してください。 |
| 149 | + |
| 150 | +::: |
| 151 | + |
| 152 | +##### 秘密鍵と証明書ファイルを使用する |
| 153 | + |
| 154 | +次の構成を使用して、秘密鍵と証明書ファイルを設定できます。 |
| 155 | + |
| 156 | +```yaml |
| 157 | +scalarDbAnalyticsServer: |
| 158 | + tls: |
| 159 | + enabled: true |
| 160 | + caRootCertSecret: "scalardb-analytics-server-tls-ca" |
| 161 | + certChainSecret: "scalardb-analytics-server-tls-cert" |
| 162 | + privateKeySecret: "scalardb-analytics-server-tls-key" |
| 163 | +``` |
| 164 | + |
| 165 | +この場合、次のように山括弧内の内容を置き換えて、ScalarDB Analytics server の秘密鍵と証明書ファイルを含むシークレットリソースを作成する必要があります。 |
| 166 | + |
| 167 | +```console |
| 168 | +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> |
| 169 | +kubectl create secret generic scalardb-analytics-server-tls-cert --from-file=tls.crt=<PATH_TO_YOUR_CERTIFICATE_FILE_FOR_SCALARDB_ANALYTICS_SERVER> -n <NAMESPACE> |
| 170 | +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> |
| 171 | +``` |
| 172 | + |
| 173 | +秘密鍵と証明書ファイルを準備する方法の詳細については、[Scalar 製品の秘密鍵と証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx)を参照してください。 |
| 174 | + |
| 175 | +##### cert-manager で信頼できる CA を使用して秘密鍵と証明書ファイルを管理する |
| 176 | + |
| 177 | +次の構成を使用して、山括弧内の内容を説明に従って置き換えることで、cert-manager で秘密鍵と証明書ファイルを管理できます。 |
| 178 | + |
| 179 | +:::note |
| 180 | + |
| 181 | +* cert-manager を使用する場合は、cert-manager をデプロイし、`Issuers` リソースを準備する必要があります。詳細については、cert-manager のドキュメント、[インストール](https://cert-manager.io/docs/installation/)および[発行者構成](https://cert-manager.io/docs/configuration/)を参照してください。 |
| 182 | +* デフォルトでは、Scalar Helm Chart は Scalar 製品の証明書要件を満たす `Certificate` リソースを作成します。デフォルトの証明書構成が推奨されますが、カスタム証明書構成を使用する場合は、Scalar 製品の証明書要件を満たす必要があります。詳細については、[Scalar 製品の秘密鍵と証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx#certificate-requirements)を参照してください。 |
| 183 | + |
| 184 | +::: |
| 185 | + |
| 186 | +```yaml |
| 187 | +scalarDbAnalyticsServer: |
| 188 | + tls: |
| 189 | + enabled: true |
| 190 | + certManager: |
| 191 | + enabled: true |
| 192 | + issuerRef: |
| 193 | + name: <YOUR_TRUSTED_CA> |
| 194 | + dnsNames: |
| 195 | + - server.analytics.scalardb.example.com |
| 196 | +``` |
| 197 | + |
| 198 | +この場合、cert-manager は信頼できる発行者を使用して秘密鍵と証明書ファイルを発行します。秘密鍵と証明書ファイルを手動でマウントする必要はありません。 |
| 199 | + |
| 200 | +##### cert-manager で自己署名 CA を使用して秘密鍵と証明書ファイルを管理する |
| 201 | + |
| 202 | +次の構成を使用して、cert-manager で秘密鍵と自己署名証明書ファイルを管理できます。 |
| 203 | + |
| 204 | +:::note |
| 205 | + |
| 206 | +* cert-manager を使用する場合は、cert-manager をデプロイする必要があります。詳細については、cert-manager のドキュメント[インストール](https://cert-manager.io/docs/installation/)を参照してください。 |
| 207 | +* デフォルトでは、Scalar Helm Chart は Scalar 製品の証明書要件を満たす `Certificate` リソースを作成します。デフォルトの証明書構成が推奨されますが、カスタム証明書構成を使用する場合は、Scalar 製品の証明書要件を満たす必要があります。詳細については、[Scalar 製品の秘密鍵と証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx#certificate-requirements)を参照してください。 |
| 208 | + |
| 209 | +::: |
| 210 | + |
| 211 | +```yaml |
| 212 | +scalarDbAnalyticsServer: |
| 213 | + tls: |
| 214 | + enabled: true |
| 215 | + certManager: |
| 216 | + enabled: true |
| 217 | + selfSigned: |
| 218 | + enabled: true |
| 219 | + dnsNames: |
| 220 | + - server.analytics.scalardb.example.com |
| 221 | +``` |
| 222 | + |
| 223 | +この場合、Scalar Helm Charts と cert-manager が秘密鍵と自己署名証明書ファイルを発行します。秘密鍵と証明書ファイルを手動でマウントする必要はありません。 |
| 224 | + |
| 225 | +##### TLS通信のカスタム権限を設定する |
| 226 | + |
| 227 | +`scalarDbAnalyticsServer.tls.overrideAuthority` を使用して、TLS 通信のカスタム権限を設定できます。この値によって、実際に接続されているホストが変わることはありません。この値はテスト用ですが、DNS オーバーライドの代替としてテスト以外でも安全に使用できます。たとえば、`scalarDbAnalyticsServer.tls.certChainSecret` を使用して設定した証明書チェーンファイルで提示されるホスト名を指定できます。このチャートでは、ヘルスチェックリクエスト (`startupProbe` と `livenessProbe`) にこの値を使用しています。 |
| 228 | + |
| 229 | +```yaml |
| 230 | +scalarDbAnalyticsServer: |
| 231 | + tls: |
| 232 | + enabled: true |
| 233 | + overrideAuthority: "server.analytics.scalardb.example.com" |
| 234 | +``` |
| 235 | + |
| 236 | +### アフィニティ構成 (環境に応じてオプション) |
| 237 | + |
| 238 | +Kubernetes でアフィニティとアンチアフィニティを使用して Pod のデプロイメントを制御するには、`scalarDbAnalyticsServer.affinity` を使用できます。 |
| 239 | + |
| 240 | +Kubernetes のアフィニティとアンチアフィニティと同じ構文を使用して、アフィニティとアンチアフィニティを構成できます。Kubernetes でのアフィニティの構成の詳細については、[Assigning Pods to Nodes](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) を参照してください。 |
| 241 | + |
| 242 | +```yaml |
| 243 | +scalarDbAnalyticsServer: |
| 244 | + affinity: |
| 245 | + podAntiAffinity: |
| 246 | + preferredDuringSchedulingIgnoredDuringExecution: |
| 247 | + - podAffinityTerm: |
| 248 | + labelSelector: |
| 249 | + matchExpressions: |
| 250 | + - key: app.kubernetes.io/name |
| 251 | + operator: In |
| 252 | + values: |
| 253 | + - scalardb-analytics-server |
| 254 | + - key: app.kubernetes.io/app |
| 255 | + operator: In |
| 256 | + values: |
| 257 | + - scalardb-analytics-server |
| 258 | + topologyKey: kubernetes.io/hostname |
| 259 | + weight: 50 |
| 260 | +``` |
| 261 | + |
| 262 | +### 汚染と許容の構成 (環境に応じてオプション) |
| 263 | + |
| 264 | +Kubernetes のテイントと許容を使用して Pod のデプロイメントを制御したい場合は、`scalarDbAnalyticsServer.tolerations` を使用できます。 |
| 265 | + |
| 266 | +Kubernetes の許容と同じ構文を使用して、テイントと許容を構成できます。Kubernetes での許容設定の詳細については、Kubernetes の公式ドキュメント [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) を参照してください。 |
| 267 | + |
| 268 | +```yaml |
| 269 | +scalarDbAnalyticsServer: |
| 270 | + tolerations: |
| 271 | + - effect: NoSchedule |
| 272 | + key: scalar-labs.com/dedicated-node |
| 273 | + operator: Equal |
| 274 | + value: scalardb-analytics-server |
| 275 | +``` |
0 commit comments