1.5. Podman および Buildah 用の fuse-overlayfs ストレージドライバーの使用
デフォルトでは、devfile を指定しない新しく作成されたワークスペースは、Universal Developer Image (UDI) を使用します。UDI には、開発者が一般的に使用する共通の開発ツールと依存関係が含まれています。
UDI には Podman と Buildah が含まれており、開発者はワークスペースからコンテナーイメージを構築してプッシュできます。
デフォルトでは、UDI の Podman と Buildah は vfs
ストレージドライバーを使用するように設定されています。より効率的なイメージ管理を行うには、ルートレス環境でコピーオンライトをサポートする fuse-overlayfs ストレージドライバーを使用します。
ワークスペースで fuse-overlayfs を実行するには、次の要件を満たす必要があります。
-
OpenShift バージョン 4.15 より前のバージョンの場合、管理者は https://access.redhat.com/documentation/ja-jp/red_hat_openshift_dev_spaces/3.14/html-single/administration_guide/index#administration-guide:configuring-fuse に従って、クラスター上で
/dev/fuse
アクセスを有効にしています。 -
ワークスペースには、
/dev/fuse
デバイスを使用するために必要なアノテーションがあります。「/dev/fuse へのアクセス」を参照してください。 -
ワークスペースコンテナー内の
storage.conf
ファイルは、fuse-overlayfs を使用するように設定されています。「ConfigMap で fuse-overlayfs を有効にする」を参照してください。
1.5.1. /dev/fuse へのアクセス
/dev/fuse を使用するには、/dev/fuse
にアクセスできる必要があります。このセクションでは、ワークスペースコンテナーから /dev/fuse
にアクセスできるようにする方法を説明します。
前提条件
-
OpenShift バージョン 4.15 より前のバージョンの場合、管理者は https://access.redhat.com/documentation/ja-jp/red_hat_openshift_dev_spaces/3.14/html-single/administration_guide/index#administration-guide:configuring-fuse に従って
/dev/fuse
へのアクセスを有効にしています。 - fuse-overlayfs を使用するワークスペースを決定します。
手順
pod-overrides
属性を使用して、https://access.redhat.com/documentation/ja-jp/red_hat_openshift_dev_spaces/3.14/html-single/administration_guide/index#administration-guide:configuring-fuse で定義されている必要なアノテーションをワークスペースに追加します。pod-overrides
属性を使用すると、ワークスペース Pod のspec
内の特定のフィールドをマージできます。OpenShift バージョン 4.15 より前のバージョンの場合:
$ 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=merge
OpenShift バージョン 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
この手順を完了したら、Podman に fuse-overlayfs を使用する 「ConfigMap で 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
- 1
fuse-overlayfs
バイナリーへの絶対パス。/usr/bin/fuse-overlayfs
パスは UDI のデフォルトです。
ワークスペースを起動した後、これを手動で実行できます。もう 1 つのオプションは、storage.conf
を変更した UDI に基づいて新しいイメージを構築し、その新しいイメージをワークスペースに使用することです。
それ以外の場合は、更新されたファイルをマウントする ConfigMap を作成することで、プロジェクト内のすべてのワークスペースの /home/user/.config/containers/storage.conf
を更新できます。「ConfigMap のマウント」を参照してください。
前提条件
-
OpenShift バージョン 4.15 より前のバージョンの場合、管理者は https://access.redhat.com/documentation/ja-jp/red_hat_openshift_dev_spaces/3.14/html-single/administration_guide/index#administration-guide:configuring-fuse に従って
/dev/fuse
へのアクセスを有効にしています。 - 必要なアノテーションを含むワークスペースは 「/dev/fuse へのアクセス」 のように設定されます。
このガイド に従ってマウントされた ConfigMap は、ConfigMap のデータをすべてのワークスペースにマウントするため、この手順に従うと、すべてのワークスペースのストレージドライバーが fuse-overlayfs に設定されます。「/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: file controller.devfile.io/mount-path: /home/user/.config/containers data: storage.conf: | [storage] driver = "overlay" [storage.options.overlay] mount_program="/usr/bin/fuse-overlayfs"
検証手順
必要なアノテーションを含むワークスペースを起動し、ストレージドライバーが
overlay
であることを確認します。$ 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