mirror of
https://github.com/tailscale/tailscale.git
synced 2025-02-18 02:48:40 +00:00
cmd/k8s-operator: handle changes to services w/o teardown
Previously users would have to unexpose/expose the service in order to change Hostname/TargetIP. This now applies those changes by causing a StatefulSet rollout now that a61a9ab087e16270bc039252e7620aae4de3d56e is in. Updates #502 Signed-off-by: Maisem Ali <maisem@tailscale.com>
This commit is contained in:
parent
24d41e4ae7
commit
12ac672542
@ -722,6 +722,10 @@ func expectedSTS(stsName, secretName, hostname, priorityClassName string) *appsv
|
|||||||
ServiceName: stsName,
|
ServiceName: stsName,
|
||||||
Template: corev1.PodTemplateSpec{
|
Template: corev1.PodTemplateSpec{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Annotations: map[string]string{
|
||||||
|
"tailscale.com/operator-last-set-hostname": hostname,
|
||||||
|
"tailscale.com/operator-last-set-ip": "10.20.30.40",
|
||||||
|
},
|
||||||
DeletionGracePeriodSeconds: ptr.To[int64](10),
|
DeletionGracePeriodSeconds: ptr.To[int64](10),
|
||||||
Labels: map[string]string{"app": "1234-UID"},
|
Labels: map[string]string{"app": "1234-UID"},
|
||||||
},
|
},
|
||||||
|
@ -34,9 +34,15 @@ const (
|
|||||||
|
|
||||||
FinalizerName = "tailscale.com/finalizer"
|
FinalizerName = "tailscale.com/finalizer"
|
||||||
|
|
||||||
|
// Annotations settable by users on services.
|
||||||
AnnotationExpose = "tailscale.com/expose"
|
AnnotationExpose = "tailscale.com/expose"
|
||||||
AnnotationTags = "tailscale.com/tags"
|
AnnotationTags = "tailscale.com/tags"
|
||||||
AnnotationHostname = "tailscale.com/hostname"
|
AnnotationHostname = "tailscale.com/hostname"
|
||||||
|
|
||||||
|
// Annotations set by the operator on pods to trigger restarts when the
|
||||||
|
// hostname or IP changes.
|
||||||
|
podAnnotationLastSetIP = "tailscale.com/operator-last-set-ip"
|
||||||
|
podAnnotationLastSetHostname = "tailscale.com/operator-last-set-hostname"
|
||||||
)
|
)
|
||||||
|
|
||||||
type tailscaleSTSConfig struct {
|
type tailscaleSTSConfig struct {
|
||||||
@ -278,7 +284,18 @@ func (a *tailscaleSTSReconciler) reconcileSTS(ctx context.Context, logger *zap.S
|
|||||||
"app": sts.ParentResourceUID,
|
"app": sts.ParentResourceUID,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
ss.Spec.Template.ObjectMeta.Labels = map[string]string{
|
|
||||||
|
// containerboot currently doesn't have a way to re-read the hostname/ip as
|
||||||
|
// it is passed via an environment variable. So we need to restart the
|
||||||
|
// container when the value changes. We do this by adding an annotation to
|
||||||
|
// the pod template that contains the last value we set.
|
||||||
|
ss.Spec.Template.Annotations = map[string]string{
|
||||||
|
"tailscale.com/operator-last-set-hostname": sts.Hostname,
|
||||||
|
}
|
||||||
|
if sts.TargetIP != "" {
|
||||||
|
ss.Spec.Template.Annotations["tailscale.com/operator-last-set-ip"] = sts.TargetIP
|
||||||
|
}
|
||||||
|
ss.Spec.Template.Labels = map[string]string{
|
||||||
"app": sts.ParentResourceUID,
|
"app": sts.ParentResourceUID,
|
||||||
}
|
}
|
||||||
ss.Spec.Template.Spec.PriorityClassName = a.proxyPriorityClassName
|
ss.Spec.Template.Spec.PriorityClassName = a.proxyPriorityClassName
|
||||||
|
Loading…
x
Reference in New Issue
Block a user