Dependency resources
管理依赖资源、绑定、secret 轮换和备份恢复。
Dependency resource 是 Appaloft 管理的数据库或服务依赖记录。Phase 7 支持 provider-neutral Postgres、Redis、MySQL、ClickHouse、S3/MinIO object storage 和 OpenSearch 记录、 Appaloft-managed realization、外部依赖导入、安全 read model、删除安全检查,以及备份恢复。
appaloft dependency provision --kind postgres --project prj_prod --environment env_prod --name app-db
appaloft dependency import --kind redis --project prj_prod --environment env_prod --name cache --connection-url redis://cache.internal:6379/0List/show 输出必须屏蔽连接 secret、provider token、密码和原始连接字符串。
Resource dependency binding 让后续 deployment snapshot 引用一个依赖资源。绑定只保存 provider-neutral
安全元数据和 secret reference,不会把数据库 URL 或密码写进 Resource,也不需要把数据库 URL 传给
deployments.create。
appaloft resource dependency bind res_web --dependency dep_db --target DATABASE_URLUnbind 只移除绑定关系,不删除数据库、不重启运行时、不改写历史 deployment snapshot。
当 Resource 有 active ready 的 dependency binding 时,Appaloft 会在 deployment plan 和 deployment
detail 输出中包含安全的 runtime injection readiness。依赖处于 ready 状态、binding 目标是
DATABASE_URL 或 REDIS_URL 这样的运行时环境变量,并且所选 runtime target 支持依赖 secret
delivery 时,binding 才能被交付。
appaloft deployments plan --project prj_prod --environment env_prod --resource res_web --server srv_prod
appaloft deployments show dep_123deployments.create 不接收依赖连接字符串。Appaloft 会在 deployment snapshot 中捕获当前安全的
binding reference,并要求 runtime target 向 workload 提供配置好的环境变量。后续 binding secret
轮换不会改写历史 deployment snapshot 中已捕获的 reference。
Plan 和 show 输出会把 dependency runtime injection 标记为 ready、blocked 或 not-applicable。
blocked 表示至少一个 active binding 无法被所选 runtime target 安全交付。常见安全原因包括依赖还未
ready、缺少安全 secret reference、已存储的依赖 secret 无法解析、不支持的 dependency kind、不支持的
scope 或 injection mode、重复的 target name、已有环境变量冲突,或 runtime target 无法交付依赖
secret。
当 deployments.create 看到同样的 blocked 状态时,会在接受部署前以
dependency_runtime_injection_blocked 拒绝请求。不会创建 deployment attempt,响应也不会暴露原始连接
字符串、密码或 provider payload。修复 dependency resource、binding、target name 或 runtime target
后,再重新运行 plan。
resources.rotate-dependency-binding-secret 只替换绑定上的安全 secret reference 或版本。它影响未来
deployment snapshot,不会修改 provider-native 数据库密码、运行中的容器环境变量或历史部署。
轮换后应创建新的部署,让 workload 读取新的快照引用。
Backup 会创建 safe restore point;restore 会在明确确认数据覆盖和 runtime 不会自动重启后,对同一个 dependency resource 执行 in-place restore。
appaloft dependency backup create dep_db
appaloft dependency backup list dep_db
appaloft dependency backup restore bkp_123对于带有 Appaloft-owned connection reference 的 imported dependency,shell provider 会执行 native Postgres dump/restore 或 Redis logical backup/restore。Provider-owned 或无法解析的 reference 仍会生成 安全的 metadata-only restore point,直到对应 provider 提供自己的 backup substrate。原始连接值不会出现在 backup artifact、read model、event 或 error 里。
恢复不会修改 ResourceBindings、deployment rollback/redeploy 状态、运行时进程或历史 deployment snapshot。 如果有保留中的 backup 或 in-flight restore,dependency delete 必须被阻塞。
Scheduled backup policy 是显式启用的策略记录。除非 self-hosted shell 启用了 scheduled dependency
backup runner,否则策略不会执行。到期策略会调度和手动备份相同的
dependency-resources.create-backup 操作,并记录安全的 process attempt 元数据供 operator 审查。
appaloft dependency backup policy configure dep_db --retention-days 7 --interval-hours 24
appaloft dependency backup policy list dep_db
appaloft dependency backup policy show dbp_123删除 dependency resource 前,Appaloft 会检查活动 binding、backup retention、deployment snapshot 引用和 provider-managed 安全状态。Imported external delete 只删除 Appaloft 控制面记录,不删除外部数据库。
被阻塞时,先查看 dependency detail、binding list 和 backup list,再显式清理对应引用。