GitLab CI Review App Deploy Failed (Kubernetes)
Review app jobs deploy a per-MR environment to Kubernetes. They fail when the image cannot be pulled, the namespace or RBAC is missing, or the cluster has a transient rollout problem.
What this error means
The review app job fails during deploy with a Kubernetes error such as ImagePullBackOff, forbidden, namespace not found, or a timed-out rollout.
error: deployment "review-mr-42" exceeded its progress deadline
pods are not ready: ImagePullBackOff / Error from server (Forbidden)Common causes
Image cannot be pulled
A missing imagePullSecret or a not-yet-pushed image causes ImagePullBackOff.
RBAC or namespace missing
The service account lacks permissions, or the target namespace was not created.
Transient cluster hiccup during rollout
A momentary scheduling or node issue can fail a rollout that succeeds on retry.
How to fix it
Fix image access and namespace
Ensure the image is pushed and pullable, and the namespace and RBAC exist before rollout.
- Confirm the image tag was pushed in an earlier job.
- Create the namespace and an imagePullSecret for the registry.
- Grant the deploy service account the needed RBAC.
Gate review apps to MRs and clean up
Scope the review app to merge requests and stop the environment on close.
review:
environment:
name: review/${CI_COMMIT_REF_SLUG}
on_stop: stop_review
rules:
- if: '${CI_PIPELINE_SOURCE} == "merge_request_event"'How to prevent it
- Push images before the deploy job and configure imagePullSecrets.
- Provision namespaces and RBAC ahead of review app rollouts.
- Add on_stop cleanup so review environments do not pile up.