diff --git a/deployment/e2e-ci-runner-rbac.yaml b/deployment/e2e-ci-runner-rbac.yaml index 06888b8..4f5aa3c 100644 --- a/deployment/e2e-ci-runner-rbac.yaml +++ b/deployment/e2e-ci-runner-rbac.yaml @@ -1,46 +1,12 @@ --- -# RBAC for the GitHub Actions CI runner to manage the E2E Headlamp instance. +# RBAC for the GitHub Actions CI runner to manage E2E Headlamp instances. # CI-only test fixture — NOT for production use. # -# Grants the ARC runner service account permissions in the privilegedescalation-dev -# namespace to deploy and tear down a dedicated Headlamp instance via Helm. +# 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. -# -# Plugin is loaded via ConfigMap volume mount — no custom Docker images. -# -# Note: This RBAC is mirrored in privilegedescalation/infra (base/rbac/) -# and managed by Flux GitOps. The infra repo is the source of truth. -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: e2e-ci-runner - namespace: privilegedescalation-dev -rules: - # Helm needs to manage these resources for the Headlamp chart - - apiGroups: ["apps"] - resources: ["deployments"] - verbs: ["get", "list", "create", "update", "patch", "delete", "watch"] - - apiGroups: [""] - resources: ["services", "serviceaccounts", "configmaps", "secrets", "events"] - verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] - - apiGroups: [""] - resources: ["pods"] - verbs: ["get", "list", "watch"] - # Token creation for E2E test auth - - apiGroups: [""] - resources: ["serviceaccounts/token"] - verbs: ["create"] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: e2e-ci-runner-binding - namespace: privilegedescalation-dev -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 \ No newline at end of file +# RBAC is managed via Flux from privilegedescalation/infra — do not apply manually. diff --git a/scripts/deploy-e2e-headlamp.sh b/scripts/deploy-e2e-headlamp.sh index 528c017..9f29dc2 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: privilegedescalation-dev) @@ -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 b8ed7e6..59654e6 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: privilegedescalation-dev) # E2E_RELEASE — release/resource name prefix (default: headlamp-e2e)