4.3. Red Hat Edge Manager의 bootc 운영 체제 이미지 빌드


Red Hat Edge Manager에서 장치를 관리할 수 있도록 Red Hat Edge Manager 에이전트가 있는 bootc 운영 체제 이미지를 빌드합니다. 그런 다음 장치에 대한 운영 체제 디스크 이미지를 빌드합니다.

자세한 내용은 다음 섹션을 참조하십시오.

4.3.1. 사전 요구 사항

bootc 운영 체제 이미지를 빌드하려면 다음 사전 요구 사항을 참조하십시오.

4.3.2. Red Hat Edge Manager CLI 설치

Red Hat Edge Manager CLI를 설치하려면 다음 단계를 완료합니다.

프로세스

  1. 다음 명령을 실행하여 시스템에 적합한 리포지토리의 서브스크립션 관리자를 활성화합니다.

    sudo subscription-manager repos --enable ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms
    Copy to Clipboard Toggle word wrap

    Red Hat Edge Manager에서 사용 가능한 리포지토리의 전체 목록은 추가 리소스 섹션을 참조하십시오.

  2. 다음 명령을 실행하여 패키지 관리자와 함께plane ctl CLI를 설치합니다.

    sudo dnf install flightctl
    Copy to Clipboard Toggle word wrap

OAuth 애플리케이션을 수동으로 설정하는 경우 xdg-utils 를 설치하여 하나의 유틸리티 xdg-open,x- www-browser 또는 Cryostat-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
    Copy to Clipboard Toggle word wrap
  • 수동 설정을 사용하는 경우 클라이언트 ID 를 사용하여 다음 예제 구문과 함께 웹 기반 프로세스를 통해 로그인합니다.

    flightctl login https://<your-edge-manager-ip-or-domain>:3443 --web --client-id=<your-aap-client-id> --insecure-skip-tls-verify
    Copy to Clipboard Toggle word wrap
    • 웹 브라우저에서 열립니다. 승인하도록 요청합니다.

      --insecure-skip-tls-verify 매개변수는 고유한 유효한 인증서를 생성하지 않은 경우에만 사용됩니다.

다음 단계

CLI에 도움이 되도록 다음 명령을 사용하십시오.

  • 사용 가능한 명령 목록을 출력하려면 다음을 사용합니다.

    flightctl
    Copy to Clipboard Toggle word wrap
  • lightctl CLI 버전과 백엔드 Red Hat Edge Manager 버전을 모두 출력하려면 다음을 사용합니다.

    flightctl version
    Copy to Clipboard Toggle word wrap
중요

지원 가능성과 적절한 기능을 보장하기 위해lightctl CLI 버전이 사용 중인 Red Hat Edge Manager 버전과 일치해야 합니다. 일치하지 않는 버전은 지원되지 않습니다.

4.3.4. 선택 사항: 조기 바인딩에 대한 등록 인증서 요청

이미지에 에이전트 구성을 포함하려면 다음 단계를 완료합니다.

프로세스

  1. CLI를 통해 Red Hat Edge Manager에 로그인할 단계를 수행하여lightctl CLI에 로그인합니다.

    참고

    CLI는 호스트의 인증 기관 풀을 사용하여 Red Hat Edge Manager 서비스의 ID를 확인합니다. 확인으로 인해 자체 서명된 인증서를 사용할 때 인증 기관 인증서를 풀에 추가하지 않는 경우 TLS 확인 오류가 발생할 수 있습니다. 명령에 --insecure-skip-tls-verify 플래그를 추가하여 서버 확인을 바이패스할 수 있습니다.

  2. 다음 명령을 실행하여 에이전트 구성 파일의 형식으로 등록 자격 증명을 가져옵니다.

    flightctl certificate request --signer=enrollment --expiration=365d --output=embedded > config.yaml
    Copy to Clipboard Toggle word wrap
    참고
    • --expiration=365d 옵션은 인증 정보가 1년 동안 유효함을 지정합니다.
    • --output=embedded 옵션은 출력이 등록 자격 증명이 포함된 에이전트 구성 파일임을 지정합니다.

    반환된 config.yaml 에는 Red Hat Edge Manager 서비스의 URL, 인증 기관 번들, 에이전트의 등록 클라이언트 인증서 및 키가 포함되어 있습니다. 다음 예제를 참조하십시오.

    enrollment-service:
      authentication:
        client-certificate-data: LS0tLS1CRUdJTiBD...
        client-key-data: LS0tLS1CRUdJTiBF...
      service:
        certificate-authority-data: LS0tLS1CRUdJTiBD...
        server: https://agent-api.flightctl.127.0.0.1.nip.io:7443
      enrollment-ui-endpoint: https://ui.flightctl.127.0.0.1.nip.io:8081
    Copy to Clipboard Toggle word wrap

