diff --git a/introducing-driver-toolkit/0000-buildconfig.yaml.template b/introducing-driver-toolkit/0000-buildconfig.yaml.template new file mode 100644 index 0000000..dde88a1 --- /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 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 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: "" +