다음 YAML 파일은 리포지토리의 소스 코드를 사용하여 새 컨테이너 이미지를 빌드합니다. 생성된 이미지는 임시 이름으로 레지스트리에 다시 저장되며 이 임시 이미지는 sign 섹션의 매개변수를 사용하여 서명됩니다.
임시 이미지 이름은 최종 이미지 이름을 기반으로 하며 < containerImage>:<tag>-<namespace>_<module name>_kmm_unsigned 로 설정됩니다.
예를 들어, 다음 YAML 파일을 사용하면 커널 모듈 관리(KMM)는 서명되지 않은 kmods를 포함하는 example.org/repository/minimal-driver:final-default_example-module_kmm_unsigned 라는 이름의 이미지를 빌드하고 레지스트리에 푸시합니다. 그런 다음 서명된 kmods가 포함된 example.org/repository/minimal-driver:final 이라는 두 번째 이미지를 생성합니다. 워커 포드가 끌어오는 것은 이 두 번째 이미지이며, 클러스터 노드에 로드될 kmods를 담고 있습니다.
서명이 완료되면 레지스트리에서 임시 이미지를 안전하게 삭제할 수 있습니다. 필요한 경우 다시 빌드됩니다.
사전 요구 사항
keySecret 및 certSecret 비밀은 나머지 리소스와 동일한 네임스페이스에 생성되었습니다.
프로세스
YAML 파일을 적용합니다.
---
apiVersion: v1
kind: ConfigMap
metadata:
name: example-module-dockerfile
namespace: <namespace>
data:
dockerfile: |
ARG DTK_AUTO
ARG KERNEL_VERSION
FROM ${DTK_AUTO} as builder
WORKDIR /build/
RUN git clone -b main --single-branch https://github.com/rh-ecosystem-edge/kernel-module-management.git
WORKDIR kernel-module-management/ci/kmm-kmod/
RUN make
FROM registry.access.redhat.com/ubi9/ubi:latest
ARG KERNEL_VERSION
RUN yum -y install kmod && yum clean all
RUN mkdir -p /opt/lib/modules/${KERNEL_VERSION}
COPY --from=builder /build/kernel-module-management/ci/kmm-kmod/*.ko /opt/lib/modules/${KERNEL_VERSION}/
RUN /usr/sbin/depmod -b /opt
---
apiVersion: kmm.sigs.x-k8s.io/v1beta1
kind: Module
metadata:
name: example-module
namespace: <namespace>
spec:
moduleLoader:
serviceAccountName: default
container:
modprobe:
moduleName: simple_kmod
kernelMappings:
- regexp: '^.*\.x86_64$'
containerImage: <final_driver_container_name>
build:
dockerfileConfigMap:
name: example-module-dockerfile
sign:
keySecret:
name: <private_key_secret_name>
certSecret:
name: <certificate_secret_name>
filesToSign:
- /opt/lib/modules/4.18.0-348.2.1.el8_5.x86_64/kmm_ci_a.ko
imageRepoSecret:
name: repo-pull-secret
selector: # top-level selector
kubernetes.io/arch: amd64
data:dockerfile:|
ARG DTK_AUTO
ARG KERNEL_VERSION
FROM ${DTK_AUTO} as builder
WORKDIR /build/
RUN git clone -b main --single-branch https://github.com/rh-ecosystem-edge/kernel-module-management.git
WORKDIR kernel-module-management/ci/kmm-kmod/
RUN make
FROM registry.access.redhat.com/ubi9/ubi:latest
ARG KERNEL_VERSION
RUN yum -y install kmod && yum clean all
RUN mkdir -p /opt/lib/modules/${KERNEL_VERSION}
COPY --from=builder /build/kernel-module-management/ci/kmm-kmod/*.ko /opt/lib/modules/${KERNEL_VERSION}/
RUN /usr/sbin/depmod -b /opt---apiVersion: kmm.sigs.x-k8s.io/v1beta1
kind: Module
metadata:name: example-module
namespace: <namespace>