Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 56d10a1d40 | |||
| 1f02811731 |
@@ -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.
|
# CI-only test fixture — NOT for production use.
|
||||||
#
|
#
|
||||||
# Grants the ARC runner service account permissions in the privilegedescalation-dev
|
# This file is a REFERENCE ONLY. The canonical manifest lives in:
|
||||||
# namespace to deploy and tear down a dedicated Headlamp instance via Helm.
|
# 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.
|
# E2E resources run in `privilegedescalation-dev` — nothing persists beyond a test run.
|
||||||
#
|
# RBAC is managed via Flux from privilegedescalation/infra — do not apply manually.
|
||||||
# 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
|
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ spec:
|
|||||||
- from:
|
- from:
|
||||||
- namespaceSelector:
|
- namespaceSelector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
kubernetes.io/metadata.name: kube-system
|
kubernetes.io/metadata.name: headlamp
|
||||||
- podSelector:
|
- podSelector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
component: kube-apiserver
|
component: kube-apiserver
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ spec:
|
|||||||
- from:
|
- from:
|
||||||
- namespaceSelector:
|
- namespaceSelector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
kubernetes.io/metadata.name: kube-system
|
kubernetes.io/metadata.name: headlamp
|
||||||
- podSelector:
|
- podSelector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
component: kube-apiserver
|
component: kube-apiserver
|
||||||
|
|||||||
@@ -318,7 +318,7 @@ spec:
|
|||||||
- from:
|
- from:
|
||||||
- namespaceSelector:
|
- namespaceSelector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
kubernetes.io/metadata.name: kube-system
|
kubernetes.io/metadata.name: headlamp
|
||||||
- podSelector:
|
- podSelector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
component: kube-apiserver
|
component: kube-apiserver
|
||||||
|
|||||||
+3
-3
@@ -41,8 +41,8 @@ The default base URL is `https://headlamp.animaniacs.farh.net`. Override with `H
|
|||||||
### Option 2: K8s bearer token (port-forward)
|
### Option 2: K8s bearer token (port-forward)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
kubectl port-forward -n kube-system svc/headlamp 4466:80
|
kubectl port-forward -n headlamp svc/headlamp 4466:80
|
||||||
export HEADLAMP_TOKEN=$(kubectl create token headlamp -n kube-system)
|
export HEADLAMP_TOKEN=$(kubectl create token headlamp -n headlamp)
|
||||||
HEADLAMP_URL=http://localhost:4466 npm run e2e
|
HEADLAMP_URL=http://localhost:4466 npm run e2e
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -143,7 +143,7 @@ cp .env.example .env
|
|||||||
|
|
||||||
# 3. Set environment variables
|
# 3. Set environment variables
|
||||||
export HEADLAMP_URL=https://your-headlamp-instance.com
|
export HEADLAMP_URL=https://your-headlamp-instance.com
|
||||||
export HEADLAMP_TOKEN=$(kubectl create token headlamp -n kube-system)
|
export HEADLAMP_TOKEN=$(kubectl create token headlamp -n headlamp)
|
||||||
|
|
||||||
# 4. Run tests
|
# 4. Run tests
|
||||||
npm run e2e
|
npm run e2e
|
||||||
|
|||||||
@@ -11,7 +11,9 @@
|
|||||||
# Prerequisites:
|
# Prerequisites:
|
||||||
# - Plugin built (dist/ exists with plugin-main.js + package.json)
|
# - Plugin built (dist/ exists with plugin-main.js + package.json)
|
||||||
# - kubectl configured with cluster access
|
# - 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:
|
# Environment:
|
||||||
# E2E_NAMESPACE — namespace for E2E Headlamp (default: privilegedescalation-dev)
|
# E2E_NAMESPACE — namespace for E2E Headlamp (default: privilegedescalation-dev)
|
||||||
@@ -35,7 +37,7 @@ fi
|
|||||||
echo "Checking RBAC permissions in namespace '${E2E_NAMESPACE}'..."
|
echo "Checking RBAC permissions in namespace '${E2E_NAMESPACE}'..."
|
||||||
if ! kubectl auth can-i delete configmaps -n "$E2E_NAMESPACE" --quiet 2>/dev/null; then
|
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 "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
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,9 @@
|
|||||||
#
|
#
|
||||||
# Tears down the dedicated E2E Headlamp instance deployed by deploy-e2e-headlamp.sh.
|
# 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:
|
# Environment:
|
||||||
# E2E_NAMESPACE — namespace to clean up (default: privilegedescalation-dev)
|
# E2E_NAMESPACE — namespace to clean up (default: privilegedescalation-dev)
|
||||||
# E2E_RELEASE — release/resource name prefix (default: headlamp-e2e)
|
# E2E_RELEASE — release/resource name prefix (default: headlamp-e2e)
|
||||||
|
|||||||
Reference in New Issue
Block a user