flags.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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. NoParseLogs = kingpin.Flag("no-parse-logs", "Disable container logs parsing").Default("false").Bool()
  13. NoPingUpstreams = kingpin.Flag("no-ping-upstreams", "Disable container upstreams ping").Default("false").Bool()
  14. 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()
  15. ExternalNetworksWhitelist []netaddr.IPPrefix
  16. Provider = kingpin.Flag("provider", "`provider` label for `node_cloud_info` metric").String()
  17. Region = kingpin.Flag("region", "`region` label for `node_cloud_info` metric").String()
  18. AvailabilityZone = kingpin.Flag("availability-zone", "`availability_zone` label for `node_cloud_info` metric").String()
  19. )
  20. func GetString(fl *string) string {
  21. if fl == nil {
  22. return ""
  23. }
  24. return *fl
  25. }
  26. func init() {
  27. if strings.HasSuffix(os.Args[0], ".test") {
  28. return
  29. }
  30. kingpin.HelpFlag.Short('h').Hidden()
  31. kingpin.Parse()
  32. if externalNetworksWhitelist != nil {
  33. for _, prefix := range *externalNetworksWhitelist {
  34. p, err := netaddr.ParseIPPrefix(prefix)
  35. if err != nil {
  36. klog.Fatalf("invalid network %s: %s", prefix, err)
  37. }
  38. ExternalNetworksWhitelist = append(ExternalNetworksWhitelist, p)
  39. }
  40. }
  41. }