flags.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package flags
  2. import (
  3. "gopkg.in/alecthomas/kingpin.v2"
  4. "inet.af/netaddr"
  5. "k8s.io/klog/v2"
  6. "os"
  7. "strings"
  8. )
  9. var (
  10. ListenAddress = kingpin.Flag("listen", "Listen address - ip:port or :port").Default("0.0.0.0:80").String()
  11. CgroupRoot = kingpin.Flag("cgroupfs-root", "The mount point of the host cgroupfs root").Default("/sys/fs/cgroup").String()
  12. DisableLogParsing = kingpin.Flag("disable-log-parsing", "Disable container log parsing").Default("false").Bool()
  13. DisablePinger = kingpin.Flag("disable-pinger", "Don't ping upstreams").Default("false").Bool()
  14. DisableL7Tracing = kingpin.Flag("disable-l7-tracing", "Disable L7 tracing").Default("false").Bool()
  15. externalNetworksWhitelist = kingpin.Flag("track-public-network", "Allow track connections to the specified IP networks, all private networks are allowed by default (e.g., Y.Y.Y.Y/mask)").Strings()
  16. ExternalNetworksWhitelist []netaddr.IPPrefix
  17. Provider = kingpin.Flag("provider", "`provider` label for `node_cloud_info` metric").String()
  18. Region = kingpin.Flag("region", "`region` label for `node_cloud_info` metric").String()
  19. AvailabilityZone = kingpin.Flag("availability-zone", "`availability_zone` label for `node_cloud_info` metric").String()
  20. )
  21. func GetString(fl *string) string {
  22. if fl == nil {
  23. return ""
  24. }
  25. return *fl
  26. }
  27. func init() {
  28. if strings.HasSuffix(os.Args[0], ".test") {
  29. return
  30. }
  31. kingpin.HelpFlag.Short('h').Hidden()
  32. kingpin.Parse()
  33. if externalNetworksWhitelist != nil {
  34. for _, prefix := range *externalNetworksWhitelist {
  35. p, err := netaddr.ParseIPPrefix(prefix)
  36. if err != nil {
  37. klog.Fatalf("invalid network %s: %s", prefix, err)
  38. }
  39. ExternalNetworksWhitelist = append(ExternalNetworksWhitelist, p)
  40. }
  41. }
  42. }