|
|
|
|
@ -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
|
|
|
|
|
|