4.3. Red Hat Edge Manager의 bootc 운영 체제 이미지 빌드
Red Hat Edge Manager에서 장치를 관리할 수 있도록 Red Hat Edge Manager 에이전트가 있는 bootc 운영 체제 이미지를 빌드합니다. 그런 다음 장치에 대한 운영 체제 디스크 이미지를 빌드합니다.
자세한 내용은 다음 섹션을 참조하십시오.
4.3.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
bootc 운영 체제 이미지를 빌드하려면 다음 사전 요구 사항을 참조하십시오.
-
podman버전 5.0 이상 및skopeo버전 1.14 이상을 설치합니다. 컨테이너 툴 가져오기를 참조하십시오. -
bootc-image-builder를 설치합니다. bootc-image-builder 설치를 참조하십시오.
4.3.2. Red Hat Edge Manager CLI 설치 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Edge Manager CLI를 설치하려면 다음 단계를 완료합니다.
프로세스
다음 명령을 실행하여 시스템에 적합한 리포지토리의 서브스크립션 관리자를 활성화합니다.
sudo subscription-manager repos --enable ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms
sudo subscription-manager repos --enable ansible-automation-platform-2.5-for-rhel-9-x86_64-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Edge Manager에서 사용 가능한 리포지토리의 전체 목록은 추가 리소스 섹션을 참조하십시오.
다음 명령을 실행하여 패키지 관리자와 함께plane
ctlCLI를 설치합니다.sudo dnf install flightctl
sudo dnf install flightctlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
OAuth 애플리케이션을 수동으로 설정하는 경우 xdg-utils 를 설치하여 하나의 유틸리티 xdg-open,x- 또는 Cryostat-browser를 사용할 수 있는지 확인해야 합니다.
www-browser
4.3.3. CLI를 통해 Red Hat Edge Manager에 로그인 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Edge Manager에 로그인하는 방법은 처음 애플리케이션을 설정할 때 자동 또는 수동 방법을 선택할지 여부에 따라 달라집니다.
프로세스
자동 설정을 사용하는 경우 읽기 범위에서만 개인 액세스 토큰을 생성할 수 있습니다(Ansible Automation Platform UI > 사용자 세부 정보 > 토큰 탭의 오른쪽 상단에 있는 프로필 아이콘 아래) 다음 예제 구문으로 CLI를 통해 직접 로그인할 수 있습니다.
flightctl login https://<your-edge-manager-ip-or-domain>:3443 --token=<your-aap-oauth-token> --insecure-skip-tls-verify
flightctl login https://<your-edge-manager-ip-or-domain>:3443 --token=<your-aap-oauth-token> --insecure-skip-tls-verifyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 수동 설정을 사용하는 경우 클라이언트 ID 를 사용하여 다음 예제 구문과 함께 웹 기반 프로세스를 통해 로그인합니다.
flightctl login https://<your-edge-manager-ip-or-domain>:3443 --web --client-id=<your-aap-client-id> --insecure-skip-tls-verify
flightctl login https://<your-edge-manager-ip-or-domain>:3443 --web --client-id=<your-aap-client-id> --insecure-skip-tls-verifyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 웹 브라우저에서 열립니다. 승인하도록 요청합니다.
--insecure-skip-tls-verify매개변수는 고유한 유효한 인증서를 생성하지 않은 경우에만 사용됩니다.
다음 단계
CLI에 도움이 되도록 다음 명령을 사용하십시오.
사용 가능한 명령 목록을 출력하려면 다음을 사용합니다.
flightctl
flightctlCopy to Clipboard Copied! Toggle word wrap Toggle overflow lightctl CLI 버전과 백엔드 Red Hat Edge Manager 버전을 모두 출력하려면 다음을 사용합니다.
flightctl version
flightctl versionCopy to Clipboard Copied! Toggle word wrap Toggle overflow
지원 가능성과 적절한 기능을 보장하기 위해lightctl CLI 버전이 사용 중인 Red Hat Edge Manager 버전과 일치해야 합니다. 일치하지 않는 버전은 지원되지 않습니다.
4.3.4. 선택 사항: 조기 바인딩에 대한 등록 인증서 요청 링크 복사링크가 클립보드에 복사되었습니다!
이미지에 에이전트 구성을 포함하려면 다음 단계를 완료합니다.
프로세스
CLI를 통해 Red Hat Edge Manager에 로그인할 단계를 수행하여lightctl CLI에 로그인합니다.
참고CLI는 호스트의 인증 기관 풀을 사용하여 Red Hat Edge Manager 서비스의 ID를 확인합니다. 확인으로 인해 자체 서명된 인증서를 사용할 때 인증 기관 인증서를 풀에 추가하지 않는 경우 TLS 확인 오류가 발생할 수 있습니다. 명령에
--insecure-skip-tls-verify플래그를 추가하여 서버 확인을 바이패스할 수 있습니다.다음 명령을 실행하여 에이전트 구성 파일의 형식으로 등록 자격 증명을 가져옵니다.
flightctl certificate request --signer=enrollment --expiration=365d --output=embedded > config.yaml
flightctl certificate request --signer=enrollment --expiration=365d --output=embedded > config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 참고-
--expiration=365d옵션은 인증 정보가 1년 동안 유효함을 지정합니다. -
--output=embedded옵션은 출력이 등록 자격 증명이 포함된 에이전트 구성 파일임을 지정합니다.
반환된
config.yaml에는 Red Hat Edge Manager 서비스의 URL, 인증 기관 번들, 에이전트의 등록 클라이언트 인증서 및 키가 포함되어 있습니다. 다음 예제를 참조하십시오.Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
4.3.5. 선택 사항: 이미지 풀 시크릿 사용 링크 복사링크가 클립보드에 복사되었습니다!
장치가 프라이빗 리포지토리의 컨테이너에 의존하는 경우 레지스트리에 대한 풀 시크릿을 구성해야 합니다. 다음 단계를 완료합니다.
프로세스
사용하는 컨테이너 이미지의 종류에 따라 장치의 다음 시스템 경로 중 하나 또는 둘 다에 풀 시크릿을 배치합니다.
-
운영 체제 이미지는
/etc/ostree/auth.json경로를 사용합니다. 애플리케이션 컨테이너 이미지는
/root/.config/containers/auth.json경로를 사용합니다.중요시크릿을 사용하기 전에 가져오기 보안이 장치에 있어야 합니다.
-
운영 체제 이미지는
풀 시크릿에서 다음 형식을 사용하는지 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
자세한 내용은 추가 리소스 섹션을 참조하십시오.
4.3.6. bootc를 사용하여 운영 체제 이미지 빌드 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Edge Manager 에이전트가 포함된 bootc 를 사용하여 운영 체제 이미지를 빌드합니다. 운영 체제 이미지에 다음 항목을 선택적으로 포함할 수 있습니다.
- 조기 바인딩에 사용되는 에이전트 구성
- 모든 드라이버
- 호스트 구성
- 필요한 애플리케이션 워크로드
다음 단계를 완료합니다.
프로세스
다음 내용으로
Containerfile파일을 생성하여 Red Hat Edge Manager 에이전트 및 구성이 포함된 RHEL 9 기반 운영 체제 이미지를 빌드합니다.FROM registry.redhat.io/rhel9/rhel-bootc:<required_os_version> RUN dnf --enablerepo ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms -y install flightctl-agent-0.7.2-1.el9fc && \ dnf -y clean all && \ systemctl enable flightctl-agent.service && \ systemctl mask bootc-fetch-apply-updates.timerFROM registry.redhat.io/rhel9/rhel-bootc:<required_os_version>1 RUN dnf --enablerepo ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms -y install flightctl-agent-0.7.2-1.el9fc && \ dnf -y clean all && \ systemctl enable flightctl-agent.service && \ systemctl mask bootc-fetch-apply-updates.timer2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요장치가 프라이빗 리포지토리의 컨테이너에 의존하는 경우
/etc/ostree/auth.json경로에 장치 풀 시크릿을 배치해야 합니다. 시크릿을 사용하기 전에 가져오기 보안이 장치에 있어야 합니다.선택 사항:
podman-compose애플리케이션 지원을 활성화하려면Containerfile파일에 다음 섹션을 추가합니다.RUN dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \ dnf -y install podman-compose && \ dnf -y clean all && \ systemctl enable podman.serviceRUN dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \ dnf -y install podman-compose && \ dnf -y clean all && \ systemctl enable podman.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 초기 바인딩에 대해
config.yaml을 생성한 경우Containerfile에 다음 섹션을 추가합니다.ADD config.yaml /etc/flightctl/
ADD config.yaml /etc/flightctl/Copy to Clipboard Copied! Toggle word wrap Toggle overflow
자세한 내용은 선택 사항: 조기 바인딩에 대한 등록 인증서 요청을 참조하십시오.
다음 명령을 실행하여 OCI(Open Container Initiative) 레지스트리를 정의합니다.
OCI_REGISTRY=registry.redhat.io
OCI_REGISTRY=registry.redhat.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 작성할 권한이 있는 이미지 리포지토리를 정의합니다.
OCI_IMAGE_REPO=${OCI_REGISTRY}/<your_org>/<your_image>OCI_IMAGE_REPO=${OCI_REGISTRY}/<your_org>/<your_image>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 이미지 태그를 정의합니다.
OCI_IMAGE_TAG=v1
OCI_IMAGE_TAG=v1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 대상 플랫폼의 운영 체제 이미지를 빌드합니다.
sudo podman build -t ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG} .sudo podman build -t ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG} .Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.7. Sigstore를 사용하여 bootc 운영 체제 이미지에 서명 및 게시 링크 복사링크가 클립보드에 복사되었습니다!
Sigstore를 사용하여 bootc 운영 체제 이미지에 서명하려면 다음 단계를 완료합니다.
프로세스
signingkey.pub및signingkey.private:이라는 Sigstore 키 쌍을 생성합니다.skopeo generate-sigstore-key --output-prefix signingkey
skopeo generate-sigstore-key --output-prefix signingkeyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 서명된 이미지와 함께 Sigstore 서명을 OCI 레지스트리에 업로드하도록 Podman 및 Skopeo와 같은 컨테이너 툴을 구성합니다.
sudo tee "/etc/containers/registries.d/${OCI_REGISTRY}.yaml" > /dev/null <<EOF docker: ${OCI_REGISTRY}: use-sigstore-attachments: true EOFsudo tee "/etc/containers/registries.d/${OCI_REGISTRY}.yaml" > /dev/null <<EOF docker: ${OCI_REGISTRY}: use-sigstore-attachments: true EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 OCI 레지스트리에 로그인합니다.
sudo podman login ${OCI_REGISTRY}sudo podman login ${OCI_REGISTRY}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 운영 체제 이미지에 서명하고 게시합니다.
sudo podman push \ --sign-by-sigstore-private-key ./signingkey.private \ ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG}sudo podman push \ --sign-by-sigstore-private-key ./signingkey.private \ ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.8. 운영 체제 디스크 이미지 빌드 링크 복사링크가 클립보드에 복사되었습니다!
장치의 파일 시스템이 포함된 운영 체제 디스크 이미지를 빌드합니다.
다음 단계를 완료합니다.
프로세스
다음 명령을 실행하여
출력이라는 디렉터리를 생성합니다.mkdir -p output
mkdir -p outputCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 운영 체제 이미지에서
iso유형의 운영 체제 디스크 이미지를 생성하려면bootc-image-builder를 사용합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
bootc-image-builder 가 완료되면 ${PWD}/output/bootiso/install.iso 경로에서 ISO 디스크 이미지를 찾을 수 있습니다.
4.3.9. 선택 사항: 운영 체제 디스크 이미지를 Open Container Initiative 레지스트리에 서명 및 게시 링크 복사링크가 클립보드에 복사되었습니다!
디스크 이미지에 서명하고 OCI(Open Container Initiative) 레지스트리에 게시합니다. 선택적으로 bootc 이미지와 동일한 OCI 레지스트리에 OCI 아티팩트로 디스크 이미지를 압축하고 게시하면 부팅 및 디스크 이미지의 통합 호스팅 및 배포를 용이하게 할 수 있습니다. /diskimage-iso 가 추가된 bootc 이미지 다음에 이름이 지정된 리포지토리에 ISO 디스크 이미지를 게시하려면 다음을 수행합니다.
사전 요구 사항
- Sigstore를 사용하여 개인 키를 생성했습니다. Sigstore 를 사용하여 bootc 운영 체제 이미지 서명 및 게시 를 참조하십시오.
다음 단계를 완료하여 OCI 레지스트리에 디스크 이미지를 서명하고 게시합니다.
프로세스
다음 명령을 실행하여 ISO 디스크 이미지가 있는 디렉터리의 소유자를
root에서 현재 사용자로 변경합니다.sudo chown -R $(whoami):$(whoami) "${PWD}/output"sudo chown -R $(whoami):$(whoami) "${PWD}/output"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
/diskimage-iso가 추가된bootc이미지와 동일한 리포지토리가 되도록OCI_DISK_IMAGE_REPO환경 변수를 정의합니다.OCI_DISK_IMAGE_REPO=${OCI_IMAGE_REPO}/diskimage-isoOCI_DISK_IMAGE_REPO=${OCI_IMAGE_REPO}/diskimage-isoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 매니페스트 목록을 생성합니다.
sudo podman manifest create \ ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG}sudo podman manifest create \ ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 매니페스트 목록에 ISO 디스크 이미지를 OCI 아티팩트로 추가합니다.
sudo podman manifest add \ --artifact --artifact-type application/vnd.diskimage.iso \ --arch=amd64 --os=linux \ ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG} \ "${PWD}/output/bootiso/install.iso"sudo podman manifest add \ --artifact --artifact-type application/vnd.diskimage.iso \ --arch=amd64 --os=linux \ ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG} \ "${PWD}/output/bootiso/install.iso"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 프라이빗 Sigstore 키를 사용하여 매니페스트 목록에 서명하고 레지스트리에 이미지를 푸시합니다.
sudo podman manifest push --all \ --sign-by-sigstore-private-key ./signingkey.private \ ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG} \ docker://${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG}sudo podman manifest push --all \ --sign-by-sigstore-private-key ./signingkey.private \ ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG} \ docker://${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.10. 추가 리소스 링크 복사링크가 클립보드에 복사되었습니다!
- 다른 대상 플랫폼에서 운영 체제 이미지를 빌드하는 방법에 대한 자세한 내용은 컨테이너 풀 시크릿 구성 을 참조하십시오.
4.3.11. 특정 대상 플랫폼에 대한 요구사항 링크 복사링크가 클립보드에 복사되었습니다!
다음 플랫폼 고려 사항을 참조하십시오.
4.3.11.1. Red Hat OpenShift Virtualization 이미지 빌드 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenShift Virtualization의 운영 체제 이미지 및 디스크 이미지를 빌드할 때 다음과 같은 변경 사항을 통해 일반 이미지 빌드 프로세스를 따를 수 있습니다.
-
가상 장치를 프로비저닝할 때
cloud-init를 통해 등록 인증서 또는 에이전트 구성을 삽입하여 늦은 바인딩을 사용합니다. -
open-vm-tools게스트 툴을 이미지에 추가합니다. -
iso대신qcow2유형의 디스크 이미지를 빌드합니다.
다음 단계를 변경하여 일반 단계를 완료합니다.
프로세스
- Red Hat Edge Manager 에이전트 및 VM 게스트 도구가 포함된 RHEL 9를 기반으로 운영 체제 이미지를 빌드하지만 에이전트 구성은 제외됩니다.
다음 콘텐츠를 사용하여
Containerfile이라는 파일을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항:
podman-compose애플리케이션 지원을 활성화하려면Containerfile파일에 다음 섹션을 추가합니다.RUN dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \ dnf -y install podman-compose && \ dnf -y clean all && \ systemctl enable podman.serviceRUN dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \ dnf -y install podman-compose && \ dnf -y clean all && \ systemctl enable podman.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.11.2. bootc 이미지 빌드 링크 복사링크가 클립보드에 복사되었습니다!
일반 이미지 빌드 프로세스에 따라 bootc 운영 체제 이미지를 빌드, 서명 및 게시합니다.
프로세스
다음 명령을 실행하여
출력이라는 디렉터리를 생성합니다.mkdir -p output
mkdir -p outputCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 운영 체제 이미지에서
vmdk유형의 운영 체제 디스크 이미지를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
bootc-image-builder 가 완료되면 ${PWD}/output/vmdk/disk.vmdk 에서 디스크 이미지를 찾을 수 있습니다.
4.3.11.3. QCoW2 디스크 이미지 빌드 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenShift Virtualization은 OCI 레지스트리에서 디스크 이미지를 다운로드할 수 있지만 OCI 아티팩트 대신 컨테이너 디스크 이미지가 필요합니다.
QCoW2 디스크 이미지를 빌드, 서명 및 업로드하려면 다음 단계를 완료합니다.
프로세스
다음 콘텐츠를 사용하여
Containerfile.qcow2라는 파일을 생성합니다.FROM registry.access.redhat.com/ubi9/ubi:latest AS builder ADD --chown=107:107 output/qcow2/disk.qcow2 /disk/ RUN chmod 0440 /disk/* FROM scratch COPY --from=builder /disk/* /disk/
FROM registry.access.redhat.com/ubi9/ubi:latest AS builder ADD --chown=107:107 output/qcow2/disk.qcow2 /disk/1 RUN chmod 0440 /disk/*2 FROM scratch COPY --from=builder /disk/* /disk/3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 디스크 이미지를 빌드, 서명 및 게시합니다.
sudo chown -R $(whoami):$(whoami) "${PWD}/output" OCI_DISK_IMAGE_REPO=${OCI_IMAGE_REPO}/diskimage-qcow2 sudo podman build -t ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG} -f Containerfile.qcow2 . sudo podman push --sign-by-sigstore-private-key ./signingkey.private ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG}sudo chown -R $(whoami):$(whoami) "${PWD}/output" OCI_DISK_IMAGE_REPO=${OCI_IMAGE_REPO}/diskimage-qcow2 sudo podman build -t ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG} -f Containerfile.qcow2 . sudo podman push --sign-by-sigstore-private-key ./signingkey.private ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.11.4. VMware vSphere용 이미지 빌드 링크 복사링크가 클립보드에 복사되었습니다!
VMware vSphere의 운영 체제 이미지 및 디스크 이미지를 빌드할 때 다음과 같은 변경 사항으로 일반 이미지 빌드 프로세스를 따를 수 있습니다.
-
가상 장치를 프로비저닝할 때
cloud-init를 통해 등록 인증서 또는 에이전트 구성을 삽입하여 늦은 바인딩을 사용합니다. -
open-vm-tools게스트 툴을 이미지에 추가합니다. -
iso대신vmdk유형의 디스크 이미지를 빌드합니다.
다음 단계를 변경하여 일반 단계를 완료합니다.
프로세스
- Red Hat Edge Manager 에이전트 및 VM 게스트 도구가 포함된 RHEL 9를 기반으로 운영 체제 이미지를 빌드하지만 에이전트 구성은 제외됩니다.
다음 콘텐츠를 사용하여
Containerfile이라는 파일을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
출력이라는 디렉터리를 생성합니다.mkdir -p output
mkdir -p outputCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 운영 체제 이미지에서
vmdk유형의 운영 체제 디스크 이미지를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
bootc-image-builder 가 완료되면 ${PWD}/output/vmdk/disk.vmdk 에서 디스크 이미지를 찾을 수 있습니다.