4.3.5. 선택 사항: 이미지 풀 시크릿 사용

장치가 프라이빗 리포지토리의 컨테이너에 의존하는 경우 레지스트리에 대한 풀 시크릿을 구성해야 합니다. 다음 단계를 완료합니다.

프로세스

  1. 사용하는 컨테이너 이미지의 종류에 따라 장치의 다음 시스템 경로 중 하나 또는 둘 다에 풀 시크릿을 배치합니다.

    • 운영 체제 이미지는 /etc/ostree/auth.json 경로를 사용합니다.
    • 애플리케이션 컨테이너 이미지는 /root/.config/containers/auth.json 경로를 사용합니다.

      중요

      시크릿을 사용하기 전에 가져오기 보안이 장치에 있어야 합니다.

  2. 풀 시크릿에서 다음 형식을 사용하는지 확인합니다.

    {
      "auths": {
        "registry.example.com": {
          "auth": "base64-encoded-credentials"
        }
      }
    }
    Copy to Clipboard Toggle word wrap

자세한 내용은 추가 리소스 섹션을 참조하십시오.

4.3.6. bootc를 사용하여 운영 체제 이미지 빌드

Red Hat Edge Manager 에이전트가 포함된 bootc 를 사용하여 운영 체제 이미지를 빌드합니다. 운영 체제 이미지에 다음 항목을 선택적으로 포함할 수 있습니다.

  • 조기 바인딩에 사용되는 에이전트 구성
  • 모든 드라이버
  • 호스트 구성
  • 필요한 애플리케이션 워크로드

다음 단계를 완료합니다.

프로세스

  1. 다음 내용으로 Containerfile 파일을 생성하여 Red Hat Edge Manager 에이전트 및 구성이 포함된 RHEL 9 기반 운영 체제 이미지를 빌드합니다.

    FROM 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.timer  
    2
    Copy to Clipboard Toggle word wrap
    1
    FROM 에서 참조된 기본 이미지는 이미 Linux 커널이 있는 부팅 가능한 컨테이너(bootc) 이미지이며 기존 표준 컨테이너 빌드 툴 및 워크플로우를 재사용할 수 있습니다.
    2
    기본 자동 업데이트를 비활성화합니다. 업데이트는 Red Hat Edge Manager에서 관리합니다.
    중요

    장치가 프라이빗 리포지토리의 컨테이너에 의존하는 경우 /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.service
      Copy to Clipboard Toggle word wrap
    • 선택 사항: 초기 바인딩에 대해 config.yaml 을 생성한 경우 Containerfile 에 다음 섹션을 추가합니다.

      ADD config.yaml /etc/flightctl/
      Copy to Clipboard Toggle word wrap

    자세한 내용은 선택 사항: 조기 바인딩에 대한 등록 인증서 요청을 참조하십시오.

  2. 다음 명령을 실행하여 OCI(Open Container Initiative) 레지스트리를 정의합니다.

    OCI_REGISTRY=registry.redhat.io
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 실행하여 작성할 권한이 있는 이미지 리포지토리를 정의합니다.

    OCI_IMAGE_REPO=${OCI_REGISTRY}/<your_org>/<your_image>
    Copy to Clipboard Toggle word wrap
  4. 다음 명령을 실행하여 이미지 태그를 정의합니다.

    OCI_IMAGE_TAG=v1
    Copy to Clipboard Toggle word wrap
  5. 대상 플랫폼의 운영 체제 이미지를 빌드합니다.

    sudo podman build -t ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG} .
    Copy to Clipboard Toggle word wrap

4.3.7. Sigstore를 사용하여 bootc 운영 체제 이미지에 서명 및 게시

Sigstore를 사용하여 bootc 운영 체제 이미지에 서명하려면 다음 단계를 완료합니다.

