Skip to content

Commit db2cce5

Browse files
committed
Fix secret on restart
1 parent ee1b628 commit db2cce5

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

internal/controller/generic_tunnel_reconciler.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import (
1818
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
1919
)
2020

21+
const CREDENTIALS_JSON_FILENAME string = "credentials.json"
22+
2123
type GenericTunnelReconciler interface {
2224
k8s.GenericReconciler
2325

@@ -30,6 +32,10 @@ type GenericTunnelReconciler interface {
3032
SetTunnelCreds(string)
3133
}
3234

35+
func TunnelNamespacedName(r GenericTunnelReconciler) apitypes.NamespacedName {
36+
return apitypes.NamespacedName{Name: r.GetTunnel().GetName(), Namespace: r.GetTunnel().GetNamespace()}
37+
}
38+
3339
// labelsForTunnel returns the labels for selecting the resources
3440
// belonging to the given Tunnel CR name.
3541
func labelsForTunnel(cf Tunnel) map[string]string {
@@ -126,6 +132,12 @@ func setupNewTunnel(r GenericTunnelReconciler) error {
126132
r.GetLog().Info("Tunnel created on Cloudflare")
127133
r.GetRecorder().Event(r.GetTunnel().GetObject(), corev1.EventTypeNormal, "Created", "Tunnel created successfully on Cloudflare")
128134
r.SetTunnelCreds(creds)
135+
} else {
136+
secret := &corev1.Secret{}
137+
if err := r.GetClient().Get(r.GetContext(), TunnelNamespacedName(r), secret); err != nil {
138+
r.GetLog().Error(err, "Error in getting existing secret, tunnel restart will crash, please recreate tunnel")
139+
}
140+
r.SetTunnelCreds(string(secret.Data[CREDENTIALS_JSON_FILENAME]))
129141
}
130142

131143
// Add finalizer for tunnel
@@ -149,7 +161,7 @@ func cleanupTunnel(r GenericTunnelReconciler) (ctrl.Result, bool, error) {
149161
r.GetRecorder().Event(r.GetTunnel().GetObject(), corev1.EventTypeNormal, "Deleting", "Starting Tunnel Deletion")
150162
cfDeployment := &appsv1.Deployment{}
151163
var bypass bool
152-
if err := r.GetClient().Get(r.GetContext(), apitypes.NamespacedName{Name: r.GetTunnel().GetName(), Namespace: r.GetTunnel().GetNamespace()}, cfDeployment); err != nil {
164+
if err := r.GetClient().Get(r.GetContext(), TunnelNamespacedName(r), cfDeployment); err != nil {
153165
r.GetLog().Error(err, "Error in getting deployments, might already be deleted?")
154166
bypass = true
155167
}
@@ -294,7 +306,7 @@ func secretForTunnel(r GenericTunnelReconciler) *corev1.Secret {
294306
Namespace: r.GetTunnel().GetNamespace(),
295307
Labels: ls,
296308
},
297-
StringData: map[string]string{"credentials.json": r.GetTunnelCreds()},
309+
StringData: map[string]string{CREDENTIALS_JSON_FILENAME: r.GetTunnelCreds()},
298310
}
299311
// Set Tunnel instance as the owner and controller
300312
ctrl.SetControllerReference(r.GetTunnel().GetObject(), sec, r.GetScheme())

0 commit comments

Comments
 (0)