feat: Add global OTEL extension, backend service, and release automation to Argo template#53
feat: Add global OTEL extension, backend service, and release automation to Argo template#53yesterdaysrebel wants to merge 16 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
This pull request updates the Argo CD Helm values template and accompanying documentation to enable a global Argo CD UI extension (OTEL) and deploy an in-cluster backend service that the extension calls.
Changes:
- Enables Argo CD’s proxying for extension backends and adds extension configuration in
configs.cm. - Adds Argo CD RBAC rules to allow invoking the
otel-extension. - Deploys an
otel-extension-apiDeployment and Service viaextraObjects, and documents the new placeholders inREADME.md.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| README.md | Documents new placeholders and explains that the OTEL extension is configured globally. |
| argocd.yaml.tpl | Enables the extension feature, configures the extension + RBAC, and adds Kubernetes resources for the extension backend API. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
a3a1322 to
4ba2510
Compare
…n ArgoCD templates
|
@copilot ## Pull request overview In README.md: The manual-install note references the downloaded file as In README.md: The Terraform module example adds OTEL inputs, but it still omits required module inputs ( |
Addressed in |
|
@copilot ## Pull request overview Changes:
Reviewed changesCopilot reviewed 11 out of 11 changed files in this pull request and generated 7 comments. Show a summary per fileFileDescription
|
Implemented in the latest commits. Added:
|
| variable "otel_backend_tag" { | ||
| type = string | ||
| description = "Image tag (SHA or semver) for ghcr.io/glueops/argocd-extension-backend-api" | ||
| default = "v0.1.1" | ||
| } |
| otel_extension_config = var.otel_enabled ? join("\n", [ | ||
| " extension.config: |", | ||
| " extensions:", | ||
| " - name: otel-extension", | ||
| " backend:", | ||
| " services:", | ||
| " - url: http://argocd-extension-backend-api.glueops-core.svc.cluster.local:8000", | ||
| ]) : "" |
| " name: argocd-extension-backend-api", | ||
| " namespace: glueops-core", | ||
| " labels:", | ||
| " app.kubernetes.io/name: argocd-extension-backend-api", |
| " selector:", | ||
| " matchLabels:", | ||
| " app.kubernetes.io/name: argocd-extension-backend-api", |
| " metadata:", | ||
| " labels:", | ||
| " app.kubernetes.io/name: argocd-extension-backend-api", |
| " containers:", | ||
| " - name: argocd-extension-backend-api", | ||
| " image: \"ghcr.io/glueops/argocd-extension-backend-api:placeholder_otel_backend_tag\"", | ||
| " imagePullPolicy: IfNotPresent", |
| " name: argocd-extension-backend-api", | ||
| " namespace: glueops-core", | ||
| " labels:", | ||
| " app.kubernetes.io/name: argocd-extension-backend-api", |
| " selector:", | ||
| " app.kubernetes.io/name: argocd-extension-backend-api", |

This PR enables the ArgoCD OTEL UI extension globally, deploys a purpose-built in-cluster backend service (
otel-extension-api) that the extension calls, and adds release automation to publish the backend container image to GHCR.Changes Made
argocd.yaml.tplserver.enable.proxy.extension)extraObjectsmain.tfotel_enabled,otel_extension_version,otel_backend_tag, andtempo_base_urlinput variables (OTEL opt-in defaults tofalse)otel_enabled = trueoutput preconditionguards for OTEL inputs with whitespace trimmingrequired_version = ">= 1.2.0"Terraform constraintbackend/src/server.js— Node.js/Express server proxying/prometheus/*→PROMETHEUS_BASE_URLand/tempo/*→TEMPO_BASE_URL, with a/healthzhealth checkpackage.json— Express + http-proxy-middleware dependenciesDockerfile— Node 20 Alpine container imageREADME.md— Documents all endpoints and environment variables.github/workflows/release.ymlghcr.io/glueops/argocd-otel-extension-apito GHCR on every published release usingdocker/build-push-actionREADME.md