From da1b9d209b0ab96a97990ee57dba8232af401d69 Mon Sep 17 00:00:00 2001 From: Esonhugh Date: Wed, 1 Jan 2025 06:11:14 +0800 Subject: [PATCH] update: root op for service ports --- cmd/root.go | 12 ++++++++---- cmd/service/service.go | 11 ++++++++--- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/cmd/root.go b/cmd/root.go index ffdbf61..052f36a 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -17,7 +17,6 @@ var Opts = struct { PodCidr string DnsServer string - SvcDomains []string Zone string OutputFile string Verbose int @@ -45,16 +44,21 @@ func defaultPodCidr() string { return "10.0.0.1/16" } +func defaultCidr() string { + if host := os.Getenv("KUBERNETES_SERVICE_HOST"); host != "" { + return host + "/16" + } + return "10.96.0.1/16" +} + func init() { - RootCmd.PersistentFlags().StringVarP(&Opts.Cidr, "cidr", "c", os.Getenv("KUBERNETES_SERVICE_HOST")+"/16", "cidr like: 192.168.0.1/16") + RootCmd.PersistentFlags().StringVarP(&Opts.Cidr, "cidr", "c", defaultCidr(), "cidr like: 192.168.0.1/16") RootCmd.PersistentFlags().StringVarP(&Opts.PodCidr, "pod-cidr", "p", defaultPodCidr(), "pod cidr list, watch out for the network interface name, default is eth0") RootCmd.PersistentFlags().StringVarP(&Opts.DnsServer, "dns-server", "d", "", "dns server") RootCmd.PersistentFlags().IntVarP(&pkg.DnsTimeout, "dns-timeout", "i", 2, "dns timeout") - RootCmd.PersistentFlags().StringSliceVarP(&Opts.SvcDomains, "svc-domains", "s", []string{}, "service domains, like: kubernetes.default,etcd.default don't add zone like svc.cluster.local") - RootCmd.PersistentFlags().StringVarP(&Opts.Zone, "zone", "z", "cluster.local", "zone") RootCmd.PersistentFlags().StringVarP(&Opts.OutputFile, "output-file", "o", "", "output file") diff --git a/cmd/service/service.go b/cmd/service/service.go index 6688500..0650d21 100644 --- a/cmd/service/service.go +++ b/cmd/service/service.go @@ -11,7 +11,12 @@ import ( "github.com/spf13/cobra" ) +var Opts struct { + SvcDomains []string +} + func init() { + ServiceCmd.PersistentFlags().StringSliceVarP(&Opts.SvcDomains, "svc-domains", "s", []string{}, "service domains, like: kubernetes.default,etcd.default don't add zone like svc.cluster.local") command.RootCmd.AddCommand(ServiceCmd) } @@ -20,14 +25,14 @@ var ServiceCmd = &cobra.Command{ Aliases: []string{ "srv", }, - Short: "service is a tool to discover k8s services", + Short: "service is a tool to discover k8s services ports", Run: func(cmd *cobra.Command, args []string) { - if command.Opts.Zone == "" || command.Opts.SvcDomains == nil || len(command.Opts.SvcDomains) == 0 { + if command.Opts.Zone == "" || Opts.SvcDomains == nil || len(Opts.SvcDomains) == 0 { log.Warn("zone can't empty and svc-domains can't empty") return } var records define.Records - for _, domain := range command.Opts.SvcDomains { + for _, domain := range Opts.SvcDomains { records = append(records, define.Record{SvcDomain: fmt.Sprintf("%s.svc.%s", domain, command.Opts.Zone)}) } records = scanner.ScanSvcForPorts(records)