You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailscale/cmd
Tom Proctor f421907c38
all-kube: create Tailscale Service for HA kube-apiserver ProxyGroup (#16572)
Adds a new reconciler for ProxyGroups of type kube-apiserver that will
provision a Tailscale Service for each replica to advertise. Adds two
new condition types to the ProxyGroup, TailscaleServiceValid and
TailscaleServiceConfigured, to post updates on the state of that
reconciler in a way that's consistent with the service-pg reconciler.
The created Tailscale Service name is configurable via a new ProxyGroup
field spec.kubeAPISserver.ServiceName, which expects a string of the
form "svc:<dns-label>".

Lots of supporting changes were needed to implement this in a way that's
consistent with other operator workflows, including:

* Pulled containerboot's ensureServicesUnadvertised and certManager into
  kube/ libraries to be shared with k8s-proxy. Use those in k8s-proxy to
  aid Service cert sharing between replicas and graceful Service shutdown.
* For certManager, add an initial wait to the cert loop to wait until
  the domain appears in the devices's netmap to avoid a guaranteed error
  on the first issue attempt when it's quick to start.
* Made several methods in ingress-for-pg.go and svc-for-pg.go into
  functions to share with the new reconciler
* Added a Resource struct to the owner refs stored in Tailscale Service
  annotations to be able to distinguish between Ingress- and ProxyGroup-
  based Services that need cleaning up in the Tailscale API.
* Added a ListVIPServices method to the internal tailscale client to aid
  cleaning up orphaned Services
* Support for reading config from a kube Secret, and partial support for
  config reloading, to prevent us having to force Pod restarts when
  config changes.
* Fixed up the zap logger so it's possible to set debug log level.

Updates #13358

Change-Id: Ia9607441157dd91fb9b6ecbc318eecbef446e116
Signed-off-by: Tom Proctor <tomhjp@users.noreply.github.com>
5 months ago
..
addlicense all: fix golangci-lint errors 11 months ago
build-webclient client/web: precompress assets 2 years ago
checkmetrics cmd/checkmetrics: add command for checking metrics against kb 1 year ago
cloner scripts/check_license_headers.sh: delete, rewrite as a Go test 6 months ago
connector-gen cmd/connector-gen: add helper tool for wide app connector configurations 2 years ago
containerboot all-kube: create Tailscale Service for HA kube-apiserver ProxyGroup (#16572) 5 months ago
derper derp/derphttp: add error notify for RunWatchConnectionLoop (#16261) 6 months ago
derpprobe cmd/{derp,derpprobe},prober,derp: add mesh support to derpprobe (#15414) 6 months ago
dist cmd/dist,release/dist: sign QNAP builds with a Google Cloud hosted key 8 months ago
get-authkey cmd,tsnet,internal/client: create internal shim to deprecated control plane API 10 months ago
gitops-pusher scripts/check_license_headers.sh: delete, rewrite as a Go test 6 months ago
hello cmd/hello: display native ipv4 (#15191) 9 months ago
k8s-nameserver cmd/k8s-nameserver: fix AAAA record query response (#12412) 2 years ago
k8s-operator all-kube: create Tailscale Service for HA kube-apiserver ProxyGroup (#16572) 5 months ago
k8s-proxy all-kube: create Tailscale Service for HA kube-apiserver ProxyGroup (#16572) 5 months ago
mkmanifest cmd/mkmanifest, cmd/tailscale, cmd/tailscaled: remove Windows arm32 resources from OSS 3 years ago
mkpkg go.mod: upgrade nfpm to v2 (#8786) 2 years ago
mkversion version/mkversion: open-source version generation logic 3 years ago
nardump cmd/nardump: support symlinks, add basic test 8 months ago
natc cmd/natc: add a flag to use specific DNS servers 6 months ago
netlogfmt all: use Go 1.22 range-over-int 2 years ago
nginx-auth tailcfg,all: add and use Node.IsTagged() 3 years ago
pgproxy all: use new LocalAPI client package location 10 months ago
printdep cmd/printdep: print correct toolchain URL 3 years ago
proxy-test-server net/tlsdial: fix TLS cert validation of HTTPS proxies 6 months ago
proxy-to-grafana scripts/check_license_headers.sh: delete, rewrite as a Go test 6 months ago
sniproxy net/{netx,memnet},all: add netx.DialFunc, move memnet Network impl 8 months ago
speedtest all: update copyright and license headers 3 years ago
ssh-auth-none-demo ssh,tempfork/gliderlabs/ssh: replace github.com/tailscale/golang-x-crypto/ssh with golang.org/x/crypto/ssh 10 months ago
stunc cmd/stunc: enforce read timeout deadline (#14309) 1 year ago
stund types/lazy: add lazy.GMap: a map of lazily computed GValues (#16532) 5 months ago
stunstamp cmd/stunstamp: add protocol context to timeout logs (#13422) 1 year ago
sync-containers all: adjust some build tags for plan9 2 years ago
systray cmd/systray: add cmd/systray back as a small client/systray wrapper 11 months ago
tailscale cmd/tailscale/cli: remove advertise command (#16592) 5 months ago
tailscaled all: detect JetKVM and specialize a handful of things for it 5 months ago
testcontrol all: use Go 1.22 range-over-int 2 years ago
testwrapper .github/workflows: shard the Windows builder 6 months ago
tl-longchain all: use new LocalAPI client package location 10 months ago
tsconnect cmd/tailscale/cli,ipn/ipnlocal: restrict logout when AlwaysOn mode is enabled 5 months ago
tsidp cmd/tsidp: set hostinfo.App in tsnet mode (#16544) 5 months ago
tsshd all: update copyright and license headers 3 years ago
tta all: use new LocalAPI client package location 10 months ago
viewer cmd/viewer,all: consistently use "read-only" instead of "readonly" 11 months ago
vnet cmd/vnet: add wsproxy mode 8 months ago
xdpderper tsweb: split promvarz into an optional dependency 9 months ago