make ProxyGroupReady condition for kube-apiserver dependent on Service readiness

Change-Id: I951bcb9035521861bf3ca0ce037800692b23c77d
Signed-off-by: Tom Proctor <tomhjp@users.noreply.github.com>
This commit is contained in:
Tom Proctor
2025-07-17 19:23:53 +01:00
parent 85e68f50f5
commit 889a24bb9d
2 changed files with 16 additions and 0 deletions

View File

@@ -466,6 +466,12 @@ func (r *ProxyGroupReconciler) maybeUpdateStatus(ctx context.Context, logger *za
case len(devices) < desiredReplicas:
case len(devices) > desiredReplicas:
message = fmt.Sprintf("waiting for %d ProxyGroup pods to shut down", len(devices)-desiredReplicas)
case pg.Spec.Type == tsapi.ProxyGroupTypeKubernetesAPIServer && !tsoperator.ProxyGroupTailscaleServiceValid(pg):
reason = reasonProxyGroupInvalid
message = "waiting for configured Tailscale Service to be marked valid"
case pg.Spec.Type == tsapi.ProxyGroupTypeKubernetesAPIServer && !tsoperator.ProxyGroupTailscaleServiceConfigured(pg):
reason = reasonProxyGroupCreating
message = "waiting for proxies to start advertising the configured Tailscale Service"
default:
status = metav1.ConditionTrue
reason = reasonProxyGroupReady

View File

@@ -146,6 +146,16 @@ func ProxyGroupAvailable(pg *tsapi.ProxyGroup) bool {
return cond != nil && cond.Status == metav1.ConditionTrue
}
func ProxyGroupTailscaleServiceValid(pg *tsapi.ProxyGroup) bool {
cond := proxyGroupCondition(pg, tsapi.PGTailscaleServiceValid)
return cond != nil && cond.Status == metav1.ConditionTrue && cond.ObservedGeneration == pg.Generation
}
func ProxyGroupTailscaleServiceConfigured(pg *tsapi.ProxyGroup) bool {
cond := proxyGroupCondition(pg, tsapi.PGTailscaleServiceConfigured)
return cond != nil && cond.Status == metav1.ConditionTrue && cond.ObservedGeneration == pg.Generation
}
func proxyGroupCondition(pg *tsapi.ProxyGroup, condType tsapi.ConditionType) *metav1.Condition {
idx := xslices.IndexFunc(pg.Status.Conditions, func(cond metav1.Condition) bool {
return cond.Type == string(condType)