gitops-operator
gitops-operator copied to clipboard
Server ingress not setting `ingressClassName` once ArgoCD instance gets updated with the field
Describe the bug
We are using Red Hat OpenShift GitOps operator on stable channel,with automatic updates, exactly openshift-gitops-operator.v1.7.4.
Our ArgoCD instance uses the Ingress object in the spec.server config to publish the server.
We have just upgraded to OCP 4.12.33, and obtained a prometheus alert called IngressWithoutClassName, and the reason is that the ingress created by the openshift-gitops-operator was not setting the ingressClassName.
To resolve the alert, we have updated our ArgoCD instance to include the missing ingressClassName field:
apiVersion: argoproj.io/v1alpha1
kind: ArgoCD
metadata:
name: argocd
spec:
server:
host: gitops.example.net
ingress:
annotations:
cert-manager.io/cluster-issuer: letsencrypt-production
external-dns.alpha.kubernetes.io/target: gitops.apps.example-cluster.example.net
enabled: true
ingressClassName: openshift-default ## THIS
tls:
- hosts:
- gitops.example.net
secretName: gitops.example.net-cert
...
However, the ingress created by openshift-gitops-operator is not updated on the next operator reconcile:
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
annotations:
cert-manager.io/cluster-issuer: letsencrypt-production
external-dns.alpha.kubernetes.io/target: gitops.apps.example-cluster.example.net
name: argocd-server
spec:
tls:
- hosts:
- gitops.example.net
secretName: gitops.example.net-cert
rules:
- host: gitops.example.net
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: argocd-server
port:
name: http
Expected behavior
I would expect, that after adding the field spec.server.ingress.ingressClassName to the ArgoCD instance, openshift-gitops-operator would reconcile the Ingress and add the ingressClassName field to the Ingress resource:
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
annotations:
cert-manager.io/cluster-issuer: letsencrypt-production
external-dns.alpha.kubernetes.io/target: gitops.apps.example-cluster.example.net
name: argocd-server
spec:
ingressClassName: openshift-default ## THIS
tls:
- hosts:
- gitops.example.net
secretName: gitops.example.net-cert
rules:
- host: gitops.example.net
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: argocd-server
port:
name: http
Screenshots
Additional context N/A
Was able to reproduce this, made corresponding jira for this here: https://issues.redhat.com/browse/GITOPS-3412