> ## 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 データベースを使用するには、以下の手順を実行します。

<Tabs>
  <Tab title="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 リファレンス](/docs/ja/sambastack/resources/sambastack-yaml) をご覧ください。
    </Note>

    ### ステップ 3: 設定の適用

    Helm デプロイメントを更新します。

    #### オンプレミス

    ```bash theme={}
    helm upgrade sambastack \
      -f sambastack.yaml \
      --namespace sambastack \
      oci://<REGISTRY_URL>/sambastack/sambastack
    ```

    #### エアギャップ

    OCI レジストリパスの代わりに、ローカルにある Helm チャートのコピーを使用します。

    ```shellscript theme={}
    helm upgrade sambastack \
      -f sambastack.yaml \
      --namespace sambastack \
      sambastack-<VERSION>.tgz
    ```

    <Info>
      `sambastack-<VERSION>.tgz` は、アップグレードに使用する Helm チャートのローカルコピーです。さらにサポートが必要な場合は、SambaNova のサポート窓口までお問い合わせください。
    </Info>

    <Note>
      SambaNova は、引き渡し時に完全なレジストリ URL とバージョン番号を提供します。アクセス用の認証情報については、SambaNova の担当者にお問い合わせください。
    </Note>

    <Warning>
      外部の PostgreSQL データベースに Kubernetes クラスターからアクセスできること、およびネットワークポリシーがその接続を許可していることを確認してください。
    </Warning>
  </Tab>

  <Tab title="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 エンコードされていることを確認してください。
    </Note>

    ### 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 リファレンス](/docs/ja/sambastack/resources/sambastack-yaml) をご覧ください。
    </Note>

    ### 4. 更新した設定の適用

    変更を適用します。

    ```bash theme={}
    kubectl apply -f sambastack.yaml
    ```

    これらの手順を完了すると、デプロイメントは設定した外部 PostgreSQL データベースに接続するようになります。
  </Tab>
</Tabs>
