Managed Cluster Validating Webhooks (MCVW) is deployed into Hypershift environments via several different components.
- The webhook admission service is deployed into each hosted control plane (HCP) namespace on Hypershift management clusters, via package-operator
- The
ValidatingWebhookConfigurationresources are deployed directly onto Hypershift hosted clusters.
The above components are both installed via a package operator (PKO) package. The package is distributed to Hypershift Management Clusters via an Advanced Cluster Management policy. These resources will be discussed in the section below.
The PKO package consists of:
- a manifest which lists the phases involved in the package installation, any availability and promotion tests.
- a resource bundle which contains all the resources needed for MCVW to run in the HCP namespace, as well as the ValidatingWebhookConfigurations installed on the hosted cluster. This bundle is dynamically generated by resources.go. Each resource is annotated with a phase so that PKO knows during which phase the resource should be installed.
- a Containerfile which builds the PKO package image.
You can manually rebuild or generate the resource bundle by running:
make packageYou can manually build the PKO package image by running:
make IMG_ORG=<username> build-package-imageNote that the resulting package image will follow the naming convention quay.io/$USER/managed-cluster-validating-webhooks-hs-package
and can be pushed to Quay for testing if needed.
Once a package has been built (and pushed to a public image repository) it can be manually installed on a PKO-running cluster by creating a simple Package spec:
apiVersion: package-operator.run/v1alpha1
kind: Package
metadata:
name: validation-webhook
namespace: validation-webhook
spec:
image: quay.io/$USER/managed-cluster-validating-webhooks-hs-package:$TAGOn Hypershift, the Package resource is distributed to all HCP Namespaces via a SelectorSyncSet containing ACM Policy.
The application of the SelectorSyncSet to Hive clusters (in turn distributing it to the Hypershift service clusters) is performed by app-interface.
This section describes the main steps that enable a CI/CD flow for managed-cluster-validating-webhooks:
- A new commit is merged to the MCVW repository.
- This triggers app-interface to call the MCVW build_deploy.sh script.
- The
build_deploy.shscript builds a new MCVW image and a new PKO package. Each are tagged with the same git short hash representing the commit that was just merged. - The
managed-cluster-validating-webhooks-hypershiftSaaS resource template in app-interface will roll out the latest templated SelectorSyncSet to staging/integration Hive shards. TheIMAGE_DIGESTvalue will be replaced by the git short hash of the latest commit; therefore, the PKO image referenced will be the one built by the earlier step. - Because the ACM Policy has changed, the Policy will be updated on all Hypershift Management Clusters. This will result in the
Packageresource updating in every HCP Namespace to reference the new PKO image. - PKO will download that PKO image and install or update the resources contained within.