프로세스

  1. signingkey.pubsigningkey.private:이라는 Sigstore 키 쌍을 생성합니다.

    skopeo generate-sigstore-key --output-prefix signingkey
    Copy to Clipboard Toggle word wrap
  2. 서명된 이미지와 함께 Sigstore 서명을 OCI 레지스트리에 업로드하도록 Podman 및 Skopeo와 같은 컨테이너 툴을 구성합니다.

    sudo tee "/etc/containers/registries.d/${OCI_REGISTRY}.yaml" > /dev/null <<EOF
    docker:
        ${OCI_REGISTRY}:
            use-sigstore-attachments: true
    EOF
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 실행하여 OCI 레지스트리에 로그인합니다.

    sudo podman login ${OCI_REGISTRY}
    Copy to Clipboard Toggle word wrap
  4. 다음 명령을 실행하여 운영 체제 이미지에 서명하고 게시합니다.

    sudo podman push \
        --sign-by-sigstore-private-key ./signingkey.private \
        ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG}
    Copy to Clipboard Toggle word wrap

4.3.8. 운영 체제 디스크 이미지 빌드

장치의 파일 시스템이 포함된 운영 체제 디스크 이미지를 빌드합니다.

다음 단계를 완료합니다.

프로세스

  1. 다음 명령을 실행하여 출력 이라는 디렉터리를 생성합니다.

    mkdir -p output
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 운영 체제 이미지에서 iso 유형의 운영 체제 디스크 이미지를 생성하려면 bootc-image-builder 를 사용합니다.

    sudo podman run --rm -it --privileged --pull=newer \
        --security-opt label=type:unconfined_t \
        -v "${PWD}/output":/output \
        -v /var/lib/containers/storage:/var/lib/containers/storage \
        registry.redhat.io/rhel9/bootc-image-builder:latest \
        --type iso \
        ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG}
    Copy to Clipboard Toggle word wrap

bootc-image-builder 가 완료되면 ${PWD}/output/bootiso/install.iso 경로에서 ISO 디스크 이미지를 찾을 수 있습니다.

디스크 이미지에 서명하고 OCI(Open Container Initiative) 레지스트리에 게시합니다. 선택적으로 bootc 이미지와 동일한 OCI 레지스트리에 OCI 아티팩트로 디스크 이미지를 압축하고 게시하면 부팅 및 디스크 이미지의 통합 호스팅 및 배포를 용이하게 할 수 있습니다. /diskimage-iso 가 추가된 bootc 이미지 다음에 이름이 지정된 리포지토리에 ISO 디스크 이미지를 게시하려면 다음을 수행합니다.

사전 요구 사항

다음 단계를 완료하여 OCI 레지스트리에 디스크 이미지를 서명하고 게시합니다.

프로세스

  1. 다음 명령을 실행하여 ISO 디스크 이미지가 있는 디렉터리의 소유자를 root 에서 현재 사용자로 변경합니다.

    sudo chown -R $(whoami):$(whoami) "${PWD}/output"
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 /diskimage-iso 가 추가된 bootc 이미지와 동일한 리포지토리가 되도록 OCI_DISK_IMAGE_REPO 환경 변수를 정의합니다.

    OCI_DISK_IMAGE_REPO=${OCI_IMAGE_REPO}/diskimage-iso
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 실행하여 매니페스트 목록을 생성합니다.

    sudo podman manifest create \
        ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG}
    Copy to Clipboard Toggle word wrap
  4. 다음 명령을 실행하여 매니페스트 목록에 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"
    Copy to Clipboard Toggle word wrap
  5. 다음 명령을 실행하여 프라이빗 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}
    Copy to Clipboard Toggle word wrap

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 유형의 디스크 이미지를 빌드합니다.

다음 단계를 변경하여 일반 단계를 완료합니다.

프로세스

  1. Red Hat Edge Manager 에이전트 및 VM 게스트 도구가 포함된 RHEL 9를 기반으로 운영 체제 이미지를 빌드하지만 에이전트 구성은 제외됩니다.
  2. 다음 콘텐츠를 사용하여 Containerfile 이라는 파일을 생성합니다.

    FROM registry.redhat.io/rhel9/bootc-image-builder:latest
    RUN subscription-manager repos --enable ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms
        dnf -y install flightctl-agent && \
        dnf -y clean all && \
        systemctl enable flightctl-agent.service
    RUN dnf -y install cloud-init open-vm-tools && \
        dnf -y clean all && \
        ln -s ../cloud-init.target /usr/lib/systemd/system/default.target.wants && \
        systemctl enable vmtoolsd.service
    Copy to Clipboard Toggle word wrap
  3. 선택 사항: 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.service
    Copy to Clipboard Toggle word wrap

