Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
4ba2510
docs: Add global OTEL extension and backend service to Argo template
yesterdaysrebel Jun 15, 2026
0589ad9
fix: update OTEL extension version and backend image tag to v0.1.1
yesterdaysrebel Jun 15, 2026
7e3ec12
feat: add global OTEL extension configuration and variables for ArgoCD
yesterdaysrebel Jun 15, 2026
375ebf0
feat: update global OTEL extension configuration to be tenant-overrid…
yesterdaysrebel Jun 15, 2026
cf3c6cf
feat: update placeholder comments for OTEL extension configurations i…
yesterdaysrebel Jun 15, 2026
0a309d1
feat: refine OTEL extension configuration and improve formatting in A…
yesterdaysrebel Jun 15, 2026
58de9b5
feat: refactor OTEL extension configuration for improved readability …
yesterdaysrebel Jun 18, 2026
d5406c8
feat: update required Terraform version in main.tf for compatibility
yesterdaysrebel Jun 18, 2026
aca9d8e
feat: trim whitespace from OTEL extension version and backend tag var…
yesterdaysrebel Jun 18, 2026
ba63f8f
feat: add instructions for installing OTEL directly from argocd.yaml.tpl
yesterdaysrebel Jun 18, 2026
ed14832
feat: add preconditions for OTEL extension variables to prevent white…
yesterdaysrebel Jun 18, 2026
9b85769
docs: fix README OTEL usage examples
Copilot Jun 19, 2026
fabab4d
feat: add otel-extension-api backend service and release workflow
Copilot Jun 19, 2026
1e9fea9
fix: remove internal error details from proxy error responses; use np…
Copilot Jun 19, 2026
a512b7e
feat: update OTEL backend references to use new image and service names
yesterdaysrebel Jun 23, 2026
6875002
feat: update OTEL extension and backend version to v0.1.2
yesterdaysrebel Jun 23, 2026
a24cf8d
feat: ship OTEL extension frontend to every cluster
yesterdaysrebel Jul 20, 2026
3a03379
docs: clarify why the otel version default is a prerelease
yesterdaysrebel Jul 20, 2026
6b96806
Merge remote-tracking branch 'origin/main' into feature/global-otel-b…
Sep 4, 2026
177fdfd
feat: ship OTEL extension v0.1.3-rc2 (no status panel reload flash)
Sep 8, 2026
588eb2d
chore: drop the duplicate backend publisher and fix the stale OTEL docs
Sep 8, 2026
d4c8ea0
Merge remote-tracking branch 'origin/main' into feature/global-otel-b…
Sep 8, 2026
384f500
refactor: write the OTEL blocks in argocd.yaml.tpl instead of buildin…
Sep 9, 2026
c8ded11
refactor: keep main.tf's existing render style instead of rewriting it
Sep 9, 2026
b7990e9
chore: drop diff noise from main.tf
Sep 9, 2026
a10b761
fix: wildcard the extension RBAC instead of naming otel-extension
Sep 9, 2026
6a8a1fb
feat: default the OTEL extension to v0.1.3
Sep 9, 2026
49e5340
feat: default the OTEL extension to v0.1.4
Sep 9, 2026
29d14bd
feat: default the OTEL extension to v0.1.5
Sep 10, 2026
d88ec0c
docs: record what the RBAC and download-failure tests actually showed
Sep 10, 2026
f7e660c
fix: scope extension RBAC to otel-extension and the built-in roles
Sep 10, 2026
eed3d17
chore: drop the .gitignore this PR added
Sep 10, 2026
8ce77de
chore: drop EXTENSION_VERSION, which the installer never reads
Sep 10, 2026
d1a312c
docs: correct two stale claims in the README
Sep 10, 2026
af04708
docs: trim the OTEL comments down to what is not obvious from the code
Sep 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 15 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ wget -O argocd.yaml https://raw.githubusercontent.com/GlueOps/docs-argocd/main/a
- Replace `placeholder_tenant_key` with your tenant/company key. Example: `antoniostacos`
- Replace `placeholder_cluster_environment` with your cluster_environment name. Example: `nonprod`
- The `placeholder_argocd_oidc_client_secret_from_dex` that you specify needs to be the same one you use in the `platform.yaml` for ArgoCD. If they do not match you will not be able to login.
- The OTEL observability extension is **always installed** — there is no enable/disable input. It is defined in `argocd.yaml` and loaded by ArgoCD itself, so it applies to every Argo application without changing app templates.
- `otel_extension_version` pins the GitHub release tag of the extension bundle from [GlueOps/argo-cd-ui-extention](https://github.com/GlueOps/argo-cd-ui-extention). Optional; defaults to `v0.1.5`.
- The extension's **backend API is not deployed by this module**. It ships with the GlueOps platform chart as the `glueops-argocd-extension-backend` Application; this module only points `extension.config` at its in-cluster Service.
- If you are installing from the downloaded template directly instead of using Terraform, you must substitute every `placeholder_*` yourself. They are all ordinary scalar values, so `argocd.yaml.tpl` is valid YAML as downloaded. The OTEL extension config, its RBAC policies and its `server.extensions` block are written literally in the template -- only `placeholder_otel_extension_version` is substituted, and it is a plain string.

- Install ArgoCD

Expand All @@ -38,14 +42,21 @@ kubectl get pods -n glueops-core

```hcl
module "argocd_helm_values" {
source = "git::https://github.com/GlueOps/docs-argocd.git"
source = "git::https://github.com/GlueOps/docs-argocd.git?ref=v0.20.0"
tenant_key = "antoniostacos"
cluster_environment = "nonprod"
client_secret = "Zsbui/29YEqoGOzuI8snlqGcdaRYPSLocwLXDB5GhZY="
glueops_root_domain = "onglueops.com"
# Must match the dex client secret used in platform.yaml, or login will fail.
client_secret = "<dex argocd client secret>"
glueops_root_domain = "onglueops.com"
argocd_rbac_policies = " g, glueops-rocks:super_admins, role:admin\n"
argocd_app_version = "v3.2.12"
gatekeeper_tag = "v0.1.1"

# Optional. Defaults to v0.1.5.
otel_extension_version = "v0.1.5"
}

output "argocd_helm_values" {
value = module.argocd_yaml.argocd
value = module.argocd_helm_values.helm_values
}
```
25 changes: 25 additions & 0 deletions argocd.yaml.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ applicationSet:
configs:
params:
server.insecure: true
server.enable.proxy.extension: true
cm:
# @ignored
timeout.reconciliation: 10s
Expand Down Expand Up @@ -208,15 +209,39 @@ configs:
allowedAudiences:
- argocd
- toolbox
# The backend Service name and namespace are fixed constants in
# platform-helm-chart-platform; nothing here is per-cluster.
extension.config: |
extensions:
- name: otel-extension
backend:
services:
- url: http://argocd-extension-backend-api.glueops-core-argocd-extension-backend.svc.cluster.local:8000
rbac:
# -- A good reference for this is: https://argo-cd.readthedocs.io/en/stable/operator-manual/rbac/
# This default policy is for GlueOps orgs/teams only. Please change it to reflect your own orgs/teams.
# `development` is the project that all developers are expected to deploy under
# @default -- `''` (See [values.yaml])
# Extensions are denied unless a policy allows them. Only Argo CD built-in
# roles are referenced: custom roles come from each tenant's own
# argocd_rbac_policies, so naming one here would dangle on other clusters.
policy.csv: |
placeholder_argocd_rbac_policies
p, role:readonly, extensions, invoke, otel-extension, allow
p, role:admin, extensions, invoke, otel-extension, allow
# @ignored
server:
extensions:
enabled: true
# Pinned to the gpkg mirror: the chart defaults this installer image to
# quay.io, and a pull failure blocks argocd-server from starting at all.
image:
repository: quay.repo.gpkg.io/argoprojlabs/argocd-extension-installer
extensionList:
- name: otel-extension
env:
- name: EXTENSION_URL
value: "https://github.com/GlueOps/argo-cd-ui-extention/releases/download/placeholder_otel_extension_version/extension.tar.gz"
Comment thread
yesterdaysrebel marked this conversation as resolved.
# @ignored
metrics:
enabled: true
Expand Down
51 changes: 42 additions & 9 deletions main.tf
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
terraform {
required_version = ">= 1.2.0"

required_providers {
http = {
source = "hashicorp/http"
source = "hashicorp/http"
}
local = {
source = "hashicorp/local"
source = "hashicorp/local"
}
}
}
Expand Down Expand Up @@ -56,18 +58,49 @@ variable "gatekeeper_tag" {
description = "Image tag (SHA or semver) for ghcr.repo.gpkg.io/glueops/gatekeeper.platform.glueops.dev"
}

# The OTEL extension frontend is always on, for every cluster -- there is no
# enable/disable switch. That is safe because the frontend renders NOTHING when it
# has no links to show (see StatusPanel in GlueOps/argo-cd-ui-extention): a cluster
# whose backend is not up yet shows no panel at all, rather than an error box.
#
# Scope: this module configures the FRONTEND only. The backend (Deployment/Service
# argocd-extension-backend-api) is owned by platform-helm-chart-platform, which
# deploys it as an Argo CD Application into glueops-core-argocd-extension-backend.
# This module must never deploy a second copy of it.
variable "otel_extension_version" {
type = string
description = "GitHub release tag for the ArgoCD OTEL extension tarball."
default = "v0.1.5"

validation {
condition = trimspace(var.otel_extension_version) != ""
error_message = "otel_extension_version must be non-empty"
}

validation {
condition = length(regexall("\\s", trimspace(var.otel_extension_version))) == 0
error_message = "otel_extension_version must not contain whitespace"
}
}

locals {
otel_extension_version_trimmed = trimspace(var.otel_extension_version)
}


output "helm_values" {
value = replace(replace(replace(replace(replace(
replace(
replace(
data.local_file.argocd_template.content,
"placeholder_tenant_key", var.tenant_key),
replace(
data.local_file.argocd_template.content,
"placeholder_tenant_key", var.tenant_key),
"placeholder_cluster_environment", var.cluster_environment),
"placeholder_argocd_oidc_client_secret_from_dex", var.client_secret),
"placeholder_glueops_root_domain", var.glueops_root_domain),
" placeholder_argocd_rbac_policies", var.argocd_rbac_policies),
"placeholder_argocd_app_version", var.argocd_app_version),
"placeholder_gatekeeper_tag", var.gatekeeper_tag
"placeholder_argocd_oidc_client_secret_from_dex", var.client_secret),
"placeholder_glueops_root_domain", var.glueops_root_domain),
" placeholder_argocd_rbac_policies", var.argocd_rbac_policies),
"placeholder_argocd_app_version", var.argocd_app_version),
"placeholder_gatekeeper_tag", var.gatekeeper_tag),
"placeholder_otel_extension_version", local.otel_extension_version_trimmed
)
}
Loading