![]() |
OpenShift Build and Usage Procedures |
1. Introduction
General
What follows is a tutorial on how to build images on an OpenShift cluster in a three-step process
(base image, build artifact image, target image). Note that all image
streams/build configs assume the OC project/namespace oaicicd-ran
.
If you want to regenerate images from modified sources, you have to rebuild the ran-build image. If you reinstalled dependencies, you have to restart from ran-base.
You first need to login. Do:
oc login -u <username> -p <password> --server <url>
RHEL8 Entitlements
To build the RAN images, we use the codeready-builder-for-rhel-8-x86_64-rpms
repository with all the proper development libraries.
This repository is not directly accessible from the UBI RHEL8 image (registry.access.redhat.com/ubi8/ubi:latest
).
Therefore, we need to copy certificates and subscription manager configuration files from a registered RHEL8 machine.
on a RHEL8
physical machine (or a virtual machine) connected to the OpenShift Cluster, recover the entitlement and the RH subscription manager configs:
oc create configmap rhsm-conf --from-file /etc/rhsm/rhsm.conf
oc create configmap rhsm-ca --from-file /etc/rhsm/ca/redhat-uep.pem
oc create secret generic etc-pki-entitlement --from-file /etc/pki/entitlement/{NUMBER_ON_YOUR_COMPUTER}.pem --from-file /etc/pki/entitlement/{NUMBER_ON_YOUR_COMPUTER}-key.pem
These configmaps and secret will be shared by all the build configs in your OC project. No need to do it each time. However, these files expire every month or so. If you have done a build on your OC project and try again a few weeks later, you may need to re-copy them. (The CI recopies them every time.)
oc delete secret etc-pki-entitlement
oc delete cm rhsm-conf
oc delete cm rhsm-ca
base
shared image
2. Build of Create an image stream and build config that specify image properties and build parameters, then start the build:
oc create -f openshift/ran-base-is.yaml
oc create -f openshift/ran-base-bc.yaml
oc start-build ran-base --from-file=<oai-repo-directory> --follow
The --from-file=<oai-repo-directory>
uploads the repository (from which the
build is done) as a binary blob. It is therefore possible to make
merges or other modifications and build an image.
build
shared image
3. Build of The same as for the base
image.
oc create -f openshift/ran-build-is.yaml
oc create -f openshift/ran-build-bc.yaml
oc start-build ran-build --from-file=<oai-repo-directory> --follow
4. Build of a target image
The same as for the base
image:
oc create -f openshift/oai-gnb-is.yaml
oc create -f openshift/oai-gnb-bc.yaml
oc start-build oai-gnb --from-file=<oai-repo-directory> --follow
5. Retrieval of Build Container Images and Build Artifacts
Build artifacts, such as build logs, can be retrieved by checking the logs of
the individual build steps. For example, for the ran-build
step, you can do:
oc logs ran-build-1-build
where ran-build-1-build
is the name of the ran-build
build (type oc get pods
to get a list of all pods).
It is also possible to retrieve the build logs from a running pod. Currently,
this is only used for the ran-base
step (the others using a python script to
scrape it from stdout):
oc create -f openshift/ran-base-log-retrieval.yaml
oc rsync ran-base-log-retrieval:/oai-ran/cmake_targets/log cmake_targets/log/ran-base
oc delete -f openshift/ran-base-log-retrieval.yaml
The images are uploaded into the OpenShift image registry. To download, login using podman, then pull an image:
oc whoami -t | sudo podman login -u <username> --password-stdin <url> --tls-verify=false
sudo podman pull <url>/oaicicd-ran/<image>:<tag> --tls-verify=false
sudo podman logout <url>
The <image>
could be oai-gnb
, and the <tag>
ci-temp
.
6. Deployment using HELM Charts
CAUTION: even more experimental.
Helm charts are located in another repository:
git clone https://github.com/OPENAIRINTERFACE/openair-k8s.git
cd openair-k8s
git checkout helm-deployment-S6a-S1C-S1U-in-network-18-with-enb
helm install mme /path-to-your-cloned/openair-k8s/charts/oai-mme/