Bug 1996055 - Driver Toolkit - Fail to deploy simple-kmod on SNO
Summary: Driver Toolkit - Fail to deploy simple-kmod on SNO
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: OpenShift Container Platform
Classification: Red Hat
Component: Driver Toolkit
Version: 4.9
Hardware: Unspecified
OS: Unspecified
unspecified
high
Target Milestone: ---
: ---
Assignee: dagray
QA Contact: Walid A.
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2021-08-20 12:48 UTC by liqcui
Modified: 2021-09-03 01:35 UTC (History)
1 user (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2021-09-03 01:35:47 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)
sno-simple-kmod.log (11.55 KB, text/plain)
2021-08-20 12:48 UTC, liqcui
no flags Details

Description liqcui 2021-08-20 12:48:13 UTC
Created attachment 1816046 [details]
sno-simple-kmod.log

Description of problem:


Version-Release number of selected component (if applicable):
 oc get clusterversion
NAME      VERSION                        AVAILABLE   PROGRESSING   SINCE   STATUS
version   4.9.0-0.ci-2021-08-19-225752   True        False         60m     Cluster version is 4.9.0-0.ci-2021-08-19-225752

How reproducible:

Steps to Reproduce:
$ export REGISTRY_AUTH_FILE=<path_to_pull-secret.txt>
$ oc new-project simple-kmod-demo
Note:  all the steps below must be executed in the simple-kmod-demo project

The YAML defines an ImageStream for storing the simple-kmod driver container image, and a BuildConfig for building the container. 
Save this YAML as 0000-buildconfig.yaml.template:

apiVersion: image.openshift.io/v1
kind: ImageStream
metadata:
  labels:
    app: simple-kmod-driver-container
  name: simple-kmod-driver-container
  namespace: simple-kmod-demo
spec: {}
---
apiVersion: build.openshift.io/v1
kind: BuildConfig
metadata:
  labels:
    app: simple-kmod-driver-build
  name: simple-kmod-driver-build
  namespace: simple-kmod-demo
spec:
  nodeSelector:
    node-role.kubernetes.io/worker: ""
  runPolicy: "Serial"
  triggers:
    - type: "ConfigChange"
    - type: "ImageChange"
  source:
    git:
      ref: "master"
      uri: "https://github.com/openshift-psap/kvc-simple-kmod.git"
    type: Git
    dockerfile: |
      FROM DRIVER_TOOLKIT_IMAGE

      WORKDIR /build/

      RUN yum -y install git make sudo gcc \
      && yum clean all \
      && rm -rf /var/cache/dnf

      # Expecting kmod software version as an input to the build
      ARG KMODVER

      # Grab the software from upstream
      RUN git clone https://github.com/openshift-psap/simple-kmod.git
      WORKDIR simple-kmod

      # Prep and build the module
      RUN make buildprep KVER=$(rpm -q --qf "%{VERSION}-%{RELEASE}.%{ARCH}"  kernel-core) KMODVER=${KMODVER} \
      && make all       KVER=$(rpm -q --qf "%{VERSION}-%{RELEASE}.%{ARCH}"  kernel-core) KMODVER=${KMODVER} \
      && make install   KVER=$(rpm -q --qf "%{VERSION}-%{RELEASE}.%{ARCH}"  kernel-core) KMODVER=${KMODVER}

      # Add the helper tools
      WORKDIR /root/kvc-simple-kmod
      ADD Makefile .
      ADD simple-kmod-lib.sh .
      ADD simple-kmod-wrapper.sh .
      ADD simple-kmod.conf .
      RUN mkdir -p /usr/lib/kvc/ \
      && mkdir -p /etc/kvc/ \
      && make install

      RUN systemctl enable kmods-via-containers@simple-kmod
  strategy:
    dockerStrategy:
      buildArgs:
        - name: KMODVER
          value: DEMO
  output:
    to:
      kind: ImageStreamTag
      name: simple-kmod-driver-container:demo


Substitute the correct driver toolkit image for the OpenShift Container Platform version you are running in place of “DRIVER_TOOLKIT_IMAGE” with the following commands.


$ OCP_VERSION=$(oc get clusterversion/version -ojsonpath={.status.desired.version})

$ DRIVER_TOOLKIT_IMAGE=$(oc adm release info $OCP_VERSION --image-for=driver-toolkit)

Or if you are testing nightly builds:

$ DRIVER_TOOLKIT_IMAGE=registry.ci.openshift.org/ocp/4.9-2021-08-19-225752@sha256:231860661c4c5ab57ad61e30b22cdc88e0d6c4099317fe13a7147739e78c9a06

$ sed "s#DRIVER_TOOLKIT_IMAGE#${DRIVER_TOOLKIT_IMAGE}#" 0000-buildconfig.yaml.template > 0000-buildconfig.yaml


Create the image stream and build config with
$ oc create -f 0000-buildconfig.yaml
After the builder pod completes successfully, deploy the driver container image as a DaemonSet.

Actual results:
 oc get pods -n simple-kmod-demo
NAME                               READY   STATUS   RESTARTS   AGE
simple-kmod-driver-build-1-build   0/1     Error    0          2m27s

Expected results:
No error in simple-kmod-driver-build-1-build

Additional info:

Comment 1 dagray 2021-08-30 22:06:18 UTC

@liqcui Do you have the logs of the build pod? 

I think this is probably because the image registry is disabled by default on SNO. It probably is not a bug with the driver-toolkit. Optionally on SNO a user could enable the registry, or push the image to an external registry like quay.io. If you could confirm that this is indeed the problem by inspecting the build logs, that would be great!

Comment 2 dagray 2021-09-02 18:53:10 UTC
I added clarification that the registry needs to be configured before running these steps in the following PR:
https://github.com/openshift/openshift-docs/pull/35687

Comment 3 liqcui 2021-09-03 01:35:47 UTC
After testing on latest nightly ocp cluster, the issue has been fixed now!


Note You need to log in before you can comment on or make changes to this bug.