mcpField
M
managed-db-services

managed-db-services

github.com/digitalocean-labsデータ・データベース3880 回インストール4 日前に更新
リポジトリ

managed-db-services について

DigitalOcean App Platform のアプリ向けに、Managed Databases の設定を支援するスキルです。MySQL、MongoDB、Valkey、Kafka、OpenSearch のアプリ仕様、接続変数、信頼済みソースの制約、トラブルシューティングを扱います。

主な機能

  1. 015種類のマネージドデータベースの設定
  2. 02App Platform のデータベース仕様作成
  3. 03接続変数と認証情報の設定
  4. 04信頼済みソースと VPC の制約説明
  5. 05接続エラーのトラブルシューティング

活用シーン

  1. 01App Platform アプリ用 MySQL の設定
  2. 02MongoDB または Valkey のデプロイ
  3. 03Kafka または OpenSearch 接続の設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/digitalocean-labs/do-app-platform-skills --skill managed-db-services

インストール後、Claude Code で/managed-db-servicesを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
reference/
kafka.md
mongodb.md
mysql.md
opensearch.md
valkey.md

詳細

マネージドデータベースサービススキル

App Platform アプリケーション向けに、DigitalOcean Managed MySQL、MongoDB、Valkey(Redis)、Kafka、OpenSearch を設定します。

クイック判断

Which database engine?
├── PostgreSQL    → Use the postgres skill instead
├── MySQL         → See reference/mysql.md
├── MongoDB       → See reference/mongodb.md
├── Valkey/Redis  → See reference/valkey.md
├── Kafka         → See reference/kafka.md (⚠️ trusted sources limitations)
└── OpenSearch    → See reference/opensearch.md

ヒント:複雑な複数ステップのデプロイには、planner スキルを使用してください。すべてのスキルの概要については、ルートの SKILL.md を参照してください。


重要な制約

制約影響
開発用データベースPostgreSQL のみ — MySQL/MongoDB/Kafka/OpenSearch には production: true が必要です
ビルド時の DB アクセス❌ 信頼済みソースはビルドフェーズをブロックします — マイグレーションには PRE_DEPLOY ジョブを使用してください
Kafka の信頼済みソースIP ベースのみ(ip_addr:)。アプリベース(app:)はサポートされていません
OpenSearch のロギング❌ 信頼済みソースが有効な場合はサポートされていません
MongoDB の db_nameアプリ仕様では大文字を使用できません

信頼済みソースのクイックリファレンス

ネットワークモードルールタイプサポート対象のエンジン
パブリックapp:$APP_IDMySQL、MongoDB、Valkey、OpenSearch
パブリックapp:$APP_ID❌ Kafka(サポートされていません)
VPCip_addr:<vpc-cidr>すべてのエンジン
VPCapp:$APP_ID❌ なし(アプリルールはパブリック IP のみを許可リストに登録します)

VPC デプロイ:VPC CIDR(ip_addr:10.126.0.0/20)を使用してください。アプリごとの IP を設定するより簡単です。

詳細な設定については、networking スキル - Trusted Sources を参照してください。


バインド可能な変数(すべてのエンジン)

databases:
  - name: db                      # Component name (used in ${db.VAR_NAME})
    engine: <ENGINE>              # MYSQL, MONGODB, REDIS, KAFKA, OPENSEARCH
    production: true              # REQUIRED for bindable variables
    cluster_name: my-cluster      # Must match existing cluster name
    db_name: myappdb              # Database within cluster (where applicable)
    db_user: myappuser            # User created via doctl
変数説明
${db.DATABASE_URL}完全な接続文字列(パブリックホスト名のみ!)
${db.HOSTNAME}データベースのホスト(パブリックホスト名のみ!)
${db.PORT}データベースのポート
${db.USERNAME}データベースユーザー
${db.PASSWORD}データベースのパスワード(自動入力)
${db.DATABASE}データベース名
${db.CA_CERT}TLS 用 CA 証明書

VPC に関する注意:VPC を有効にしても、バインド可能な変数から返されるのはパブリックホスト名です。プライベートエンドポイントを使用するには、ハードコードしたプライベートホスト名を指定する別の *_PRIVATE_* 環境変数を追加してください。


エンジンのクイックリファレンス

エンジンアプリ仕様ポートプロトコル主な注意事項
MySQLMYSQL25060mysql://...?ssl-mode=REQUIRED完全ガイド
MongoDBMONGODB27017mongodb+srv://...?tls=true&authSource=admin完全ガイド
ValkeyREDIS25061rediss://(SSL 使用)完全ガイド
KafkaKAFKA9093SASL/SCRAM-SHA-256完全ガイド
OpenSearchOPENSEARCH25060https://(ベーシック認証使用)完全ガイド

クイックスタート:MySQL

# 1. Create cluster + user
doctl databases create my-mysql --engine mysql --region nyc3 --size db-s-1vcpu-2gb --version 8
CLUSTER_ID=$(doctl databases list --format ID,Name --no-header | grep my-mysql | awk '{print $1}')
doctl databases db create $CLUSTER_ID myappdb
doctl databases user create $CLUSTER_ID myappuser

# 2. Add to trusted sources
APP_ID=$(doctl apps list --format ID,Spec.Name --no-header | grep my-app | awk '{print $1}')
doctl databases firewalls append $CLUSTER_ID --rule app:$APP_ID

# 3. Reference in app spec
databases:
  - name: db
    engine: MYSQL
    production: true
    cluster_name: my-mysql
    db_name: myappdb
    db_user: myappuser

services:
  - name: api
    envs:
      - key: DATABASE_URL
        scope: RUN_TIME
        value: ${db.DATABASE_URL}

完全ガイド:mysql.md を参照してください。


クイックスタート:MongoDB

doctl databases create my-mongo --engine mongodb --region nyc3 --size db-s-1vcpu-2gb --version 7
CLUSTER_ID=$(doctl databases list --format ID,Name --no-header | grep my-mongo | awk '{print $1}')
doctl databases user create $CLUSTER_ID myappuser
doctl databases firewalls append $CLUSTER_ID --rule app:$APP_ID
databases:
  - name: db
    engine: MONGODB
    production: true
    cluster_name: my-mongo
    db_user: myappuser

services:
  - name: api
    envs:
      - key: MONGODB_URI
        scope: RUN_TIME
        value: ${db.DATABASE_URL}

完全ガイド:mongodb.md を参照してください。


クイックスタート:Valkey

doctl databases create my-valkey --engine redis --region nyc3 --size db-s-1vcpu-2gb --version 7
CLUSTER_ID=$(doctl databases list --format ID,Name --no-header | grep my-valkey | awk '{print $1}')
doctl databases firewalls append $CLUSTER_ID --rule app:$APP_ID
databases:
  - name: cache
    engine: REDIS
    production: true
    cluster_name: my-valkey

services:
  - name: api
    envs:
      - key: REDIS_URL
        scope: RUN_TIME
        value: ${cache.DATABASE_URL}

完全ガイド:valkey.md を参照してください。


クイックスタート:Kafka

警告:Kafka は app:$APP_ID の信頼済みソースルールをサポートしていません。VPC と IP ベースのルールを使用するか、信頼済みソースを無効にしてください。

doctl databases create my-kafka --engine kafka --region nyc3 --size db-s-2vcpu-4gb --version 3.7
CLUSTER_ID=$(doctl databases list --format ID,Name --no-header | grep my-kafka | awk '{print $1}')
doctl databases topics create $CLUSTER_ID my-topic --partition-count 3 --replication-factor 2
databases:
  - name: kafka
    engine: KAFKA
    production: true
    cluster_name: my-kafka

services:
  - name: api
    envs:
      - key: KAFKA_BROKER
        scope: RUN_TIME
        value: ${kafka.HOSTNAME}:${kafka.PORT}
      - key: KAFKA_USERNAME
        scope: RUN_TIME
        value: ${kafka.USERNAME}
      - key: KAFKA_PASSWORD
        scope: RUN_TIME
        value: ${kafka.PASSWORD}
      - key: KAFKA_CA_CERT
        scope: RUN_TIME
        value: ${kafka.CA_CERT}

完全ガイド:kafka.md を参照してください。


クイックスタート:OpenSearch

警告:OpenSearch へのロギングには、信頼済みソースを無効にする必要があります。

doctl databases create my-opensearch --engine opensearch --region nyc3 --size db-s-2vcpu-4gb --version 2
CLUSTER_ID=$(doctl databases list --format ID,Name --no-header | grep my-opensearch | awk '{print $1}')
doctl databases user create $CLUSTER_ID myappuser
doctl databases firewalls append $CLUSTER_ID --rule app:$APP_ID
databases:
  - name: search
    engine: OPENSEARCH
    production: true
    cluster_name: my-opensearch
    db_user: myappuser

services:
  - name: api
    envs:
      - key: OPENSEARCH_URL
        scope: RUN_TIME
        value: https://${search.USERNAME}:${search.PASSWORD}@${search.HOSTNAME}:${search.PORT}

完全ガイド:opensearch.md を参照してください。


よく使う doctl コマンド

# List all database clusters
doctl databases list

# Get cluster details
doctl databases get <cluster-id>

# Create user (DO manages password)
doctl databases user create <cluster-id> <username>

# List users
doctl databases user list <cluster-id>

# Create database within cluster
doctl databases db create <cluster-id> <db-name>

# Get connection details
doctl databases connection <cluster-id>

# Trusted sources (firewall)
doctl databases firewalls append <cluster-id> --rule app:<app-id>
doctl databases firewalls list <cluster-id>

クイックトラブルシューティング

エラー原因対処方法
"Connection refused"アプリが信頼済みソースに含まれていませんdoctl databases firewalls append <cluster-id> --rule app:<app-id>
"Access denied"ユーザー権限が設定されていませんSQL で権限を付与するか、ユーザーを再作成します
バインド可能な変数が空production: true がありませんデータベースブロックに production: true を追加します
SSL が必要接続文字列に SSL がありません?ssl-mode=REQUIRED(MySQL)、?tls=true(MongoDB)を追加するか、rediss://(Valkey)を使用します
Kafka 接続に失敗app: ルールを使用していますKafka は ip_addr: ルールのみをサポートしています。VPC を使用するか、TS を無効にします

参考ファイル

  • mysql.md — コネクションプール、ユーザー権限、パスワード暗号化
  • mongodb.md — ユーザーロール、authSource の設定
  • valkey.md — エビクションポリシー、SSL プロトコル
  • kafka.md — SASL 認証、SSL 証明書の処理、Schema Registry
  • opensearch.md — ACL、ログの制限事項

代わりに Postgres スキルを使用する場合

次の場合は、postgres スキルを使用してください。

  • スキーマの分離(マルチテナント)
  • 複雑な権限管理
  • 複数のアプリによる単一クラスターの共有
  • コネクションプールの設定

このスキルは、MySQL、MongoDB、Valkey、Kafka、OpenSearch を使用する、シンプルな単一データベース構成向けです。


他のスキルとの連携

スキル連携内容
designerアプリ仕様に databases: ブロックを生成します
deployment追加のシークレットは不要です。認証情報はバインド可能な変数で処理されます
networkingVPC と信頼済みソースの設定
troubleshooting接続テスト用のデバッグコンテナ

ドキュメントへのリンク

コメント