99 networkv1 "github.com/openstack-k8s-operators/infra-operator/apis/network/v1beta1"
1010 "github.com/openstack-k8s-operators/lib-common/modules/certmanager"
1111 condition "github.com/openstack-k8s-operators/lib-common/modules/common/condition"
12+ "github.com/openstack-k8s-operators/lib-common/modules/common/configmap"
1213 "github.com/openstack-k8s-operators/lib-common/modules/common/helper"
1314 "github.com/openstack-k8s-operators/lib-common/modules/common/ocp"
1415 "github.com/openstack-k8s-operators/lib-common/modules/common/util"
@@ -22,6 +23,7 @@ import (
2223
2324 corev1beta1 "github.com/openstack-k8s-operators/openstack-operator/apis/core/v1beta1"
2425 corev1 "k8s.io/api/core/v1"
26+ "k8s.io/utils/ptr"
2527
2628 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2729 ctrl "sigs.k8s.io/controller-runtime"
@@ -153,17 +155,56 @@ func reconcileRabbitMQ(
153155 if err != nil {
154156 return mqFailed , ctrl.Result {}, err
155157 }
158+ clusterNodeTLSArgs := "-proto_dist inet_tls -ssl_dist_optfile /etc/rabbitmq/inter-node-tls.config"
156159 if fipsEnabled {
157- fipsModeStr := "-crypto fips_mode true"
158-
159- envVars = append (envVars , corev1.EnvVar {
160- Name : "RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS" ,
161- Value : fipsModeStr ,
162- }, corev1.EnvVar {
163- Name : "RABBITMQ_CTL_ERL_ARGS" ,
164- Value : fipsModeStr ,
165- })
160+ clusterNodeTLSArgs += " -crypto fips_mode true"
166161 }
162+
163+ envVars = append (envVars , corev1.EnvVar {
164+ Name : "RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS" ,
165+ Value : clusterNodeTLSArgs ,
166+ }, corev1.EnvVar {
167+ Name : "RABBITMQ_CTL_ERL_ARGS" ,
168+ Value : clusterNodeTLSArgs ,
169+ })
170+ }
171+
172+ cms := []util.Template {
173+ {
174+ Name : fmt .Sprintf ("%s-config-data" , rabbitmq .Name ),
175+ Namespace : rabbitmq .Namespace ,
176+ Type : util .TemplateTypeConfig ,
177+ InstanceType : "rabbitmq" ,
178+ Labels : map [string ]string {},
179+ CustomData : map [string ]string {
180+ "inter_node_tls.config" : `[
181+ {server, [
182+ {cacertfile,"/etc/rabbitmq-tls/ca.crt"},
183+ {certfile,"/etc/rabbitmq-tls/tls.crt"},
184+ {keyfile,"/etc/rabbitmq-tls/tls.key"},
185+ {secure_renegotiate, true},
186+ {fail_if_no_peer_cert, true},
187+ {verify, verify_peer},
188+ {versions, ['tlsv1.2','tlsv1.3']}
189+ ]},
190+ {client, [
191+ {cacertfile,"/etc/rabbitmq-tls/ca.crt"},
192+ {certfile,"/etc/rabbitmq-tls/tls.crt"},
193+ {keyfile,"/etc/rabbitmq-tls/tls.key"},
194+ {secure_renegotiate, true},
195+ {verify, verify_peer},
196+ {versions, ['tlsv1.2','tlsv1.3']}
197+ ]}
198+ ].
199+ ` ,
200+ },
201+ },
202+ }
203+
204+ err := configmap .EnsureConfigMaps (ctx , helper , instance , cms , nil )
205+ if err != nil {
206+ Log .Error (err , "Unable to create rabbitmq config maps" )
207+ return mqFailed , ctrl.Result {}, err
167208 }
168209
169210 defaultStatefulSet := rabbitmqv2.StatefulSet {
@@ -196,6 +237,15 @@ func reconcileRabbitMQ(
196237
197238 hostname := fmt .Sprintf ("%s.%s.svc" , name , instance .Namespace )
198239 hostnameHeadless := fmt .Sprintf ("%s-nodes.%s.svc" , name , instance .Namespace )
240+ hostnames := []string {
241+ hostname ,
242+ fmt .Sprintf ("%s.%s" , hostname , ClusterInternalDomain ),
243+ hostnameHeadless ,
244+ fmt .Sprintf ("%s.%s" , hostnameHeadless , ClusterInternalDomain ),
245+ }
246+ for i := 0 ; i < int (* spec .Replicas ); i ++ {
247+ hostnames = append (hostnames , fmt .Sprintf ("%s-server-%d.%s-nodes.%s" , name , i , name , instance .Namespace ))
248+ }
199249
200250 tlsCert := ""
201251 commonName := fmt .Sprintf ("%s.%s" , hostname , ClusterInternalDomain )
@@ -205,14 +255,7 @@ func reconcileRabbitMQ(
205255 IssuerName : instance .GetInternalIssuer (),
206256 CertName : fmt .Sprintf ("%s-svc" , rabbitmq .Name ),
207257 CommonName : & commonName ,
208- Hostnames : []string {
209- hostname ,
210- fmt .Sprintf ("%s.%s" , hostname , ClusterInternalDomain ),
211- hostnameHeadless ,
212- fmt .Sprintf ("%s.%s" , hostnameHeadless , ClusterInternalDomain ),
213- fmt .Sprintf ("*.%s" , hostnameHeadless ),
214- fmt .Sprintf ("*.%s.%s" , hostnameHeadless , ClusterInternalDomain ),
215- },
258+ Hostnames : hostnames ,
216259 Subject : & certmgrv1.X509Subject {
217260 Organizations : []string {fmt .Sprintf ("%s.%s" , rabbitmq .Namespace , ClusterInternalDomain )},
218261 },
@@ -345,6 +388,34 @@ func reconcileRabbitMQ(
345388 ]}
346389].
347390`
391+
392+ rabbitmq .Spec .Override .StatefulSet .Spec .Template .Spec .Volumes = []corev1.Volume {
393+ {
394+ Name : "config-data" ,
395+ VolumeSource : corev1.VolumeSource {
396+ ConfigMap : & corev1.ConfigMapVolumeSource {
397+ LocalObjectReference : corev1.LocalObjectReference {
398+ Name : fmt .Sprintf ("%s-config-data" , rabbitmq .Name ),
399+ },
400+ DefaultMode : ptr.To [int32 ](0o420 ),
401+ Items : []corev1.KeyToPath {
402+ {
403+ Key : "inter_node_tls.config" ,
404+ Path : "inter_node_tls.config" ,
405+ },
406+ },
407+ },
408+ },
409+ },
410+ }
411+ rabbitmq .Spec .Override .StatefulSet .Spec .Template .Spec .Containers [0 ].VolumeMounts = []corev1.VolumeMount {
412+ {
413+ MountPath : "/etc/rabbitmq/inter-node-tls.config" ,
414+ ReadOnly : true ,
415+ Name : "config-data" ,
416+ SubPath : "inter_node_tls.config" ,
417+ },
418+ }
348419 }
349420
350421 // overrides
0 commit comments