Updating a Prow cluster requires an improved Prow version. The Kubernetes Prow instance gets updated via a shell script. The shell script offers only a short list of the last pushed container tags and as a result, limits the versions to choose from. To cherry-pick updates, monitor Prow announcements to see when fixes or important changes are merged into the Kubernetes repository. This document describes how to update a Prow cluster using a cherry-picked Prow version.
To update a Prow cluster follow these steps:
- Follow this document for details to set up a Prow cluster.
- Go to the
kubernetes/test-infra
project and select a commit with the desired update for the Prow cluster. For example, use2c8e0dbb96b4c1a86d42275dfbed5474a6d05def
. - Open
starter.yaml
from the upstream repository in the Kubernetes project and copy new tags for these containers:- gcr.io/k8s-prow/hook
- gcr.io/k8s-prow/plank
- gcr.io/k8s-prow/sinker
- gcr.io/k8s-prow/deck
- gcr.io/k8s-prow/horologium
- gcr.io/k8s-prow/tide
- Copy the commit ID into a comment at the top of the file to keep track of the current release used for the deployments.
- Use your preferred diff tool to check and copy the stability update in a Prow component and additional configurations on existing components.
- Open both
config.yaml
in the current project andconfig.yaml
in the Kubernetes project and copy new tags for these containers:- gcr.io/k8s-prow/initupload
- gcr.io/k8s-prow/entrypoint
- gcr.io/k8s-prow/sidecar
- Open
Dockerfile
in the current project and update base image tag with new the tag for container from upstream repo.- gcr.io/k8s-prow/clonerefs
- When the new image is ready, copy its tag and paste it to
config.yaml
for gcr.io/k8s-prow/clonerefs container. - Use your preferred diff tool to check and copy the stability update in the Prow component and additional configurations for the existing components.
- Run this command to update Prow deployments:
kubectl apply -f prow/cluster/components
- Use the
update-config.sh {file_path}
script to apply the Prow configuration on a cluster. Run the following command:
./update-config.sh ../prow/config.yaml
- Make sure that the update was successful. For example, run
kubectl get pods
to check if it doesn't show errors on the updated test cluster and the dashboard is still reachable. - Create a pull request.
If after the update pods don't start, use the previous commit to bring back the previous deployments' version. Follow these steps:
- Run the following command to deploy the previously running containers back into the cluster.
kubectl apply -f prow/cluster/components
- Use the following command to bring the previous config back:
./update-config.sh ../prow/config.yaml
- Use
kubectl get pods
to monitor if the pods start.