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/ipn
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
..
auditlog ipn/ipnext: remove some interface indirection to add hooks 8 months ago
conffile ipn/conffile: don't depend on hujson on iOS/Android 1 year ago
desktop ipn/ipnext: remove some interface indirection to add hooks 8 months ago
ipnauth ipn/{ipnauth,ipnlocal,localapi}: make EditPrefs return an error if changing exit node is restricted by policy 6 months ago
ipnext ipn/ipnlocal: make GetExt work earlier, before extension init 7 months ago
ipnlocal cmd/tailscale/cli: Add service flag to serve command (#16191) 5 months ago
ipnserver ipn: add missing entries for OpenBSD 6 months ago
ipnstate cmd/tailscale, ipn/ipnstate, wgengine/magicsock: update ping output for peer relay (#16515) 6 months ago
lapitest ipn/ipn{server,test}: extract the LocalAPI test client and server into ipntest 8 months ago
localapi client/local,cmd/tailscale/cli,ipn/localapi: expose eventbus graph (#16597) 5 months ago
policy ipn,tailconfig: clean up unreleased and removed app connector service 2 years ago
store all-kube: create Tailscale Service for HA kube-apiserver ProxyGroup (#16572) 5 months ago
backend.go ipn: add watch opt to include actions in health messages 7 months ago
conf.go ipn: ensure that conffile is source of truth for advertised services. (#15361) 9 months ago
doc.go ipn: generate LoginProfileView and use it instead of *LoginProfile where appropriate 11 months ago
ipn_clone.go cmd/tailscale/cli,ipn,ipn/ipnlocal: add AutoExitNode preference for automatic exit node selection 6 months ago
ipn_test.go all: do not depend on the testing package 2 years ago
ipn_view.go cmd/tailscale/cli,ipn,ipn/ipnlocal: add AutoExitNode preference for automatic exit node selection 6 months ago
prefs.go ipn: move ParseAutoExitNodeID from ipn/ipnlocal to ipn 6 months ago
prefs_test.go ipn: move ParseAutoExitNodeID from ipn/ipnlocal to ipn 6 months ago
serve.go cmd/tailscale/cli: Add service flag to serve command (#16191) 5 months ago
serve_test.go cmd/tailscale/cli: Add service flag to serve command (#16191) 5 months ago
store.go tailcfg: report StateEncrypted in Hostinfo (#16434) 6 months ago
store_test.go ipn/store: automatically migrate between plaintext and encrypted state (#16318) 6 months ago