This is an automated email from the ASF dual-hosted git repository. zhongxjian pushed a commit to branch release-0.2.0 in repository https://gitbox.apache.org/repos/asf/dubbo-kubernetes.git
commit b584a2e5a9ea78b68793cda7418f36ddd4aaa700 Author: mfordjody <[email protected]> AuthorDate: Mon Jun 2 10:25:08 2025 +0800 Initial comet control plane --- comet/galaxy/comet-agent/app/cmd.go | 85 +++++++++++++++++++++++++++++++++ comet/galaxy/comet-agent/main.go | 13 +++++ comet/galaxy/comet-discovery/app/cmd.go | 11 +++++ comet/galaxy/comet-discovery/main.go | 13 +++++ comet/pkg/cmd/cmd.go | 10 ++++ go.mod | 2 +- 6 files changed, 133 insertions(+), 1 deletion(-) diff --git a/comet/galaxy/comet-agent/app/cmd.go b/comet/galaxy/comet-agent/app/cmd.go new file mode 100644 index 00000000..95ddaf85 --- /dev/null +++ b/comet/galaxy/comet-agent/app/cmd.go @@ -0,0 +1,85 @@ +package app + +import ( + "context" + "fmt" + "github.com/apache/dubbo-kubernetes/comet/pkg/cmd" + "github.com/spf13/cobra" +) + +func NewRootCommand() *cobra.Command { + rootCmd := &cobra.Command{ + Use: "comet-agent", + SilenceUsage: true, + } + cmd.AddFlags(rootCmd) + return rootCmd +} + +func newProxyCommand() *cobra.Command { + return &cobra.Command{ + Use: "proxy", + Short: "XDS proxy agent", + FParseErrWhitelist: cobra.FParseErrWhitelist{ + UnknownFlags: true, + }, + RunE: func(c *cobra.Command, args []string) error { + err := initProxy(args) + if err != nil { + return err + } + proxyConfig, err := config.ConstructProxyConfig(proxyArgs.MeshConfigFile, proxyArgs.ServiceCluster, options.ProxyConfigEnv, proxyArgs.Concurrency) + if err != nil { + return fmt.Errorf("failed to get proxy config: %v", err) + } + if out, err := protomarshal.ToYAML(proxyConfig); err != nil { + log.Infof("Failed to serialize to YAML: %v", err) + } else { + log.Infof("Effective config: %s", out) + } + + secOpts, err := options.NewSecurityOptions(proxyConfig, proxyArgs.StsPort, proxyArgs.TokenManagerPlugin) + if err != nil { + return err + } + + // If we are using a custom template file (for control plane proxy, for example), configure this. + if proxyArgs.TemplateFile != "" && proxyConfig.CustomConfigFile == "" { + proxyConfig.ProxyBootstrapTemplatePath = proxyArgs.TemplateFile + } + + envoyOptions := envoy.ProxyConfig{ + LogLevel: proxyArgs.ProxyLogLevel, + ComponentLogLevel: proxyArgs.ProxyComponentLogLevel, + LogAsJSON: loggingOptions.JSONEncoding, + NodeIPs: proxyArgs.IPAddresses, + Sidecar: proxyArgs.Type == model.SidecarProxy, + OutlierLogPath: proxyArgs.OutlierLogPath, + } + agentOptions := options.NewAgentOptions(&proxyArgs, proxyConfig, sds) + agent := istioagent.NewAgent(proxyConfig, agentOptions, secOpts, envoyOptions) + ctx, cancel := context.WithCancelCause(context.Background()) + defer cancel(errors.New("application shutdown")) + defer agent.Close() + + // If a status port was provided, start handling status probes. + if proxyConfig.StatusPort > 0 { + if err := initStatusServer(ctx, proxyConfig, + agentOptions.EnvoyPrometheusPort, proxyArgs.EnableProfiling, agent, cancel); err != nil { + return err + } + } + + // On SIGINT or SIGTERM, cancel the context, triggering a graceful shutdown + go cmd.WaitSignalFunc(cancel) + + // Start in process SDS, dns server, xds proxy, and Envoy. + wait, err := agent.Run(ctx) + if err != nil { + return err + } + wait() + return nil + }, + } +} diff --git a/comet/galaxy/comet-agent/main.go b/comet/galaxy/comet-agent/main.go new file mode 100644 index 00000000..fbbb9db8 --- /dev/null +++ b/comet/galaxy/comet-agent/main.go @@ -0,0 +1,13 @@ +package main + +import ( + "github.com/apache/dubbo-kubernetes/comet/galaxy/comet-agent/app" + "os" +) + +func main() { + rootCmd := app.NewRootCommand() + if err := rootCmd.Execute(); err != nil { + os.Exit(-1) + } +} diff --git a/comet/galaxy/comet-discovery/app/cmd.go b/comet/galaxy/comet-discovery/app/cmd.go new file mode 100644 index 00000000..cd74db7c --- /dev/null +++ b/comet/galaxy/comet-discovery/app/cmd.go @@ -0,0 +1,11 @@ +package app + +import "github.com/spf13/cobra" + +func NewRootCommand() *cobra.Command { + rootCmd := &cobra.Command{ + Use: "pilot-discovery", + SilenceUsage: true, + } + return rootCmd +} diff --git a/comet/galaxy/comet-discovery/main.go b/comet/galaxy/comet-discovery/main.go new file mode 100644 index 00000000..7e4d4ad0 --- /dev/null +++ b/comet/galaxy/comet-discovery/main.go @@ -0,0 +1,13 @@ +package main + +import ( + "github.com/apache/dubbo-kubernetes/comet/galaxy/comet-discovery/app" + "os" +) + +func main() { + rootCmd := app.NewRootCommand() + if err := rootCmd.Execute(); err != nil { + os.Exit(-1) + } +} diff --git a/comet/pkg/cmd/cmd.go b/comet/pkg/cmd/cmd.go new file mode 100644 index 00000000..ab77cf8d --- /dev/null +++ b/comet/pkg/cmd/cmd.go @@ -0,0 +1,10 @@ +package cmd + +import ( + "flag" + "github.com/spf13/cobra" +) + +func AddFlags(rootCmd *cobra.Command) { + rootCmd.PersistentFlags().AddGoFlagSet(flag.CommandLine) +} diff --git a/go.mod b/go.mod index db79361f..f1ae260d 100644 --- a/go.mod +++ b/go.mod @@ -21,6 +21,7 @@ require ( dubbo.apache.org/dubbo-go/v3 v3.3.0 github.com/AlecAivazis/survey/v2 v2.3.7 github.com/Masterminds/semver/v3 v3.2.1 + github.com/Microsoft/go-winio v0.6.2 github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 github.com/bakito/go-log-logr-adapter v0.0.2 github.com/buildpacks/pack v0.30.0 @@ -121,7 +122,6 @@ require ( github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver v1.5.0 // indirect github.com/Masterminds/sprig/v3 v3.2.3 // indirect - github.com/Microsoft/go-winio v0.6.2 // indirect github.com/OneOfOne/xxhash v1.2.8 // indirect github.com/ProtonMail/go-crypto v1.1.3 // indirect github.com/RoaringBitmap/roaring v1.2.3 // indirect
