4.7. 사전 빌드된 드라이버 컨테이너 서명
하드웨어 벤더에 의해 배포되거나 다른 위치에서 빌드된 이미지와 같이 사전 빌드된 이미지가 있는 경우 이 절차를 사용하십시오.
다음 YAML 파일은 공개/개인 키 쌍에 필요한 키 이름(개인 키의 키 키, 공개 키의 인증서)이 있는 시크릿으로 공개/개인 키 쌍을 추가합니다.
그러면 클러스터에서
unsignedImage
이미지를 가져와서 열고, filesToSign
에 나열된 커널 모듈에 서명하고, 다시 추가하고, 결과 이미지를 containerImage
로 푸시합니다.
그런 다음 서명된 kmods를 선택기와 일치하는 모든 노드에 로드하는 DaemonSet을 배포해야 합니다. 드라이버 컨테이너는 MOK 데이터베이스에 공개 키가 있는 노드와 보안 부팅이 활성화되지 않은 모든 노드에서 서명을 무시해야 합니다. 보안 부팅이 활성화된 상태에서 로드되지 않아야 하지만 MOK 데이터베이스에는 해당 키가 없습니다.
사전 요구 사항
-
keySecret
및certSecret
시크릿이 생성되었습니다.
절차
YAML 파일을 적용합니다.
--- apiVersion: kmm.sigs.x-k8s.io/v1beta1 kind: Module metadata: name: example-module spec: moduleLoader: serviceAccountName: default container: modprobe: 1 moduleName: '<your module name>' kernelMappings: # the kmods will be deployed on all nodes in the cluster with a kernel that matches the regexp - regexp: '^.*\.x86_64$' # the container to produce containing the signed kmods containerImage: <image name e.g. quay.io/myuser/my-driver:<kernelversion>-signed> sign: # the image containing the unsigned kmods (we need this because we are not building the kmods within the cluster) unsignedImage: <image name e.g. quay.io/myuser/my-driver:<kernelversion> > keySecret: # a secret holding the private secureboot key with the key 'key' name: <private key secret name> certSecret: # a secret holding the public secureboot key with the key 'cert' name: <certificate secret name> filesToSign: # full path within the unsignedImage container to the kmod(s) to sign - /opt/lib/modules/4.18.0-348.2.1.el8_5.x86_64/kmm_ci_a.ko imageRepoSecret: # the name of a secret containing credentials to pull unsignedImage and push containerImage to the registry name: repo-pull-secret selector: kubernetes.io/arch: amd64
- 1
modprobe
- 로드할 kmod의 이름입니다.