Files
ayatori/internal/bootstrap/run.go
T
panxiao81 35ada6d7eb
Verify / test (pull_request) Successful in 11m23s
Verify / lint (pull_request) Successful in 12m18s
Verify / database-integration (pull_request) Successful in 13m49s
feat: 接通 Database 凭据准备闭环
2026-09-27 18:35:13 +00:00

43 lines
1.1 KiB
Go

// Package bootstrap 负责 controller-manager 的参数解析、依赖装配与启动。
package bootstrap
import (
"context"
"flag"
"fmt"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/log/zap"
)
var setupLog = ctrl.Log.WithName("setup")
// Run 只编排启动顺序;命令行参数与信号处理在进程中初始化一次。
func Run() error {
var options options
options.bindFlags(flag.CommandLine)
flag.Parse()
ctrl.SetLogger(zap.New(zap.UseFlagOptions(&options.logging)))
manager, err := newManager(options)
if err != nil {
return err
}
baoClient, err := setupOpenBaoAuthentication(manager, options.openBao)
if err != nil {
return fmt.Errorf("set up OpenBao authentication: %w", err)
}
cleanup, err := setupDatabase(context.Background(), manager, options.database, baoClient)
if err != nil {
return err
}
// manager 的 worker 完全停止后才释放组件持有的资源。
defer cleanup()
setupLog.Info("Starting manager")
if err := manager.Start(ctrl.SetupSignalHandler()); err != nil {
return fmt.Errorf("run controller manager: %w", err)
}
return nil
}