bug(repo-server): update-ca-certificates init container does not inherit spec.repo.resources
Maintainer antworten meist innerhalb von 1 Tag
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 75/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- go, kubernetes
- Bereich
- infrastructure
Rechercherichtung
Der Fehler steckt in controllers/argocd/openshift/openshift.go, in updateSystemCATrustBuilding(), wo der Init-Container update-ca-certificates ohne ein Resources-Feld erstellt wird. Vergleiche ihn damit, wie der Init-Container copyutil spec.repo.resources übernimmt, und prüfe getArgoRepoResources(cr) im Upstream-Reconciler. Fertig ist es, wenn der Container update-ca-certificates dieselben requests und limits wie spec.repo.resources trägt, was du mit dem jq-Befehl aus Schritt 3 bestätigen kannst.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Describe the bug
When configuring custom CA trust via spec.repo.systemCATrust on an ArgoCD resource, the operator injects an init container named update-ca-certificates into the argocd-repo-server pod. However, this init container is created with empty compute resources (resources: {}), even when spec.repo.resources (requests and limits) is explicitly defined in the CR.
This causes pod admission failures in namespaces governed by strict ResourceQuota policies requiring explicit CPU/memory requests and limits.
To Reproduce
Steps to reproduce the behavior:
- Create a namespace and a ConfigMap containing a custom CA certificate:
oc create configmap custom-ca --from-literal=ca.crt="-----BEGIN CERTIFICATE-----..."
- Deploy an ArgoCD instance with spec.repo.resources and spec.repo.systemCATrust
apiVersion: argoproj.io/v1beta1
kind: ArgoCD
metadata:
name: argocd-sample
spec:
repo:
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi
systemCATrust:
configMaps:
- name: custom-ca
- inspect the resulting repo-server deployment's init containers
oc get deployment argocd-sample-repo-server -o json | jq '.spec.template.spec.initContainers[] | {name: .name, resources: .resources}'
4, See error/output:
{
"name": "copyutil",
"resources": {
"limits": { "cpu": "500m", "memory": "512Mi" },
"requests": { "cpu": "100m", "memory": "128Mi" }
}
}
{
"name": "update-ca-certificates",
"resources": {}
}
Expected behavior The update-ca-certificates init container should inherit spec.repo.resources (requests and limits) identically to how copyutil inherits them and how upstream argocd-operator implements it via getArgoRepoResources(cr).
Screenshots N/A
Additional context
Root cause: In PR #987 (controllers/argocd/openshift/openshift.go), the downstream reconciler hook updateSystemCATrustBuilding() drops the upstream update-ca-certificates container to replace it with a RHEL-native container, but omits setting Resources on the new corev1.Container definition:
initContainer := corev1.Container{
Name: "update-ca-certificates",
Image: prodImage,
SecurityContext: argoutil.DefaultSecurityContext(),
VolumeMounts: ...,
Command: ...,
Args: ...,
// Missing: Resources field
}
Impact:
In environments with a ResourceQuota requiring resource limits/requests, the API server rejects pod creation with: failed quota: ...: must specify limits.cpu,limits.memory,requests.cpu,requests.memory for: update-ca-certificates.
Environment: Reproduced on OpenShift GitOps Operator v1.22.1 (introduced in v1.20.0 with PR #987).
- Vorherrschende Sprache
- Go
- Sterne
- 188
- Forks
- 362
- Ø Merge
- 6 T. 5 Std.
- Gemergte PRs (30 T.)
- 44
Entwicklungsumgebung
- Enthält ein Dockerfile oder eine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus redhat-developer/gitops-operator
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 86/100
redhat-developer/gitops-operator#1287 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Harden OpenShift manual-install SCC troubleshooting guidanceEvtl. wieder frei @olivergondza hat das vor 29 Tagen übernommen, und es ist kein Pull Request offen. Offen
redhat-developer/gitops-operator#1295 · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
redhat-developer/gitops-operator#634 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
NodePlacement or Toleration/NodeSelector not workingEvtl. vergeben @Pratik-Redhat-Tech hat das vor 39 Tagen übernommen. Offentriage:required
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
redhat-developer/gitops-operator#572 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in redhat-developer/gitops-operator
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
praetorian-inc/augustus#334 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
Maintainer antworten meist innerhalb von 1 Tag
-
TestTOMLBigFileParsesInLinearTime: a 1s wall-clock bound on a 3 MB parse fails under load (1.27s)Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100