1.5. Podman 및 Buildah에 fuse-overlayfs 스토리지 드라이버 사용
기본적으로 devfile을 지정하지 않는 새로 생성된 작업 공간은 UDI(Universal Developer Image)를 사용합니다. UDI에는 일반적으로 개발자가 사용하는 공통 개발 툴과 종속성이 포함되어 있습니다.
Podman 및 Buildah는 UDI에 포함되어 있어 개발자가 작업 영역에서 컨테이너 이미지를 빌드하고 내보낼 수 있습니다.
기본적으로 UDI의 Podman 및 Buildah는 vfs 스토리지 드라이버를 사용하도록 구성됩니다. 보다 효율적인 이미지 관리를 위해 루트 없는 환경에서 COW(Copy-On-Write)를 지원하는 fuse-overlayfs 스토리지 드라이버를 사용하십시오.
작업 영역에서 fuse-overlayfs를 사용하려면 다음 요구 사항을 충족해야 합니다.
-
4.15 이전 버전의 OpenShift의 경우 관리자는 https://access.redhat.com/documentation/en-us/red_hat_openshift_dev_spaces/3.22/html-single/administration_guide/index#administration-guide:configuring-fuse 에 따라 클러스터에서
/dev/fuse액세스를 활성화했습니다. -
작업 공간에는
/dev/fuse장치를 사용하는 데 필요한 주석이 있습니다. 1.5.1절. “/dev/fuse에 액세스”을 참조하십시오. -
작업 공간 컨테이너의
storage.conf파일이 fuse-overlayfs를 사용하도록 구성되어 있습니다. 1.5.2절. “ConfigMap을 사용하여 fuse-overlayfs 활성화”을 참조하십시오.
추가 리소스
1.5.1. /dev/fuse에 액세스 링크 복사링크가 클립보드에 복사되었습니다!
fuse-overlayfs를 사용하려면 /dev/fuse 에 액세스할 수 있어야 합니다. 이 섹션에서는 작업 공간 컨테이너에서 /dev/fuse 를 액세스하는 방법을 설명합니다.
사전 요구 사항
-
4.15 이전 버전의 경우 관리자는 https://access.redhat.com/documentation/en-us/red_hat_openshift_dev_spaces/3.22/html-single/administration_guide/index#administration-guide:configuring-fuse 을 사용하여
/dev/fuse에 액세스할 수 있습니다. - fuse-overlayfs를 사용할 작업 공간을 결정합니다.
프로세스
pod-overrides속성을 사용하여 https://access.redhat.com/documentation/en-us/red_hat_openshift_dev_spaces/3.22/html-single/administration_guide/index#administration-guide:configuring-fuse 에 정의된 필수 주석을 작업 공간에 추가합니다.pod-overrides특성을 사용하면 작업 공간 Pod의 사양에서 특정 필드를 병합할 수 있습니다.4.15 이전 버전의 OpenShift의 경우:
$ oc patch devworkspace <DevWorkspace_name> \ --patch '{"spec":{"template":{"attributes":{"pod-overrides":{"metadata":{"annotations":{"io.kubernetes.cri-o.Devices":"/dev/fuse","io.openshift.podman-fuse":""}}}}}}}' \ --type=mergeOpenShift 버전 4.15 이상의 경우:
$ oc patch devworkspace <DevWorkspace_name> \ --patch '{"spec":{"template":{"attributes":{"pod-overrides":{"metadata":{"annotations":{"io.kubernetes.cri-o.Devices":"/dev/fuse"}}}}}}}' \ --type=merge
검증 단계
작업 영역을 시작하고 작업 공간 컨테이너에서
/dev/fuse를 사용할 수 있는지 확인합니다.$ stat /dev/fuse
이 절차를 완료한 후 1.5.2절. “ConfigMap을 사용하여 fuse-overlayfs 활성화” 의 단계에 따라 Podman에 fuse-overlayfs를 사용합니다.
1.5.2. ConfigMap을 사용하여 fuse-overlayfs 활성화 링크 복사링크가 클립보드에 복사되었습니다!
~/.config/containers/storage.conf 파일에서 Podman 및 Buildah의 스토리지 드라이버를 정의할 수 있습니다. 다음은 UDI 컨테이너에 있는 /home/user/.config/containers/storage.conf 파일의 기본 내용입니다.
storage.conf
[storage]
driver = "vfs"
fuse-overlayfs를 사용하려면 storage.conf 를 다음으로 설정할 수 있습니다.
storage.conf
[storage]
driver = "overlay"
[storage.options.overlay]
mount_program="/usr/bin/fuse-overlayfs"
- 1
fuse-overlayfs바이너리의 절대 경로입니다./usr/bin/fuse-overlayfs경로는 UDI의 기본값입니다.
작업 영역을 시작한 후 수동으로 이 작업을 수행할 수 있습니다. 또 다른 옵션은 storage.conf 변경 사항으로 UDI를 기반으로 새 이미지를 빌드하고 작업 공간에 새 이미지를 사용하는 것입니다.
그렇지 않으면 업데이트된 파일을 마운트하는 ConfigMap을 생성하여 프로젝트의 모든 작업 공간에 대해 /home/user/.config/containers/storage.conf 를 업데이트할 수 있습니다. 6.2절. “마운트 ConfigMap”을 참조하십시오.
사전 요구 사항
-
4.15 이전 버전의 경우 관리자는 https://access.redhat.com/documentation/en-us/red_hat_openshift_dev_spaces/3.22/html-single/administration_guide/index#administration-guide:configuring-fuse 을 사용하여
/dev/fuse에 액세스할 수 있습니다. - 필요한 주석이 있는 작업 공간은 다음과 같이 설정됩니다. 1.5.1절. “/dev/fuse에 액세스”
이 가이드에 따라 마운트된 ConfigMap은 ConfigMap의 데이터를 모든 작업 공간에 마운트하므로 이 절차에 따라 모든 작업 공간에 대한 스토리지 드라이버를 fuse-overlayfs로 설정합니다. 1.5.1절. “/dev/fuse에 액세스” 에서 fuse-overlayfs를 사용하는 데 필요한 주석이 작업 공간에 포함되어 있는지 확인합니다.
프로세스
프로젝트에
/home/user/.config/containers/storage.conf파일을 마운트하는 ConfigMap을 적용합니다.kind: ConfigMap apiVersion: v1 metadata: name: fuse-overlay labels: controller.devfile.io/mount-to-devworkspace: 'true' controller.devfile.io/watch-configmap: 'true' annotations: controller.devfile.io/mount-as: subpath controller.devfile.io/mount-path: /home/user/.config/containers data: storage.conf: | [storage] driver = "overlay" [storage.options.overlay] mount_program="/usr/bin/fuse-overlayfs"주의이 ConfigMap을 생성하면 실행 중인 모든 작업 공간이 다시 시작됩니다.
검증 단계
필요한 주석이 포함된 작업 공간을 시작하고 스토리지 드라이버가
오버레이인지 확인합니다.$ podman info | grep overlay출력 예:
graphDriverName: overlay overlay.mount_program: Executable: /usr/bin/fuse-overlayfs Package: fuse-overlayfs-1.12-1.module+el8.9.0+20326+387084d0.x86_64 fuse-overlayfs: version 1.12 Backing Filesystem: overlayfs참고기존 작업 공간에 대해 다음 오류가 발생할 수 있습니다.
ERRO[0000] User-selected graph driver "overlay" overwritten by graph driver "vfs" from database - delete libpod local files ("/home/user/.local/share/containers/storage") to resolve. May prevent use of images created by other tools이 경우 오류 메시지에 언급된 libpod 로컬 파일을 삭제합니다.