Teiid Operator for OpenShift/Kubernetes
- go v1.13+
- operator-sdk v0.15.0+
- buildah v1.14.2+
- golint
- Optional Docker Hub account
Using Code Ready Containers, create OpenShift environment. Take look at Code Ready Containers
Once you downloaded the CRC follow the below steps. It is expected that your laptop has 12GB of memory, 8 CPUS, 60GB of disk space available for this setup
crc stop
crc delete
crc config set memory 12288
crc config set cpus 8
crc setup
# create a new instance
crc start
# shut down the instance to adjust disk size
crc stop
# default size is 30, up it to 60
sudo qemu-img resize ~/.crc/machines/crc/crc +30G
# verify the new size
sudo qemu-img info ~/.crc/machines/crc/crc | grep 'virtual size'
# we're ready, start again and give cluster admin to the developer account
crc start
eval $(crc oc-env)
oc login -u developer -p developer
oc adm policy --as system:admin add-cluster-role-to-user cluster-admin developer
# after startup
# The below is to increase the disk size to 30GB
ssh -i ~/.crc/machines/crc/id_rsa core@`crc ip`
sudo xfs_growfs /sysroot
# confirm the new size of sysroot
df -h
exit
Create a new project:
oc new-project {your-project-name}
If you do not have/want a Docker Hub account, then you need to target your crc registry:
# add access and login
oc extract secret/router-ca --keys=tls.crt -n openshift-ingress-operator
sudo mkdir -p /etc/docker/certs.d/default-route-openshift-image-registry.apps-crc.testing/
sudo cp tls.crt /etc/docker/certs.d/default-route-openshift-image-registry.apps-crc.testing/
sudo chmod 644 /etc/docker/certs.d/default-route-openshift-image-registry.apps-crc.testing/tls.crt
buildah login -u developer -p $(oc whoami -t) default-route-openshift-image-registry.apps-crc.testing
export REGISTRY=default-route-openshift-image-registry.apps-crc.testing/`oc project --short`
Otherwise if you have want to use your Docker Hub account note that the Makefile defaults to your local username as your dockerid.
If your dockerid is differnt then do:
export REGISTRY={my-dockerid}
To set up your Teiid Operator workspace please do following tasks
git clone git@github.com:teiid/teiid-operator.git
cd teiid-operator
make install
This should install necessary Go
libraries and tools.
make build
When you run this command the Operator is built and a (docker) container image is created on your local machine under {REGISTRY}/teiid-operator:{current-version}
using the buildah
tool.
Before submitting PR, please be sure to generate, vet, format, and test your code. This all can be done with one command.
make ci
To deploy the Operator to running Openshift that is installed above or to any Openshift cluster that you are already connected using the oc
command, execute the following
make deploy
This will push the image to the regestry. By default it will be your Docker Hub account, then from there it will deploy into the available OpenShift instance.
NOTE: This is not going to use the OperatorHub, you are installing directly into the Namespace that you are connected to on the OpenShift. For OperatorHub see below.
To remove the Operator from locally deployed instance run following
make clean
This will remove all the artifacts that have been installed as part of the previous step.
https://github.com/operator-framework/community-operators/blob/master/docs/contributing.md
The directions here are very specific to testing the OLM based installation locally, to verify before it released to the OperatorHub.
The script below shows creating a CSV and then using it deploy to local OpenShift instance. At the end of the steps, you should be able to go to "OperatorHub" menu in the OpenShift 4.x and find the "Teiid" Operator inside it and install it.
Here the script is showing to move to version 0.2.0
from 0.1.0
but note that either current version or your working version may be different
# Generate CSV from Code
$operator-sdk generate csv --csv-channel beta --csv-version 0.2.0 --from-version 0.1.0 --operator-name teiid
# fix couple of attributes in CSV File
containerImage: fix this
teiid-operator/Image - fix this
# copy additional files into the olm-catalog directory
$cp crd into olm-catalog/teiid/{version}
$cp package olm-catalog/teiid/{version}
This should generate couple files in deploy/olm-catalog/teiid/{version}
folder that represents the CSV file. Make sure the image names match to the ones you are working with.
For this to work, one needs a quay.io
account as OperatorHub does not work with Docker Hub. By default this pushes to the quay repository quay.io/teiid/teiid-operator. If you have a different target repository set it via the QUAY_REPOSITORY env variable.
export QUAY_REPOSITORY=quay.io/my-org/teiid-operator
# push image to quay.io
$make quay-push
# start OpenShift 4.x and give developer few rols
$oc adm policy --as system:admin add-cluster-role-to-user cluster-admin developer
# quay login for testing
$curl -sH "Content-Type: application/json" -XPOST https://quay.io/cnr/api/v1/users/login -d '
{
"user": {
"username": "'"${QUAY_USERNAME}"'",
"password": "'"${QUAY_PASSWORD}"'"
}
}'
# deploy operator in OpenShift 4.x
$operator-courier push deploy/olm-catalog/teiid/0.2.0 ${user-name} teiid 0.2.0 "basic token_from_login"
# run Operator source to push the Operator to local OperatorHub for OKD
oc apply -f deploy/olm-catalog/teiid/teiid-operatorsource.yaml
at this point after sometime, the OpenShift instance's OperatorHub menu should have listing for "Teiid" Operator.
To see if the Operator CSV is up to the OLM team standards,run the tool and fix any issues that are found.
NOTE: For this to work, one needs to install the Postgres Operator and install a database and populate schema for the dv-customer
example, then run it. As below does deploy the example for verification purposes.
# Run the scorecard test (optional, only for testing)
$operator-sdk scorecard --bundle deploy/olm-catalog/teiid/0.2.0-SNAPSHOT/