Build and push control-plane-operator container image. Auto-applies when testing CPO changes that require deploying to a live cluster.
This skill enables building and pushing custom control-plane-operator (CPO) images for testing changes in a live HyperShift environment.
This skill automatically applies when:
control-plane-operator/Source the environment file before using this skill:
source dev/claude-env.sh
Environment variables from dev/claude-env.sh:
| Variable | Description |
|---|---|
CPO_IMAGE_REPO | Container registry for CPO images |
RUNTIME | Container runtime (podman/docker) |
Use a tag that identifies the change (branch name, feature, or timestamp):
# Option 1: Use branch name
TAG=$(git rev-parse --abbrev-ref HEAD | tr '/' '-')
# Option 2: Use short commit hash
TAG=$(git rev-parse --short HEAD)
# Option 3: Use descriptive name + number for iterations
TAG="feature-name-1"
The CPO image uses Dockerfile.control-plane:
$RUNTIME build -f Dockerfile.control-plane --platform linux/amd64 -t $CPO_IMAGE_REPO:$TAG .
Note: The build runs make control-plane-operator and make control-plane-pki-operator inside the container, so you don't need to pre-build locally.
$RUNTIME push $CPO_IMAGE_REPO:$TAG
Build and push in one command:
TAG="my-fix-1" && $RUNTIME build -f Dockerfile.control-plane --platform linux/amd64 -t $CPO_IMAGE_REPO:$TAG . && $RUNTIME push $CPO_IMAGE_REPO:$TAG
When iterating on CPO fixes:
control-plane-operator/fix-1, fix-2, fix-3)The Dockerfile.control-plane builds:
control-plane-operator binarycontrol-plane-pki-operator binaryBoth are included in the final image.
The CPO image includes important capability labels that HyperShift uses:
io.openshift.hypershift.control-plane-operator-subcommands=trueio.openshift.hypershift.control-plane-operator.v2-isdefault=truego mod vendormake control-plane-operator$RUNTIME login quay.io