4.3.11.2. bootc 이미지 빌드

일반 이미지 빌드 프로세스에 따라 bootc 운영 체제 이미지를 빌드, 서명 및 게시합니다.

프로세스

  1. 다음 명령을 실행하여 출력 이라는 디렉터리를 생성합니다.

    mkdir -p output
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 운영 체제 이미지에서 vmdk 유형의 운영 체제 디스크 이미지를 생성합니다.

    sudo podman run --rm -it --privileged --pull=newer \
        --security-opt label=type:unconfined_t \
        -v "${PWD}/output":/output \
        -v /var/lib/containers/storage:/var/lib/containers/storage \
        registry.redhat.io/rhel9/bootc-image-builder:latest \
        --type qcow2 \
        ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG}
    Copy to Clipboard Toggle word wrap

bootc-image-builder 가 완료되면 ${PWD}/output/vmdk/disk.vmdk 에서 디스크 이미지를 찾을 수 있습니다.

4.3.11.3. QCoW2 디스크 이미지 빌드

Red Hat OpenShift Virtualization은 OCI 레지스트리에서 디스크 이미지를 다운로드할 수 있지만 OCI 아티팩트 대신 컨테이너 디스크 이미지가 필요합니다.

QCoW2 디스크 이미지를 빌드, 서명 및 업로드하려면 다음 단계를 완료합니다.

프로세스

  1. 다음 콘텐츠를 사용하여 Containerfile.qcow2 라는 파일을 생성합니다.

    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 Toggle word wrap
    1
    QCoW2 디스크 이미지를 빌더 컨테이너에 추가하여 QEMU 사용자인 필요한 107 파일 소유권을 설정합니다.
    2
    필요한 0440 파일 권한을 설정합니다.
    3
    파일을 스크래치 이미지에 복사합니다.
  2. 다음 명령을 실행하여 디스크 이미지를 빌드, 서명 및 게시합니다.

    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 Toggle word wrap

4.3.11.4. VMware vSphere용 이미지 빌드

VMware vSphere의 운영 체제 이미지 및 디스크 이미지를 빌드할 때 다음과 같은 변경 사항으로 일반 이미지 빌드 프로세스를 따를 수 있습니다.

  • 가상 장치를 프로비저닝할 때 cloud-init 를 통해 등록 인증서 또는 에이전트 구성을 삽입하여 늦은 바인딩을 사용합니다.
  • open-vm-tools 게스트 툴을 이미지에 추가합니다.
  • iso 대신 vmdk 유형의 디스크 이미지를 빌드합니다.

다음 단계를 변경하여 일반 단계를 완료합니다.

프로세스

  1. Red Hat Edge Manager 에이전트 및 VM 게스트 도구가 포함된 RHEL 9를 기반으로 운영 체제 이미지를 빌드하지만 에이전트 구성은 제외됩니다.
  2. 다음 콘텐츠를 사용하여 Containerfile 이라는 파일을 생성합니다.

    FROM registry.redhat.io/rhel9/bootc-image-builder:latest
    RUN subscription-manager repos --enable ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms
        dnf -y install flightctl-agent && \
        dnf -y clean all && \
        systemctl enable flightctl-agent.service && \
    RUN dnf -y install cloud-init open-vm-tools && \
        dnf -y clean all && \
        ln -s ../cloud-init.target /usr/lib/systemd/system/default.target.wants && \
        systemctl enable vmtoolsd.service
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 실행하여 출력 이라는 디렉터리를 생성합니다.

    mkdir -p output
    Copy to Clipboard Toggle word wrap
  4. 다음 명령을 실행하여 운영 체제 이미지에서 vmdk 유형의 운영 체제 디스크 이미지를 생성합니다.

    sudo podman run --rm -it --privileged --pull=newer \
        --security-opt label=type:unconfined_t \
        -v "${PWD}/output":/output \
        -v /var/lib/containers/storage:/var/lib/containers/storage \
        registry.redhat.io/rhel9/bootc-image-builder:latest \
        --type vmdk \
        ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG}
    Copy to Clipboard Toggle word wrap

bootc-image-builder 가 완료되면 ${PWD}/output/vmdk/disk.vmdk 에서 디스크 이미지를 찾을 수 있습니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat