Swap the OpenSandbox cloud-sandbox integration for Daytona: - config: drop opensandbox_server_url; add daytona_api_url + daytona_api_key_secret (KV secret NAME, value never in config/ConfigMap) + daytona_mcp_image. - cloud_init: when daytona enabled, add a daytona-mcp sidecar (daytona CLI wrapped by mcp-proxy as Streamable HTTP :8090) to each tenant compose, resolve DAYTONA_API_KEY from Key Vault on-VM into .env, and register it as a swarm-scope MCP server + install for lead+workers. Remove all opensandbox code (launcher monkey-patch, register block, compose service, urlparse). - k8s/configmap: drop opensandbox, add DAYTONA_API_URL + DAYTONA_API_KEY_SECRET. - daytona-mcp/Dockerfile: sidecar image (daytona CLI + mcp-proxy@6.5.2). - tests: daytona sidecar/registration/gating coverage. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
41 lines
1.9 KiB
YAML
41 lines
1.9 KiB
YAML
# Non-secret config. The service token lives in the swarm-controller-secrets
|
|
# Secret (create out-of-band; never commit it).
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: swarm-controller-config
|
|
namespace: swarm-controller
|
|
data:
|
|
AZURE_SUBSCRIPTION_ID: "9f25d157-56eb-449f-9e67-c657c04b8b79"
|
|
AZURE_LOCATION: "southeastasia"
|
|
VM_RESOURCE_GROUP: "heicode-services-test"
|
|
CONTROLLER_UAMI_CLIENT_ID: "b9fa1c07-9364-4caa-96e5-cc7e81f64713"
|
|
CONTROLLER_UAMI_RESOURCE_ID: "/subscriptions/9f25d157-56eb-449f-9e67-c657c04b8b79/resourcegroups/heicode-services-test/providers/Microsoft.ManagedIdentity/userAssignedIdentities/swarm-controller-id"
|
|
COSMOS_ENDPOINT: "https://heicode.documents.azure.com:443/"
|
|
COSMOS_DATABASE: "swarm-controller"
|
|
VM_VNET_NAME: "swarm-vnet"
|
|
VM_VNET_RESOURCE_GROUP: "heicode-services-test"
|
|
VM_SUBNET_NAME: "swarm-vms"
|
|
VM_NSG_NAME: "swarm-vms-nsg"
|
|
VM_SIZE_DEFAULT: "Standard_D4s_v5"
|
|
VM_SIZE_PAYGO: "Standard_D4s_v5"
|
|
VM_ADMIN_USERNAME: "heicode"
|
|
SWARM_API_IMAGE: "ghcr.io/desplega-ai/agent-swarm:latest"
|
|
SWARM_WORKER_IMAGE: "ghcr.io/desplega-ai/agent-swarm-worker:latest"
|
|
SWARM_API_PORT: "3013"
|
|
# Model-call gateway is hardcoded in code (cloud_init.MODEL_GATEWAY_BASE_URL),
|
|
# not configurable here.
|
|
LITESTREAM_STORAGE_ACCOUNT: "heicodetest"
|
|
LITESTREAM_CONTAINER: "swarm-litestream"
|
|
LITESTREAM_STORAGE_KEY_SECRET: "swarm-litestream-storage-key"
|
|
LITESTREAM_KEYVAULT_URL: "https://heicode-vault-test.vault.azure.net/"
|
|
IDLE_TIMEOUT_SECONDS: "900"
|
|
REAPER_INTERVAL_SECONDS: "300"
|
|
REAPER_ENABLED: "true"
|
|
LOG_LEVEL: "INFO"
|
|
# Daytona cloud-sandbox MCP. Both set → a daytona-mcp sidecar is added to each
|
|
# tenant swarm and registered as a swarm-scope MCP server. The API key value is
|
|
# NOT here — DAYTONA_API_KEY_SECRET names a Key Vault secret resolved on-VM.
|
|
DAYTONA_API_URL: "https://app.daytona.io/api"
|
|
DAYTONA_API_KEY_SECRET: "swarm-daytona-key"
|