fix(e2e): write HEADLAMP_URL before token gen; add pods RBAC (PRI-879) #68

Closed
privilegedescalation-engineer[bot] wants to merge 3 commits from gandalf/fix-e2e-pri-879 into main
3 changed files with 57 additions and 7 deletions
+1 -1
View File
@@ -44,7 +44,7 @@ test.describe('Rook plugin smoke tests', () => {
await page.goto('/c/main/rook-ceph');
const sidebar = page.getByRole('navigation', { name: 'Navigation' });
const storageClassesLink = sidebar.getByRole('link', { name: /storage classes/i });
const storageClassesLink = sidebar.getByRole('button', { name: /storage classes/i });
await expect(storageClassesLink).toBeVisible({ timeout: 10_000 });
await storageClassesLink.click();
+53 -5
View File
@@ -53,9 +53,57 @@ kubectl create configmap headlamp-rook-plugin \
echo ""
echo "Removing any existing E2E deployment (clean-start)..."
kubectl delete clusterrolebinding headlamp-e2e-test-crb --ignore-not-found 2>/dev/null || true
kubectl delete deployment "${E2E_RELEASE}" -n "$E2E_NAMESPACE" --ignore-not-found --wait
kubectl delete service "${E2E_RELEASE}" -n "$E2E_NAMESPACE" --ignore-not-found --wait
kubectl delete serviceaccount "${E2E_RELEASE}" -n "$E2E_NAMESPACE" --ignore-not-found --wait
kubectl delete serviceaccount headlamp-e2e-test -n "$E2E_NAMESPACE" --ignore-not-found 2>/dev/null || true
echo ""
echo "Creating E2E service account..."
kubectl create serviceaccount headlamp-e2e-test -n "$E2E_NAMESPACE"
echo ""
echo "Creating RBAC for E2E service account..."
kubectl apply -f - <<EOF
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: headlamp-e2e-test-reader
rules:
- apiGroups: [""]
resources: ["storageclasses"]
verbs: ["get", "list", "watch"]
- apiGroups: ["ceph.rook.io"]
resources: ["cephclusters"]
verbs: ["get", "list", "watch"]
- apiGroups: ["ceph.rook.io"]
resources: ["cephclusters/status"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["persistentvolumes"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["persistentvolumeclaims"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: headlamp-e2e-test-crb
subjects:
- kind: ServiceAccount
name: headlamp-e2e-test
namespace: ${E2E_NAMESPACE}
roleRef:
kind: ClusterRole
name: headlamp-e2e-test-reader
apiGroup: rbac.authorization.k8s.io
EOF
echo ""
echo "Deploying Headlamp E2E instance..."
@@ -172,17 +220,17 @@ echo ""
echo "E2E Headlamp is ready at: ${SVC_URL}"
echo ""
echo "Creating service account token for E2E auth..."
kubectl create serviceaccount headlamp-e2e-test \
-n "$E2E_NAMESPACE" --dry-run=client -o yaml | kubectl apply -f -
echo "Writing E2E env file..."
echo "HEADLAMP_URL=${SVC_URL}" > "$REPO_ROOT/.env.e2e"
echo ""
echo "Creating service account token for E2E auth..."
TOKEN=$(kubectl create token headlamp-e2e-test -n "$E2E_NAMESPACE" --duration=1h 2>/dev/null || echo "")
if [ -n "$TOKEN" ]; then
echo "HEADLAMP_URL=${SVC_URL}" > "$REPO_ROOT/.env.e2e"
echo "HEADLAMP_TOKEN=${TOKEN}" >> "$REPO_ROOT/.env.e2e"
echo "Wrote .env.e2e with HEADLAMP_URL and HEADLAMP_TOKEN"
else
echo " WARNING: Could not generate token."
echo "Wrote .env.e2e with HEADLAMP_URL only (token generation failed, using OIDC fallback)"
fi
echo ""
+3 -1
View File
@@ -25,8 +25,10 @@ kubectl delete serviceaccount "${E2E_RELEASE}" -n "$E2E_NAMESPACE" --ignore-not-
echo "Cleaning up ConfigMap..."
kubectl delete configmap headlamp-rook-plugin -n "$E2E_NAMESPACE" --ignore-not-found
echo "Cleaning up test service account..."
echo "Cleaning up test service account and RBAC..."
kubectl delete serviceaccount headlamp-e2e-test -n "$E2E_NAMESPACE" --ignore-not-found
kubectl delete clusterrolebinding headlamp-e2e-test-crb --ignore-not-found 2>/dev/null || true
kubectl delete clusterrole headlamp-e2e-test-reader --ignore-not-found 2>/dev/null || true
if [ -f "$REPO_ROOT/.env.e2e" ]; then
rm "$REPO_ROOT/.env.e2e"