2.3. KMM(커널 모듈 관리) 모듈에 대한 preflight 검증
적용된 KMM 모듈을 사용하여 클러스터에서 업그레이드를 수행하기 전에 KMM을 사용하여 설치된 커널 모듈이 클러스터 업그레이드 및 커널 업그레이드 후 노드에 설치할 수 있는지 확인해야 합니다. preflight는 클러스터에 로드된 모든 Module
을 병렬로 검증하려고 합니다. preflight는 다른 Module
의 검증을 시작하기 전에 하나의 Module
의 유효성 검사가 완료될 때까지 기다리지 않습니다.
2.3.1. 검증 시작 링크 복사링크가 클립보드에 복사되었습니다!
preflight 검증은 클러스터에 PreflightValidationOCP
리소스를 생성하여 트리거됩니다. 이 리소스에는 다음 필드가 포함되어 있습니다.
dtkImage
클러스터의 특정 OpenShift Container Platform 버전에 대해 릴리스된 DTK 컨테이너 이미지입니다. 이 값을 설정하지 않으면
DTK_AUTO
기능을 사용할 수 없습니다.클러스터에서 다음 명령 중 하나를 실행하여 이미지를 가져올 수 있습니다.
For x86_64 image: oc adm release info quay.io/openshift-release-dev/ocp-release:4.20.0-x86_64 --image-for=driver-toolkit
# For x86_64 image: $ oc adm release info quay.io/openshift-release-dev/ocp-release:4.20.0-x86_64 --image-for=driver-toolkit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow For ARM64 image: oc adm release info quay.io/openshift-release-dev/ocp-release:4.20.0-aarch64 --image-for=driver-toolkit
# For ARM64 image: $ oc adm release info quay.io/openshift-release-dev/ocp-release:4.20.0-aarch64 --image-for=driver-toolkit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kernelVersion
클러스터가 업그레이드되는 커널 버전을 제공하는 필수 필드입니다.
클러스터에서 다음 명령을 실행하여 버전을 가져올 수 있습니다.
podman run -it --rm $(oc adm release info quay.io/openshift-release-dev/ocp-release:4.20.0-x86_64 --image-for=driver-toolkit) cat /etc/driver-toolkit-release.json
$ podman run -it --rm $(oc adm release info quay.io/openshift-release-dev/ocp-release:4.20.0-x86_64 --image-for=driver-toolkit) cat /etc/driver-toolkit-release.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pushBuiltImage
-
true
인 경우 Build 및 Sign 검증 중에 생성된 이미지가 해당 리포지토리로 푸시됩니다. 이 필드는 기본적으로false
입니다.
2.3.2. 검증 라이프사이클 링크 복사링크가 클립보드에 복사되었습니다!
preflight 검증은 클러스터에 로드된 모든 모듈을 검증하려고 합니다. preflight는 검증에 성공한 후 모듈
리소스에서 검증을 중지합니다. 모듈 검증에 실패하면 모듈 정의를 변경할 수 있으며, Preflight는 다음 루프에서 모듈을 다시 검증하려고 합니다.
추가 커널에 대해 Preflight 검증을 실행하려면 해당 커널에 대한 다른 PreflightValidationOCP
리소스를 생성해야 합니다. 모든 모듈을 검증한 후에는 PreflightValidationOCP
리소스를 삭제하는 것이 좋습니다.
2.3.3. 검증 상태 링크 복사링크가 클립보드에 복사되었습니다!
PreflightValidationOCP
리소스는 클러스터에 있는 각 모듈의 상태 및 진행 상황을 .status.modules
목록에서 시도하거나 검증하려고 했습니다. 해당 목록의 요소에는 다음 필드가 포함됩니다.
name
-
모듈
리소스의 이름입니다. 네임스페이스
-
모듈
리소스의 네임스페이스입니다. statusReason
- 상태에 대한 구두 설명입니다.
verificationStage
실행되는 검증 단계를 설명합니다.
-
이미지
: 이미지 존재 확인 -
완료됨: 확인 완료
-
verificationStatus
모듈 확인의 상태:
-
성공
: 확인 -
실패
: 확인 실패 -
진행
중: 확인 진행 중
-
2.3.4. 이미지 검증 단계 링크 복사링크가 클립보드에 복사되었습니다!
이미지 검증은 실행할 사전 실행 검증의 첫 번째 단계입니다. 이미지 검증에 성공하면 해당 특정 모듈에서 다른 검증이 실행되지 않습니다. Operator는 컨테이너 런타임을 사용하여 모듈에서 updaded 커널의 이미지 존재 및 접근성을 확인합니다.
이미지 검증에 실패하고 업그레이드된 커널과 관련된 빌드/로그인
섹션이 있는 경우 컨트롤러는 이미지를 빌드하거나 서명하려고 합니다. Push builtImage
플래그가 PreflightValidationOCP
리소스에 정의된 경우 컨트롤러는 결과 이미지를 해당 리포지토리로 내보내려고 합니다. 결과 이미지 이름은 Module
CR의 containerImage
필드 정의에서 가져옵니다.
빌드
섹션이 있는 경우 sign
섹션의 입력 이미지가 build
섹션의 출력 이미지로 사용됩니다. 따라서 입력 이미지를 sign
섹션에서 사용할 수 있으려면 Push builtImage
플래그를 PreflightValidationOCP
CR에 정의해야 합니다.
2.3.5. PreflightValidationOCP 리소스의 예 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 YAML 형식의 PreflightValidationOCP
리소스를 보여줍니다.
이 예제에서는 향후 5.14.0-570.19.1.el9_6.x86_64
커널에 대해 현재 존재하는 모든 모듈을 확인합니다. .spec.push builtImage
가 true
로 설정되므로 KMM은 결과 이미지를 정의된 리포지토리로 내보냅니다.