Node fails to connect to the K8S API endpoint in a FIPS-only environment #10575
-
Describe the bugWe have tried to install the Rabbitmq on OCP platform. When the peer discovery mechanism used is rabbit_peer_discovery_k8s . The installation was successful. But when the Rabbitmq pods are keep on restarting with the error *2022-11-14 07:42:49.501027+00:00 [error] <0.230.0> Failed to lock with peer discovery backend rabbit_peer_discovery_k8s: "{failed_connect,\n [{to_address,{"kubernetes.default.svc.cluster.local",443}},\n {inet,\n [inet],\n {eoptions,\n {{badarg,\n [ {crypto,evp_generate_key_nif,[x25519,undefined],[]} {file,"ssl_cipher.erl"} {file,"ssl_gen_statem.erl"} {file,"gen_statem.erl"} {file,"tls_connection.erl"} {file,"proc_lib.erl"} {start,2250} And we don't see this issue when we provide the peer discovery mechanism as classic config. We need to know why we are seeing this error, if the peer discovery mechanism is not classic config. Also what is the recommended peer discovery mechanism that should be used for CRMQ ? There are reported problems in RabbitMQ open source to work with a FIPS enabled K8s cluster, when using the peer discovery k8s cluster formation method. The underlying problem is from Erlang, but there is no formal word about how to make this combination work. Can someone tell when Erlang will gain FIPS mode compatibility? Reproduction stepsInstall Rabbitmq in FIPS enabled OCP cluster. Expected behaviorEven when FIPS enabled OCP cluster Rabbitmq should install with peer discovery mechanism as rabbit_peer_discovery_k8s Additional contextNo response |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments
-
The node could not connect to the Kubernetes API endpoint at When you use classic config peer discovery, nodes do not contact any external services. Sounds like you need a FIPS-enabled Erlang runtime. Our team will soon provide a FIPS-enabled build with OpenSSL 3 but as part of the commercial edition only. Open source RabbitMQ and Erlang users must build (or, well, local an existing binary build) a compatible Erlang version with FIPS enabled. |
Beta Was this translation helpful? Give feedback.
-
Erlang has gained FIPS compatibility a decade ago. Then it took a while for it to get rebuilt on top of OpenSSL 3. RabbitMQ's Erlang compatibility guide does mention what modern version supports FIPS with OpenSSL 3. That does not mean that you can just use any Erlang 26.1 or 26.2 version. The FIPS mode must be enabled at compilation time. |
Beta Was this translation helpful? Give feedback.
-
@manoj4rabbbitmq please stop repeatedly filing the same issue or you will be banned from ever filing a new issue in this org. |
Beta Was this translation helpful? Give feedback.
The node could not connect to the Kubernetes API endpoint at
kubernetes.default.svc.cluster.local
because of an exception in the crypto module. Seemingly ECC 25519 is involved.When you use classic config peer discovery, nodes do not contact any external services.
Sounds like you need a FIPS-enabled Erlang runtime. Our team will soon provide a FIPS-enabled build with OpenSSL 3 but as part of the commercial edition only. Open source RabbitMQ and Erlang users must build (or, well, local an existing binary build) a compatible Erlang version with FIPS enabled.