From 3f11cdb0e265a3e3a22cb2ba4f92c7a247b95983 Mon Sep 17 00:00:00 2001 From: David Gray Date: Wed, 26 May 2021 13:19:57 -0400 Subject: [PATCH 1/2] Adding yaml manifests for driver-toolkit example --- .../0000-buildconfig.yaml.template | 69 +++++++++++++++++++ .../1000-driver-container.yaml | 62 +++++++++++++++++ 2 files changed, 131 insertions(+) create mode 100644 introducing-driver-toolkit/0000-buildconfig.yaml.template create mode 100644 introducing-driver-toolkit/1000-driver-container.yaml diff --git a/introducing-driver-toolkit/0000-buildconfig.yaml.template b/introducing-driver-toolkit/0000-buildconfig.yaml.template new file mode 100644 index 0000000..83e2073 --- /dev/null +++ b/introducing-driver-toolkit/0000-buildconfig.yaml.template @@ -0,0 +1,69 @@ +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 + + # 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 yum install -y make sudo + RUN make buildprep KVER=$(rpm -q --qf "%{VERSION}-%{RELEASE}.%{ARCH}" kernel-core) KMODVER=${KMODVER} + RUN make all KVER=$(rpm -q --qf "%{VERSION}-%{RELEASE}.%{ARCH}" kernel-core) KMODVER=${KMODVER} + RUN 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/ + RUN mkdir -p /etc/kvc/ + RUN 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 + diff --git a/introducing-driver-toolkit/1000-driver-container.yaml b/introducing-driver-toolkit/1000-driver-container.yaml new file mode 100644 index 0000000..5706b0f --- /dev/null +++ b/introducing-driver-toolkit/1000-driver-container.yaml @@ -0,0 +1,62 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: simple-kmod-driver-container +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: simple-kmod-driver-container +rules: +- apiGroups: + - security.openshift.io + resources: + - securitycontextconstraints + verbs: + - use + resourceNames: + - privileged +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: simple-kmod-driver-container +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: simple-kmod-driver-container +subjects: +- kind: ServiceAccount + name: simple-kmod-driver-container +userNames: +- system:serviceaccount:simple-kmod-demo:simple-kmod-driver-container +--- +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: simple-kmod-driver-container +spec: + selector: + matchLabels: + app: simple-kmod-driver-container + template: + metadata: + labels: + app: simple-kmod-driver-container + spec: + serviceAccount: simple-kmod-driver-container + serviceAccountName: simple-kmod-driver-container + containers: + - image: image-registry.openshift-image-registry.svc:5000/simple-kmod-demo/simple-kmod-driver-container:demo + name: simple-kmod-driver-container + imagePullPolicy: Always + command: ["/sbin/init"] + lifecycle: + preStop: + exec: + command: ["/bin/sh", "-c", "systemctl stop kmods-via-containers@simple-kmod"] + securityContext: + privileged: true + nodeSelector: + node-role.kubernetes.io/worker: "" + From 6319bd9212ef59e0299255b910ff4a94689ddf95 Mon Sep 17 00:00:00 2001 From: David Gray Date: Fri, 11 Jun 2021 15:58:05 -0400 Subject: [PATCH 2/2] Dockerfile cleanup for driver-toolkit blog --- .../0000-buildconfig.yaml.template | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/introducing-driver-toolkit/0000-buildconfig.yaml.template b/introducing-driver-toolkit/0000-buildconfig.yaml.template index 83e2073..dde88a1 100644 --- a/introducing-driver-toolkit/0000-buildconfig.yaml.template +++ b/introducing-driver-toolkit/0000-buildconfig.yaml.template @@ -28,34 +28,35 @@ spec: type: Git dockerfile: | FROM DRIVER_TOOLKIT_IMAGE - + WORKDIR /build/ - - RUN yum -y install git - + + 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 yum install -y make sudo - RUN make buildprep KVER=$(rpm -q --qf "%{VERSION}-%{RELEASE}.%{ARCH}" kernel-core) KMODVER=${KMODVER} - RUN make all KVER=$(rpm -q --qf "%{VERSION}-%{RELEASE}.%{ARCH}" kernel-core) KMODVER=${KMODVER} - RUN make install KVER=$(rpm -q --qf "%{VERSION}-%{RELEASE}.%{ARCH}" kernel-core) KMODVER=${KMODVER} - + 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/ - RUN mkdir -p /etc/kvc/ - RUN make install - + RUN mkdir -p /usr/lib/kvc/ \ + && mkdir -p /etc/kvc/ \ + && make install + RUN systemctl enable kmods-via-containers@simple-kmod strategy: dockerStrategy: @@ -66,4 +67,3 @@ spec: to: kind: ImageStreamTag name: simple-kmod-driver-container:demo -