diff options
| author | Tom Proctor <tomhjp@users.noreply.github.com> | 2025-07-21 11:03:21 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-21 11:03:21 +0100 |
| commit | f421907c38df057e1b293613644532f31e77b24b (patch) | |
| tree | 94fa3c3ee9d38e9b2c62d89243f227f091f8edeb /control/controlknobs/controlknobs_test.go | |
| parent | 5adde9e3f3f87cd9ce47832244aad49bcfb96bd8 (diff) | |
| download | tailscale-f421907c38df057e1b293613644532f31e77b24b.tar.xz tailscale-f421907c38df057e1b293613644532f31e77b24b.zip | |
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>
Diffstat (limited to 'control/controlknobs/controlknobs_test.go')
0 files changed, 0 insertions, 0 deletions
