This repository contains source code and resource manifests to build Federation-v2 images using ci-operator as part of the OpenShift build process.
This repository also contains exploratory work to deploy Federation-v2 as an operator using OLM.
This repository is the canonical store for manifests that appear on operatorhub.io and the in-cluster OperatorHub in OpenShift 4. In turn, the different OperatorHub locations are all populated from the community-operators repository. Here's an example of how a change makes its way into this repository and then into OperatorHub:
- Changes are made via a pull request to this repository and merged
- Someone uses the
scripts/populate-community-operators.sh
script to update their local fork of thecommunity-operators
repo with the latest manifests in thecommunity-operators
andupstream-community-operators
directories - The same person makes a pull request to the
community-operators
repository with the latest version of the manifests - Once the pull request to
community-operators
is merged:- The OperatorHub team manually updates operatorhub.io
- OpenShift 4.x clusters pick up the change automatically within 1 hour
- The
stub.go
andstub_test.go
files are intentionally-non-compileable stub files that contain imports to drivedep
to put the right things into the vendor directory - The
vendor/
directory holds a pinned version of federation-v2 and its dependencies - The
Dockerfile
in the root directory is used to build enterprise images and performs binary builds only - The
upstream-manifests/
directory contains manifests to configure OLM to deploy federation-v2 _using the upstream images; this is the directory that populates manifests in OperatorHub - The
olm-testing/
directory contains aDockerfile
for building an operator registry that hosts the OLM manifests - The
scripts/
directory holds scripts to populatemanifests
andupstream-manifests
, the community-operators repo, push operator registries, etc.
This project has tooling allowing you to develop against your own image repositories in quay.io without having to make local changes. Quick development guide follows.
You must have:
- An OpenShift 4.0 cluster and cluster-admin rights for that cluster
- The
federation-test
namespace must exist in your cluster
- The
- Your own quay.io account and the following image repositories under that account:
origin-federation-controller
federation-operator-registry
- The
kubectl
binary in yourPATH
Use the scripts/push-operator-registry.sh
script to push an image containing
an operator registry. This script takes your quay.io account name as an argument:
$ ./scripts/push-operator-registry.sh pmorie
Building operator registry with tag quay.io/pmorie/federation-operator-registry
Sending build context to Docker daemon 53.34MB
Step 1/4 : FROM quay.io/openshift/origin-operator-registry:latest
...
Note, this script accepts a parameter for the name of the repository to push to; use this to inject your quay account name.
Run the scripts/install-using-catalog-source.sh
script to install federation
into the federation-test
namespace using OLM. This script takes your quay
account name as an argument, and optionally the type of deployment to subscribe
to:
$ scripts/install-using-catalog-source.sh pmorie <namespaced|cluster-scoped>
catalogsource.operators.coreos.com/federation created
operatorgroup.operators.coreos.com/namespaced-federation created
subscription.operators.coreos.com/namespaced-federation-sub created
This script:
- Configures a
CatalogSource
for OLM that references the operator registry you built - Creates an
OperatorGroup
- Creates a
Subscription
to the operator that drives OLM to install it in your namespace
Note, if you run this script without an argument, you will get federation deployed in a namespaced scope. To deploy the cluster-scoped version, you should run:
$ ./scripts/install-using-catalog-source.sh pmorie cluster-scoped
catalogsource.operators.coreos.com/federation created
operatorgroup.operators.coreos.com/cluster-scoped-federation created
subscription.operators.coreos.com/cluster-scoped-federation-sub created