Troubleshooting Components
Component Stuck in Provisioning
Symptom
Component shows build.appstudio.openshift.io/request: configure-pac annotation but never completes provisioning.
Possible Causes
-
Component
spec.containerImageis not set, either by the developer or the Image Controller if it is deployed on your Konflux instance.
Debugging Steps
-
Check the component status:
kubectl get component <component-name> -o yaml | grep -A10 "annotations:"Look for the
build.appstudio.openshift.io/statusannotation to see error details. -
If your Konflux instance has the Image Controller deployed, check if the
ImageRepositoryexists:kubectl get imagerepository <imagerepository-name> -o yamlIf this object does exist, ensure that its
labelsandstateare set with the following values:metadata: labels: appstudio.redhat.com/application: <application-name> appstudio.redhat.com/component: <component-name> status: state: readyIf ImageRepository was created via gitops (e.g. konflux-release-data repository), verify that its
annotationsare set with the following values (in the repository):metadata: annotations: image-controller.appstudio.redhat.com/update-component-image: 'true' -
Verify that
.spec.containerImageis set on the Component:kubectl get component <component-name> -o jsonpath='{.spec.containerImage}'
Solutions
-
Set the Component ContainerImage
Set the container image for the
Componentif your Konflux instances do not have the Image Controller enabled:kubectl patch component <component-name> --type=merge -p '{"spec":{"containerImage":"quay.io/your-org/your-repo"}}'You must provide image registry credentials if you are manually setting the component’s container image. See Using different from default image repository. -
Set the
ImageRepositoryAnnotations and LabelsIf your Konflux cluster does have the Image Controller deployed, set the correct
annotationsandlabelson Component’s associatedImageRepositoryobject (in the caseImageRepositorywas created gitops (e.g. konflux-release-data repository) set those there):metadata: annotations: image-controller.appstudio.redhat.com/update-component-image: 'true' labels: appstudio.redhat.com/application: <application-name> appstudio.redhat.com/component: <component-name>
PipelineRun Not Created After Push Event
Possible Causes
-
Component not onboarded - Webhook not configured, GitHub App not installed, or PaC Repository CR missing
-
Invalid PipelineRun YAML - Broken YAML syntax or validation errors in PipelineRun definitions
-
Rate limits - Git provider API rate limits exceeded
-
Repository secret is wrong - Repository secret was removed or renamed after onboarding
-
Git token expired - Repository token in the secret expired
Debugging Steps
-
Check the component status to see if it was properly onboarded:
kubectl get component <component-name> -o yaml | grep -A10 "annotations:"Look for the
build.appstudio.openshift.io/statusannotation to see error details. -
Check if the Pipelines as Code
Repositoryobject exists:kubectl get repository -n <namespace>This command will return all Repositoryobjects in your namespace. You will need to inspect individual records to identify the appropriate object and status. -
Check repository secret in the Pipelines as Code
Repositoryobject:kubectl get repository <repository-name> -o jsonpath='{.spec.git_provider.secret.name}'And verify that secret exists and has correct credentials:
kubectl get secret <secret-name> -n <namespace> -o yaml -
Verify
PipelineRun`definitions exist in your source code repository:ls .tekton/You should see YAML files containing PipelineRun definitions. During onboarding, these are typically named
<component-name>-on-push.yamland<component-name>-on-pull-request.yaml, but any valid filename can be used.
Solutions
-
Review Component Status:
The Component may not have completed the
Repositoryobject provisioning. Check component status for root causes and actions to take:kubectl get component <component-name> -o yaml | grep "build.appstudio.openshift.io/status" -
Re-onboard the
Component:Re-trigger the
PipelineRunpull request by adding theconfigure-pacannotation to theComponent:kubectl annotate component <component-name> build.appstudio.openshift.io/request=configure-pac -
Check Repository Credentials:
For repositories not using the GitHub App, ensure git credentials are configured and re-provision the component.
See Onboarding from GitLab or Onboarding from Forgejo for more information.
Component Cannot Be Deleted
Possible Causes
-
Finalizers not removed - Component has finalizers that prevent deletion
-
Dependent resources exist - Resources owned by the Component still exist
-
Controller not running - Build Service controller is not processing the deletion
-
Repository secret doesn’t exist - Secret for repository doesn’t exist
-
Operator has big workqueue - Operator was just restarted and has workqueue which has to be processed first
Debugging Steps
-
Check component finalizers:
kubectl get component <component-name> -o jsonpath='{.metadata.finalizers}'Common finalizers:
-
pac.component.appstudio.openshift.io/finalizer- Set by Build Service during PaC provisioning
-
-
Check for owned resources:
kubectl get repository -n <namespace> -o yaml kubectl get imagerepository -n <namespace> -o yamlThese commands will return all RepositoryandImageRepositoryobjects in your namespace. You will need to inspect individual records to identify the appropriate object and status.
Solutions
-
Wait for Finalizers to Process
Wait for the Build Service controller to process the deletion. If the controller is not running, the finalizers won’t be removed automatically.
-
Report issue
Finalizer shouldn’t be manually removed as it will leave orphaned resources in your cluster, and proper cleanup won’t be performed.