api-server-proxy.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // Copyright (c) Tailscale Inc & AUTHORS
  2. // SPDX-License-Identifier: BSD-3-Clause
  3. //go:build !plan9
  4. package main
  5. import (
  6. "fmt"
  7. "log"
  8. "os"
  9. "tailscale.com/kube/kubetypes"
  10. "tailscale.com/types/ptr"
  11. )
  12. func parseAPIProxyMode() *kubetypes.APIServerProxyMode {
  13. haveAuthProxyEnv := os.Getenv("AUTH_PROXY") != ""
  14. haveAPIProxyEnv := os.Getenv("APISERVER_PROXY") != ""
  15. switch {
  16. case haveAPIProxyEnv && haveAuthProxyEnv:
  17. log.Fatal("AUTH_PROXY (deprecated) and APISERVER_PROXY are mutually exclusive, please unset AUTH_PROXY")
  18. case haveAuthProxyEnv:
  19. var authProxyEnv = defaultBool("AUTH_PROXY", false) // deprecated
  20. if authProxyEnv {
  21. return ptr.To(kubetypes.APIServerProxyModeAuth)
  22. }
  23. return nil
  24. case haveAPIProxyEnv:
  25. var apiProxyEnv = defaultEnv("APISERVER_PROXY", "") // true, false or "noauth"
  26. switch apiProxyEnv {
  27. case "true":
  28. return ptr.To(kubetypes.APIServerProxyModeAuth)
  29. case "false", "":
  30. return nil
  31. case "noauth":
  32. return ptr.To(kubetypes.APIServerProxyModeNoAuth)
  33. default:
  34. panic(fmt.Sprintf("unknown APISERVER_PROXY value %q", apiProxyEnv))
  35. }
  36. }
  37. return nil
  38. }