fix(controller): 隔离无关媒体凭据校验
容量控制器只负责读取容量状态和调整 Worker 副本,按最小权限不注入 OSS 或供应商凭据;全局媒体配置校验却导致控制器在生产启动时 CrashLoop。 容量控制器角色现在跳过不会使用的直传 OSS 校验,API/Worker 仍保持原校验;发布先以零副本应用目标状态,再用精确镜像和同构配置运行 Ready 预检,成功后才扩到双副本;同时补齐迁移 Job 的 restricted PodSecurity 配置。 验证:Go 全量测试、go vet、角色回归测试、bash -n、ShellCheck、人工发布测试、生产 server-side dry-run。
This commit is contained in:
@@ -333,3 +333,19 @@ func TestLoadAndValidateDirectMediaOSS(t *testing.T) {
|
||||
t.Fatalf("Validate() error = %v, want invalid object prefix", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCapacityControllerDoesNotRequireMediaOSSCredentials(t *testing.T) {
|
||||
cfg := Load()
|
||||
cfg.ProcessRole = "capacity-controller"
|
||||
cfg.MediaOSSDirectEnabled = true
|
||||
cfg.MediaOSSAccessKeyID = ""
|
||||
cfg.MediaOSSAccessKeySecret = ""
|
||||
if err := cfg.Validate(); err != nil {
|
||||
t.Fatalf("capacity controller rejected unused media OSS credentials: %v", err)
|
||||
}
|
||||
|
||||
cfg.ProcessRole = "worker"
|
||||
if err := cfg.Validate(); err == nil || !strings.Contains(err.Error(), "ACCESS_KEY") {
|
||||
t.Fatalf("worker Validate() error = %v, want missing direct OSS credentials", err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user