Description
Describe the bug
When synchronizing RabbitMQ CRDs such as Exchange, Queue, and Binding using ArgoCD, there is no existing resource health check implemented for these.
For example, if a typo is made in the CRD, ArgoCD will consider it as Synced and OK from ArgoCD’s point of view, but on the RabbitMQ side, the resource creation will fail.
I understand this is related to ArgoCD, but I think it is relevant to discuss here.
ArgoCD currently implements a health check only for the Cluster resource: see ArgoCD RabbitmqCluster.
It would be useful to include health checks for other CRDs as well.
To Reproduce
Steps to reproduce the behavior:
Into a Kubernetes cluster with ArgoCD operator and RabbitMq operator installed
Given a project created in ArgoCD synchronizing RabbitMQ CRD from GIT :
- Create a CRD with a typo :
apiVersion: rabbitmq.com/v1beta1
kind: Exchange
metadata:
name: test-gbo-ajout4
namespace: my-namespace
spec:
name: test-gbo-ajout4
vhost: vhost
type: error #a typo here, should be fanout
durable: true
rabbitmqClusterReference:
name: mycluster
namespace: my-namespace
-
ArgoCD sync the CRD :
But besides, the status of the CRD is :
-
My CICD pipeline is checking the synchronization, if everything is synced, the pipeline succeed
In this case, it should not succeed, ArgoCD should check the status of the CRD
Expected behavior
ArgoCD should implement a health resource (can been seen with a heart in the UI :
By default, ArgoCD only implements for Cluster CRD : see https://github.com/argoproj/argo-cd/tree/master/resource_customizations/rabbitmq.com/RabbitmqCluster
What do you think to handle the implementation of this health check ?
As a workaround, I've implemented one by myself but not sure if correctly implemented.
Version and environment information
- RabbitMQ: 3.13.7
- RabbitMQ Cluster Operator: 2.10.0
- Kubernetes: v1.29.11+148a389 (Open shift)
- Argo CD : v2.10.18+3d900c7
Additional context
Using ArgoCD and RabbitMQ operators in Openshift
Activity
Zerpet commentedon Mar 13, 2025
As you rightly mention, this is related to ArgoCD. The healthcheck was contributed by a member of the community. You are welcome to make a contribution to ArgoCD, and get feedback from them regarding your implementation. From this Operator perspective, the status condition is the interface to determine whether the resource was applied correctly or not, and all resources have at least one status condition.