Commit 0e9455b7 authored by Robert Schmidt's avatar Robert Schmidt

Update README.md

parent 01add24b
<table style="border-collapse: collapse; border: none;"> # 1. Introduction
<tr style="border-collapse: collapse; border: none;">
<td style="border-collapse: collapse; border: none;">
<a href="http://www.openairinterface.org/">
<img src="../doc/images/oai_final_logo.png" alt="" border=3 height=50 width=150>
</img>
</a>
</td>
<td style="border-collapse: collapse; border: none; vertical-align: center;">
<b><font size = "5">OpenShift Build and Usage Procedures</font></b>
</td>
</tr>
</table>
----- ## General
**CAUTION: this is experimental. Still a lot to be done.** 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.
# 1. Build pre-requisites # You first need to login. Do:
```bash
oc login -u <username> -p <password> --server <url>
```
To build our RAN images, we SHALL use the `codeready-builder-for-rhel-8-x86_64-rpms` repository with all the proper development libraries. ## 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`). 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.
So we need to copy from a register RHEL8 machine certificates and subsccription manager configuration files. on a `RHEL8` physical machine (or a virtual machine) connected to the OpenShift Cluster, recover the entitlement and the RH subscription manager configs:
SO on a `RHEL8` physical machine (or a virtual machine) connected to the OpenShift Cluster, recover the entitlement and the RH subscription manager configs:
```bash ```bash
oc create configmap rhsm-conf --from-file /etc/rhsm/rhsm.conf oc create configmap rhsm-conf --from-file /etc/rhsm/rhsm.conf
...@@ -35,9 +30,10 @@ oc create configmap rhsm-ca --from-file /etc/rhsm/ca/redhat-uep.pem ...@@ -35,9 +30,10 @@ 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 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. 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
**CAUTION: 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**. 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.)
```bash ```bash
oc delete secret etc-pki-entitlement oc delete secret etc-pki-entitlement
...@@ -45,55 +41,69 @@ oc delete cm rhsm-conf ...@@ -45,55 +41,69 @@ oc delete cm rhsm-conf
oc delete cm rhsm-ca oc delete cm rhsm-ca
``` ```
**LAST POINT: your OC project SHALL be `oai`.** # 2. Build of `base` shared image
# 2. Build the Builder shared image # Create an image stream and build config that specify image properties and build parameters, then start the build:
```bash
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
```
In our Eurecom/OSA environment we need to pass a GIT proxy. 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.
2 things are impacted by this situation: # 3. Build of `build` shared image
* In `openshift/oai-ran-rh8-build-config.yml` file The same as for the `base` image.
* `httpProxy: http://proxy.eurecom.fr:8080`
* `httpsProxy: https://proxy.eurecom.fr:8080`
* Add a environment variable to the build config
```bash ```bash
oc apply -f openshift/oai-ran-rh8-image-stream.yml oc create -f openshift/ran-build-is.yaml
oc apply -f openshift/oai-ran-rh8-build-config.yml oc create -f openshift/ran-build-bc.yaml
oc set env bc/oai-ran-rhel8-build-config NEEDED_GIT_PROXY=http://proxy.eurecom.fr:8080 oc start-build ran-build --from-file=<oai-repo-directory> --follow
oc start-build oai-ran-rhel8-build-config --follow
``` ```
In case you do NOT require a GIT proxy: **you SHALL remove the 2 lines in `openshift/oai-ran-rh8-build-config.yml` file.** # 4. Build of a target image
And no need to add a `NEEDED_GIT_PROXY` variable to the build config. The same as for the `base` image:
```bash ```bash
oc apply -f openshift/oai-ran-rh8-image-stream.yml oc create -f openshift/oai-gnb-is.yaml
oc apply -f openshift/modified-oai-ran-rh8-build-config.yml oc create -f openshift/oai-gnb-bc.yaml
oc start-build oai-ran-rhel8-build-config --follow oc start-build oai-gnb --from-file=<oai-repo-directory> --follow
``` ```
After a while it should be successful. # 5. Retrieval of Build Container Images and Build Artifacts
# 3. Build an OAI target image #
For the example the eNB:
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:
```bash ```bash
oc apply -f openshift/oai-enb-rh8-image-stream.yml oc logs ran-build-1-build
oc apply -f openshift/oai-enb-rh8-build-config.yml
oc start-build oai-enb-rh8-build-config --follow
``` ```
where `ran-build-1-build` is the name of the `ran-build` build (type `oc get
pods` to get a list of all pods).
**CAUTION: if you are pushing modifications to the branch you are using, it won't be taken into account besides the Dockerfile.** 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
**Because the source files are copied during the shared image creation.** scrape it from stdout):
```bash
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
```
**Only way to regenerate images w/ modified source code is to re-start from step #2.** The images are uploaded into the OpenShift image registry. To download, login
using podman, then pull an image:
```bash
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`.
# 4. Deployment using HELM charts # # 6. Deployment using HELM Charts
**CAUTION: even more experimental.** **CAUTION: even more experimental.**
......
#/*
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements. See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# * contact@openairinterface.org
# */
#---------------------------------------------------------------------
#
apiVersion: v1
kind: ImageStream
metadata:
name: oai-enb
namespace: oai
status:
tag: rhel8-latest
#/*
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements. See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# * contact@openairinterface.org
# */
#---------------------------------------------------------------------
#
apiVersion: v1
kind: ImageStream
metadata:
name: oai-ran
namespace: oai
status:
tag: rhel8-latest
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment