Operator that manages Scheduling, Scale and Performance addons for KubeVirt
The operator deploys and manages resources needed by these four components:
- Template Validator (You can read more about it here: Template Validator old repository
- Node Labeller
- Common Templates Bundle
- Metrics rules - Currently it is only a single Prometheus rule containing the count of all running VMs.
The ssp-operator
requires an Openshift cluster to run properly.
The Hyperconverged Cluster Operator automatically installs the SSP operator when deploying.
The operator can be installed manually by applying the file ssp-operator.yaml
from GitHub releases:
oc apply -f ssp-operator.yaml
To install the latest released version, the following commands can be used:
export SSP_VERSION=$(curl https://api.github.com/repos/kubevirt/ssp-operator/releases/latest | jq '.name' | tr -d '"')
oc apply -f https://github.com/kubevirt/ssp-operator/releases/download/${SSP_VERSION}/ssp-operator.yaml
To activate the operator, a CR needs to be created. An example is in config/samples/ssp_v1beta1_ssp.yaml.
The Make will try to install kustomize, however if it is already installed it will not reinstall it. In case of an error, make sure you are using at least v3 of kustomize, available here: https://kustomize.io/
To build the container image run:
make container-build
To upload the image to the default repository run:
make container-push
The repository and image name and tag can be changed with these variables:
export IMG_REPOSITORY=<registry>/<image_name> # for example: export IMG_REPOSITORY=quay.io/kubevirt/ssp-operator
export IMG_TAG=<image_tag> # for example: export IMG_TAG=latest
After the image is pushed to the repository, manifests and the operator can be deployed using:
make deploy
Please note that building and deploying the Template Validator requires a separate process
To build the container image run:
make build-template-validator-container
To upload the image to the default repository run:
make push-template-validator-container
The repository and image name and tag can be changed with these variables:
export VALIDATOR_REPOSITORY=<registry>/<image_name> # for example: export VALIDATOR_REPOSITORY=quay.io/kubevirt/kubevirt-template-validator
export VALIDATOR_IMG_TAG=<image_tag> # for example: export VALIDATOR_IMG_TAG=latest
You should also edit the deployment to pull the image you want, for example you can use this command:
oc set env deployment/ssp-operator VALIDATOR_IMAGE=$VALIDATOR_IMG
The operator can run locally on the developer's machine.
It will watch the cluster configured in a file pointed to by the $KUBECONFIG
.
make install # Install CRDs to the cluster
make run ENABLE_WEBHOOKS=false # Start the operator locally
When running locally, the validating webhooks that check the SSP CR are disabled. It is up to the developer to use correct SSP CRs.
The CRDs can be removed using:
make uninstall
To run unit tests, use this command:
make unittest
The functional tests can be run using command:
make functest
The following environment variables control how functional tests are run:
TEST_EXISTING_CR_NAME
andTEST_EXISTING_CR_NAMESPACE
- Can be used to set an existing SSP CR to be used during the tests. The CR will be modified, deleted and recreated during testing.SKIP_UPDATE_SSP_TESTS
- Skips tests that need to modify or delete the SSP CR. This is useful if the CR is owned by another operator.SKIP_CLEANUP_AFTER_TESTS
- Do not remove created resources when the tests are finished.TIMEOUT_MINUTES
andSHORT_TIMEOUT_MINUTES
- Can be used to increase the timeouts used.
When the API definition in api/v1beta1
is changed,
the generated code and CRDs need to be regenerated:
make generate manifests
The reconciliation can be paused by adding the following
annotation to the SSP
reosurce:
kubevirt.io/operator.paused: "true"
The operator will not react to any changes to the SSP
resource
or any of the watched resources. If a paused SSP
resource is deleted,
the operator will still cleanup all the dependent resources.