From f74d1a8b5fdade88af869f05449be1212b81d35b Mon Sep 17 00:00:00 2001 From: Chris Farhood Date: Tue, 5 May 2026 16:53:42 +0000 Subject: [PATCH] Reference shared infra RBAC in deployment scripts PRI-750: update plugin repos to reference shared infra RBAC (PRI-695 follow-up) - deployment/e2e-ci-runner-rbac.yaml: replaced duplicate manifest with reference comment pointing to privilegedescalation/infra/base/rbac/e2e-ci-runner-headlamp-rbac.yaml - scripts/deploy-e2e-headlamp.sh: updated RBAC preflight comment and error message to reference infra path - scripts/teardown-e2e-headlamp.sh: added RBAC reference comment Infra RBAC is the source of truth managed by Flux GitOps. CI workflow unchanged (Hugh owns .github/workflows/). --- deployment/e2e-ci-runner-rbac.yaml | 46 ++++++------------------------ scripts/deploy-e2e-headlamp.sh | 6 ++-- scripts/teardown-e2e-headlamp.sh | 3 ++ 3 files changed, 15 insertions(+), 40 deletions(-) diff --git a/deployment/e2e-ci-runner-rbac.yaml b/deployment/e2e-ci-runner-rbac.yaml index 4095d3a..4f5aa3c 100644 --- a/deployment/e2e-ci-runner-rbac.yaml +++ b/deployment/e2e-ci-runner-rbac.yaml @@ -1,42 +1,12 @@ --- -# e2e-ci-runner-rbac.yaml +# RBAC for the GitHub Actions CI runner to manage E2E Headlamp instances. +# CI-only test fixture — NOT for production use. # -# Grants the GitHub Actions runner's service account (Arc Runners) the minimum -# permissions needed to deploy/teardown an E2E Headlamp instance in the -# headlamp-plugins-e2e namespace. +# This file is a REFERENCE ONLY. The canonical manifest lives in: +# privilegedescalation/infra/base/rbac/e2e-ci-runner-headlamp-rbac.yaml # +# The infra repo is managed by Flux GitOps and is the source of truth. +# Do not apply this file directly — it is kept here for developer reference only. +# +# E2E resources run in `privilegedescalation-dev` — nothing persists beyond a test run. # RBAC is managed via Flux from privilegedescalation/infra — do not apply manually. -# This manifest is a reference copy in the plugin repo. - -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: e2e-ci-runner - namespace: headlamp-plugins-e2e -rules: - - apiGroups: [""] - resources: ["configmaps", "serviceaccounts", "events"] - verbs: ["get", "list", "create", "delete"] - - apiGroups: ["apps"] - resources: ["deployments"] - verbs: ["get", "create", "delete"] - - apiGroups: [""] - resources: ["services"] - verbs: ["get", "create", "delete"] - - apiGroups: [""] - resources: ["pods"] - verbs: ["get", "list"] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: e2e-ci-runner - namespace: headlamp-plugins-e2e -subjects: - - kind: ServiceAccount - name: runners-privilegedescalation-gha-rs-no-permission - namespace: arc-runners -roleRef: - kind: Role - name: e2e-ci-runner - apiGroup: rbac.authorization.k8s.io diff --git a/scripts/deploy-e2e-headlamp.sh b/scripts/deploy-e2e-headlamp.sh index ddcd094..b8c93c2 100755 --- a/scripts/deploy-e2e-headlamp.sh +++ b/scripts/deploy-e2e-headlamp.sh @@ -11,7 +11,9 @@ # Prerequisites: # - Plugin built (dist/ exists with plugin-main.js + package.json) # - kubectl configured with cluster access -# - RBAC applied: kubectl apply -f deployment/e2e-ci-runner-rbac.yaml +# RBAC is managed via Flux from privilegedescalation/infra/base/rbac/e2e-ci-runner-headlamp-rbac.yaml. +# The infra repo is the source of truth — do not apply this file directly. +# Apply RBAC first: kubectl apply -f privilegedescalation/infra/base/rbac/e2e-ci-runner-headlamp-rbac.yaml # # Environment: # E2E_NAMESPACE — namespace for E2E Headlamp (default: headlamp-plugins-e2e) @@ -35,7 +37,7 @@ fi echo "Checking RBAC permissions in namespace '${E2E_NAMESPACE}'..." if ! kubectl auth can-i delete configmaps -n "$E2E_NAMESPACE" --quiet 2>/dev/null; then echo "ERROR: Missing RBAC — cannot delete configmaps in namespace '${E2E_NAMESPACE}'." >&2 - echo " Apply RBAC first: kubectl apply -f deployment/e2e-ci-runner-rbac.yaml" >&2 + echo " Apply RBAC first: kubectl apply -f privilegedescalation/infra/base/rbac/e2e-ci-runner-headlamp-rbac.yaml" >&2 exit 1 fi diff --git a/scripts/teardown-e2e-headlamp.sh b/scripts/teardown-e2e-headlamp.sh index 081b3ad..1af461e 100755 --- a/scripts/teardown-e2e-headlamp.sh +++ b/scripts/teardown-e2e-headlamp.sh @@ -3,6 +3,9 @@ # # Tears down the dedicated E2E Headlamp instance deployed by deploy-e2e-headlamp.sh. # +# RBAC is managed via Flux from privilegedescalation/infra/base/rbac/e2e-ci-runner-headlamp-rbac.yaml. +# The infra repo is the source of truth — do not apply this file directly. +# # Environment: # E2E_NAMESPACE — namespace to clean up (default: headlamp-plugins-e2e) # E2E_RELEASE — release/resource name prefix (default: headlamp-e2e)