Skip to content

Commit da9e272

Browse files
committed
Access TLS secrets directly (without cache)
Now that we cache only specific objects from the API, we don't see TLS secrets that don't have the "app.kubernetes.io/part-of=rabbitmq" label. To check if the desired secrets exist, use the APIReader which checks the API directly.
1 parent 5157a08 commit da9e272

File tree

5 files changed

+9
-17
lines changed

5 files changed

+9
-17
lines changed

Diff for: controllers/rabbitmqcluster_controller.go

+1
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ const (
5959
// RabbitmqClusterReconciler reconciles a RabbitmqCluster object
6060
type RabbitmqClusterReconciler struct {
6161
client.Client
62+
APIReader client.Reader
6263
Scheme *runtime.Scheme
6364
Namespace string
6465
Recorder record.EventRecorder

Diff for: controllers/reconcile_tls.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,10 @@ func (r *RabbitmqClusterReconciler) checkTLSSecrets(ctx context.Context, rabbitm
3939
secretName := rabbitmqCluster.Spec.TLS.SecretName
4040
logger.V(1).Info("TLS enabled, looking for secret", "secret", secretName)
4141

42-
// check if secret exists
42+
// check if secret exists - we need to use the APIReader because if the Secret doesn't have
43+
// "app.kubernetes.io/part-of" label set to "rabbitmq", it's not cached by the controller
4344
secret := &corev1.Secret{}
44-
if err := r.Get(ctx, types.NamespacedName{Namespace: rabbitmqCluster.Namespace, Name: secretName}, secret); err != nil {
45+
if err := r.APIReader.Get(ctx, types.NamespacedName{Namespace: rabbitmqCluster.Namespace, Name: secretName}, secret); err != nil {
4546
r.Recorder.Event(rabbitmqCluster, corev1.EventTypeWarning, "TLSError",
4647
fmt.Sprintf("Failed to get TLS secret %s in namespace %s: %v", secretName, rabbitmqCluster.Namespace, err.Error()))
4748
logger.Error(err, "Error setting up TLS")
@@ -65,7 +66,7 @@ func (r *RabbitmqClusterReconciler) checkTLSSecrets(ctx context.Context, rabbitm
6566

6667
// check if secret exists
6768
secret = &corev1.Secret{}
68-
if err := r.Get(ctx, types.NamespacedName{Namespace: rabbitmqCluster.Namespace, Name: secretName}, secret); err != nil {
69+
if err := r.APIReader.Get(ctx, types.NamespacedName{Namespace: rabbitmqCluster.Namespace, Name: secretName}, secret); err != nil {
6970
r.Recorder.Event(rabbitmqCluster, corev1.EventTypeWarning, "TLSError",
7071
fmt.Sprintf("Failed to get CA certificate secret %v in namespace %v: %v", secretName, rabbitmqCluster.Namespace, err.Error()))
7172
logger.Error(err, "Error setting up TLS")

Diff for: controllers/suite_test.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@ package controllers_test
1313
import (
1414
"context"
1515
"path/filepath"
16-
"sigs.k8s.io/controller-runtime/pkg/metrics/server"
1716
"testing"
1817

18+
"sigs.k8s.io/controller-runtime/pkg/metrics/server"
19+
1920
"k8s.io/client-go/util/retry"
2021

2122
. "github.com/onsi/ginkgo/v2"
@@ -95,6 +96,7 @@ var _ = BeforeSuite(func() {
9596
fakeExecutor = &fakePodExecutor{}
9697
err = (&controllers.RabbitmqClusterReconciler{
9798
Client: mgr.GetClient(),
99+
APIReader: mgr.GetAPIReader(),
98100
Scheme: mgr.GetScheme(),
99101
Recorder: mgr.GetEventRecorderFor(controllerName),
100102
Namespace: "rabbitmq-system",

Diff for: main.go

+1
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ func main() {
194194

195195
err = (&controllers.RabbitmqClusterReconciler{
196196
Client: mgr.GetClient(),
197+
APIReader: mgr.GetAPIReader(),
197198
Scheme: mgr.GetScheme(),
198199
Recorder: mgr.GetEventRecorderFor(controllerName),
199200
Namespace: operatorNamespace,

Diff for: system_tests/utils.go

-13
Original file line numberDiff line numberDiff line change
@@ -766,19 +766,6 @@ func k8sCreateTLSSecret(secretName, secretNamespace, certPath, keyPath string) e
766766
return fmt.Errorf("Failed with error: %w\nOutput: %v\n", err, string(output))
767767
}
768768

769-
output, err = kubectl(
770-
"-n",
771-
secretNamespace,
772-
"label",
773-
"secrets",
774-
secretName,
775-
"app.kubernetes.io/part-of=rabbitmq",
776-
)
777-
778-
if err != nil {
779-
return fmt.Errorf("Failed with error: %w\nOutput: %v\n", err, string(output))
780-
}
781-
782769
return nil
783770
}
784771

0 commit comments

Comments
 (0)