7.10. /dev/fuse를 사용하여 더 빠른 빌드에 액세스
특히 권한이 없는 사용자의 경우 더 빠르고 효율적인 컨테이너 이미지 빌드를 활성화하도록 /dev/fuse
장치를 사용하여 Pod를 구성할 수 있습니다. 이 장치를 사용하면 권한이 없는 Pod에서 오버레이 파일 시스템을 마운트할 수 있으며 Podman과 같은 툴에서 활용할 수 있습니다.
7.10.1. Pod에서 권한이 없는 빌드에 대한 /dev/fuse 구성 링크 복사링크가 클립보드에 복사되었습니다!
/dev/fuse
장치를 권한이 없는 Pod에 노출하면 사용자 공간(FUSE) 마운트에서 파일 시스템을 수행할 수 있는 기능을 부여합니다. 이를 위해 Pod 정의에 io.kubernetes.cri-o.Devices: "/dev/fuse"
주석을 추가합니다. 이 설정을 사용하면 Pod 내의 권한이 없는 사용자가 Pod에 대한 전체 권한 권한을 부여하지 않고 권한 있는 빌드 기능을 안전하고 효율적인 방식으로 fuse-overlayfs
와 같은 스토리지 드라이버와 함께 사용할 수 있습니다.
프로세스
/dev/fuse
액세스를 사용하여 Pod를 정의합니다.다음 콘텐츠를 사용하여
fuse-builder-pod.yaml
이라는 YAML 파일을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고클러스터의 SCC(보안 컨텍스트 제약 조건) 또는 기타 정책에 따라
/dev/fuse
alone이fuse-overlayfs
가 작동하기에 충분하지 않은 경우 특정 기능을 허용하여securityContext
사양을 추가로 조정해야 할 수 있습니다.다음 명령을 실행하여 Pod를 생성합니다.
oc apply -f fuse-builder-pod.yaml
$ oc apply -f fuse-builder-pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Pod가 실행 중인지 확인합니다.
oc get pods fuse-builder-pod
$ oc get pods fuse-builder-pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod에 액세스하여 빌드 환경을 준비합니다.
fuse-builder-pod
Pod가Running
상태인 후build-container
환경에 쉘 세션을 엽니다.oc exec -ti fuse-builder-pod -- /bin/bash
$ oc exec -ti fuse-builder-pod -- /bin/bash
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이제 컨테이너에 들어 있습니다. 권한이 없는 사용자가 기본 작업 디렉터리를 쓸 수 없으므로
/tmp
와 같은 쓰기 가능한 디렉터리로 변경합니다.cd /tmp pwd
$ cd /tmp $ pwd /tmp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dockerfile을 생성하고 Podman을 사용하여 이미지를 빌드합니다.
Pod의 쉘과
/tmp
디렉터리 내에서Dockerfile
을 생성하고podman
을 사용하여 컨테이너 이미지를 빌드할 수 있습니다.fuse-overlayfs
가 기본 또는 구성된 스토리지 드라이버인 경우 Podman은 사용 가능한/dev/fuse
장치 때문에fuse-overlayfs
를 활용할 수 있습니다.샘플
Dockerfile
을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow podman
을 사용하여 이미지를 빌드합니다.-t
플래그는 이미지에 태그를 지정합니다.podman build -t my-fuse-built-image:latest .
$ podman build -t my-fuse-built-image:latest .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Podman에서 빌드 단계를 실행해야 합니다.
선택 사항: 빌드된 이미지를 테스트합니다.
fuse-builder-pod
내부에서는 방금 빌드한 이미지에서 컨테이너를 실행하여 테스트할 수 있습니다.podman run --rm my-fuse-built-image:latest
$ podman run --rm my-fuse-built-image:latest
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이렇게 하면
/app/build_info.txt
파일과 복사한 Dockerfile의 콘텐츠가 출력됩니다.Pod를 종료하고 정리합니다.
완료되면 Pod의 쉘 세션을 종료합니다.
exit
$ exit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 그런 다음 Pod가 더 이상 필요하지 않은 경우 삭제할 수 있습니다.
oc delete pod fuse-builder-pod
$ oc delete pod fuse-builder-pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 로컬 YAML 파일을 제거합니다.
rm fuse-builder-pod.yaml
$ rm fuse-builder-pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow