Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

HTTP サーバー

kvtool store serve コマンドで、設定ファイルで定義したストアを REST API として公開できます。

起動方法

# デフォルト設定(ポート 8080)
kvtool store serve

# ポート指定
kvtool store serve --port 3000

# グローバル設定を使用
kvtool store serve --global

エンドポイント

KV エンドポイント(JSON)

GET /v1/namespaces/{namespace}/kv/{store}/{path}

ファイルを JSON としてパースして返します。

# production 環境の vault ストアから app/settings を取得
curl http://localhost:8080/v1/namespaces/production/kv/vault/app/settings

# default 環境の local ストアから config.json を取得
curl http://localhost:8080/v1/namespaces/default/kv/local/config.json

Storage エンドポイント(Raw)

GET /v1/namespaces/{namespace}/storage/{store}/{path}

ファイルをそのまま(application/octet-stream)返します。

# production 環境の s3 ストアから data.bin を取得
curl http://localhost:8080/v1/namespaces/production/storage/s3/data.bin

ヘルスチェック

GET /health
curl http://localhost:8080/health
# => ok

設定例

version: 1.0
namespaces:
  production:
    vault:
      driver: vault
      args:
        address: https://vault.example.com
        token_env: VAULT_TOKEN
        mount: secret
        root: myapp
    s3:
      driver: s3
      args:
        bucket: prod-configs
        region: ap-northeast-1

  development:
    local:
      driver: local
      args:
        root: ./configs/dev

この設定で以下のエンドポイントが利用可能になります:

  • /v1/namespaces/production/kv/vault/{path}
  • /v1/namespaces/production/kv/s3/{path}
  • /v1/namespaces/development/kv/local/{path}

エラーレスポンス

ステータス説明
404namespace、store、またはファイルが存在しない
405GET 以外のメソッド
500サーバー内部エラー

CLI オプション

オプション短縮デフォルト説明
--config-c.kvtool.yml設定ファイルパス
--global-gfalseグローバル設定を使用
--port-p8080リッスンポート