Files
panshuxiao 33a4a54e85 !68 添加了devcontainer在k8s下的重启、暂停、webTerminal功能
* 修复k8s/devcontainer/suite_test
* 改进了DevStar Controller Manager镜像相关代码
* 修改了Dockerfile.rootless以解决go版本问题
* 移动Dockerfile.cotroller-manager位置
* Merge remote-tracking branch 'origin/dev' into devcontainer-on-k8s
* Merge remote-tracking branch 'origin/add_k8s' into AppOnK8s
* Merge remote-tracking branch 'origin/add-dockerfile-method-and-start-s…
*  添加了k8s下的停止、重启devcontainer和webterminal
* Merge branch 'add-dockerfile-method-and-start-stop-container' of https…
* 更新了容器镜像方式的构建、安装和使用方法,但是devcontainer功能还有问题
* fix run postCreateCommand bug
* sh文件方式管理启动脚本
* Merge branch 'add-dockerfile-method-and-start-stop-container' of https…
* add restart command and fix bug
* chore: 补充添加k8s controller的go.mod和go.sum文件
* Merge branch 'add-dockerfile-method-and-start-stop-container' of https…
* 为devstar添加k8s上的controller-manager
* add dockerfile method to create container and save container .restart …
2025-05-13 10:50:26 +00:00

71 lines
1.8 KiB
Go

package app
import (
"context"
"fmt"
"github.com/spf13/cobra"
"k8s.io/apimachinery/pkg/util/errors"
"k8s.io/apimachinery/pkg/util/runtime"
cliflag "k8s.io/component-base/cli/flag"
"k8s.io/component-base/term"
"k8s.io/klog/v2"
"sigs.k8s.io/controller-runtime/pkg/manager/signals"
"code.gitea.io/gitea/modules/k8s/cmd/controller-manager/app/options"
"code.gitea.io/gitea/modules/k8s/controller"
"code.gitea.io/gitea/modules/k8s/controller/devcontainer"
)
func init() {
// 在初始化时注册所有控制器
runtime.Must(controller.Register(&devcontainer.Controller{}))
}
// NewControllerManagerCommand 创建一个启动 controller manager 的命令
func NewControllerManagerCommand() *cobra.Command {
s := options.NewControllerManagerOptions()
cmd := &cobra.Command{
Use: "controller-manager",
Long: `DevStar controller manager is a daemon that embeds the control loops shipped with DevStar.`,
RunE: func(cmd *cobra.Command, args []string) error {
if errs := s.Validate(); len(errs) != 0 {
return errors.NewAggregate(errs)
}
return Run(signals.SetupSignalHandler(), s)
},
}
fs := cmd.Flags()
namedFlagSets := s.Flags()
for _, f := range namedFlagSets.FlagSets {
fs.AddFlagSet(f)
}
usageFmt := "Usage:\n %s\n"
cols, _, _ := term.TerminalSize(cmd.OutOrStdout())
cmd.SetUsageFunc(func(cmd *cobra.Command) error {
_, _ = fmt.Fprintf(cmd.OutOrStderr(), usageFmt, cmd.UseLine())
cliflag.PrintSections(cmd.OutOrStderr(), namedFlagSets, cols)
return nil
})
return cmd
}
// Run 启动控制器管理器
func Run(ctx context.Context, s *options.ControllerManagerOptions) error {
klog.InfoS("Starting DevStar controller manager")
cm, err := s.NewControllerManager()
if err != nil {
return err
}
// 启动控制器管理器
return cm.Start(ctx)
}