|
|
|
|
@ -82,6 +82,7 @@ func main() { |
|
|
|
|
tsFirewallMode = defaultEnv("PROXY_FIREWALL_MODE", "") |
|
|
|
|
defaultProxyClass = defaultEnv("PROXY_DEFAULT_CLASS", "") |
|
|
|
|
isDefaultLoadBalancer = defaultBool("OPERATOR_DEFAULT_LOAD_BALANCER", false) |
|
|
|
|
loginServer = strings.TrimSuffix(defaultEnv("OPERATOR_LOGIN_SERVER", ""), "/") |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
var opts []kzap.Opts |
|
|
|
|
@ -115,7 +116,7 @@ func main() { |
|
|
|
|
hostinfo.SetApp(kubetypes.AppAPIServerProxy) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
s, tsc := initTSNet(zlog) |
|
|
|
|
s, tsc := initTSNet(zlog, loginServer) |
|
|
|
|
defer s.Close() |
|
|
|
|
restConfig := config.GetConfigOrDie() |
|
|
|
|
apiproxy.MaybeLaunchAPIServerProxy(zlog, restConfig, s, mode) |
|
|
|
|
@ -131,6 +132,7 @@ func main() { |
|
|
|
|
proxyTags: tags, |
|
|
|
|
proxyFirewallMode: tsFirewallMode, |
|
|
|
|
defaultProxyClass: defaultProxyClass, |
|
|
|
|
loginServer: loginServer, |
|
|
|
|
} |
|
|
|
|
runReconcilers(rOpts) |
|
|
|
|
} |
|
|
|
|
@ -138,14 +140,13 @@ func main() { |
|
|
|
|
// initTSNet initializes the tsnet.Server and logs in to Tailscale. It uses the
|
|
|
|
|
// CLIENT_ID_FILE and CLIENT_SECRET_FILE environment variables to authenticate
|
|
|
|
|
// with Tailscale.
|
|
|
|
|
func initTSNet(zlog *zap.SugaredLogger) (*tsnet.Server, tsClient) { |
|
|
|
|
func initTSNet(zlog *zap.SugaredLogger, loginServer string) (*tsnet.Server, tsClient) { |
|
|
|
|
var ( |
|
|
|
|
clientIDPath = defaultEnv("CLIENT_ID_FILE", "") |
|
|
|
|
clientSecretPath = defaultEnv("CLIENT_SECRET_FILE", "") |
|
|
|
|
hostname = defaultEnv("OPERATOR_HOSTNAME", "tailscale-operator") |
|
|
|
|
kubeSecret = defaultEnv("OPERATOR_SECRET", "") |
|
|
|
|
operatorTags = defaultEnv("OPERATOR_INITIAL_TAGS", "tag:k8s-operator") |
|
|
|
|
loginServer = strings.TrimSuffix(defaultEnv("OPERATOR_LOGIN_SERVER", ""), "/") |
|
|
|
|
) |
|
|
|
|
startlog := zlog.Named("startup") |
|
|
|
|
if clientIDPath == "" || clientSecretPath == "" { |
|
|
|
|
@ -610,6 +611,7 @@ func runReconcilers(opts reconcilerOpts) { |
|
|
|
|
l: opts.log.Named("recorder-reconciler"), |
|
|
|
|
clock: tstime.DefaultClock{}, |
|
|
|
|
tsClient: opts.tsClient, |
|
|
|
|
loginServer: opts.loginServer, |
|
|
|
|
}) |
|
|
|
|
if err != nil { |
|
|
|
|
startlog.Fatalf("could not create Recorder reconciler: %v", err) |
|
|
|
|
@ -693,6 +695,8 @@ type reconcilerOpts struct { |
|
|
|
|
// class for proxies that do not have a ProxyClass set.
|
|
|
|
|
// this is defined by an operator env variable.
|
|
|
|
|
defaultProxyClass string |
|
|
|
|
// loginServer is the coordination server URL that should be used by managed resources.
|
|
|
|
|
loginServer string |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// enqueueAllIngressEgressProxySvcsinNS returns a reconcile request for each
|
|
|
|
|
|