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

**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/v2.1.1/sambastack/resources/sambastack-yaml.md) をご覧ください。

### ステップ 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
```

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

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

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

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

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

変更を適用します。

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

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