> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sambanova.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# カスタムデータベース

デフォルトでは、SambaNova はクラスター内に PostgreSQL インスタンスをプロビジョニングします。クラスター内のデプロイメントの代わりに外部の PostgreSQL データベースを使用するには、以下の手順を実行します。

> [tab] SambaStack オンプレミス / エアギャップ
>
> ### ステップ 1: Secret の作成
>
> #### オプション A: base64 エンコードされた値を使用
>
> まず、データベースの認証情報をエンコードします。
>
> ```bash theme={}
> echo -n "<db-host>" | base64
> echo -n "<db-name>" | base64
> echo -n "<db-user>" | base64
> echo -n "<db-password>" | base64
> ```
>
> base64 エンコードされた値を使用して、Kubernetes シークレットを作成します。
>
> ```yaml theme={}
> apiVersion: v1
> kind: Secret
> metadata:
>   name: pg-credentials
>   namespace: sambastack
> type: Opaque
> data:
>   DB_HOST: <Base64 encoded DB_HOST>
>   DB_DATABASE: <Base64 encoded DB_DATABASE>
>   DB_USER: <Base64 encoded DB_USER>
>   DB_PASSWD: <Base64 encoded DB_PASSWD>
> ```
>
> シークレットを適用します。
>
> ```bash theme={}
> kubectl apply -f pg-credentials.yaml
> ```
>
> #### オプション B: kubectl でリテラル値を使用
>
> 手動でエンコードする代わりに、リテラル値を使用してシークレットを作成することもできます。
>
> ```bash theme={}
> kubectl create secret generic pg-credentials \
>   --from-literal=DB_HOST=<host> \
>   --from-literal=DB_DATABASE=<database> \
>   --from-literal=DB_USER=<user> \
>   --from-literal=DB_PASSWD=<password> \
>   --namespace sambastack
> ```
>
> ### ステップ 2: sambastack.yaml の更新
>
> 外部データベースを使用するように `sambastack.yaml` を設定します。
>
> ```yaml theme={}
> auth-and-billing:
>   pgSecretName: pg-credentials
>
> cloudnative-pg:
>   enabled: false
> ```
>
> * `auth-and-billing.pgSecretName`: データベースの認証情報を含む Kubernetes シークレットを参照します
>
> * `cloudnative-pg.enabled: false`: クラスター内の PostgreSQL デプロイメントを無効化します
>
> > [!NOTE]
> >
> > 完全な例については、[SambaStack.yaml リファレンス](https://docs.sambanova.ai/docs/ja/v0.5.17/sambastack/resources/sambastack-yaml.md) をご覧ください。
>
> ### ステップ 3: 設定の適用
>
> Helm デプロイメントを更新します。
>
> ```bash theme={}
> helm upgrade sambastack \
>   -f sambastack.yaml \
>   --namespace sambastack \
>   oci://<REGISTRY_URL>/sambastack/sambastack
> ```
>
> > [!NOTE]
> >
> > SambaNova は、引き渡し時に完全なレジストリ URL とバージョン番号を提供します。アクセス用の認証情報については、SambaNova の担当者にお問い合わせください。
>
> > [!WARNING]
> >
> > 外部の PostgreSQL データベースに Kubernetes クラスターからアクセスできること、およびネットワークポリシーがその接続を許可していることを確認してください。

> [tab] SambaStack Hosted
>
> ### 1. 外部データベースのプロビジョニング
>
> 外部の PostgreSQL インスタンスを構築し、以下の認証情報を取得します。
>
> * `DB_HOST`
> * `DB_DATABASE`
> * `DB_USER`
> * `DB_PASSWD`
>
> ### 2. PostgreSQL 認証情報用の Kubernetes Secret の作成
>
> データベースの認証情報を使用して、`pg-credentials` という名前のシークレットを作成します。
>
> ```bash theme={}
> cat <<EOPGSECRET | kubectl apply -f -
> apiVersion: v1
> kind: Secret
> metadata:
>   name: pg-credentials
>   namespace: default
> type: Opaque
> data:
>   DB_HOST: <Base64 encoded DB_HOST>
>   DB_DATABASE: <Base64 encoded DB_DATABASE>
>   DB_USER: <Base64 encoded DB_USER>
>   DB_PASSWD: <Base64 encoded DB_PASSWD>
> EOPGSECRET
> ```
>
> > [!NOTE]
> >
> > すべての認証情報の値が base64 エンコードされていることを確認してください。
>
> ### 3. sambastack.yaml の更新
>
> `sambastack.yaml` (`data → sambastack.yaml`) を編集し、外部 PostgreSQL のシークレットを参照するように設定し、クラスター内データベースを無効化します。
>
> ```yaml theme={}
> data:
>   sambastack.yaml: |
>     # Auth and Billing Configuration
>     auth-and-billing:
>       pgSecretName: pg-credentials # Kubernetes secret with PostgreSQL credentials
>     # Database Configuration
>     cloudnative-pg:
>       enabled: false # Disable in-cluster PostgreSQL
> ```
>
> > [!NOTE]
> >
> > 完全な例については、[SambaStack.yaml リファレンス](https://docs.sambanova.ai/docs/ja/v0.5.17/sambastack/resources/sambastack-yaml.md) をご覧ください。
>
> ### 4. 更新した設定の適用
>
> 変更を適用します。
>
> ```bash theme={}
> kubectl apply -f sambastack.yaml
> ```
>
> これらの手順を完了すると、デプロイメントは設定した外部 PostgreSQL データベースに接続するようになります。
