1.5. Podman および Buildah 用の fuse-overlayfs ストレージドライバーの使用


デフォルトでは、devfile を指定しない新しく作成されたワークスペースは、Universal Developer Image (UDI) を使用します。UDI には、開発者が一般的に使用する共通の開発ツールと依存関係が含まれています。

UDI には Podman と Buildah が含まれており、開発者はワークスペースからコンテナーイメージを構築してプッシュできます。

デフォルトでは、UDI の Podman と Buildah は vfs ストレージドライバーを使用するように設定されています。より効率的なイメージ管理を行うには、ルートレス環境でコピーオンライトをサポートする fuse-overlayfs ストレージドライバーを使用します。

ワークスペースで fuse-overlayfs を使用するには、次の要件を満たす必要があります。

  1. OpenShift バージョン 4.15 より前のバージョンの場合、管理者は https://access.redhat.com/documentation/ja-jp/red_hat_openshift_dev_spaces/3.15/html-single/administration_guide/index#administration-guide:configuring-fuse に従って、クラスター上で /dev/fuse アクセスを有効にしています。
  2. ワークスペースには、/dev/fuse デバイスを使用するために必要なアノテーションがあります。「/dev/fuse へのアクセス」を参照してください。
  3. ワークスペースコンテナー内の storage.conf ファイルは、fuse-overlayfs を使用するように設定されています。「ConfigMap で fuse-overlayfs を有効にする」を参照してください。

1.5.1. /dev/fuse へのアクセス

/dev/fuse を使用するには、/dev/fuse にアクセスできる必要があります。このセクションでは、ワークスペースコンテナーから /dev/fuse にアクセスできるようにする方法を説明します。

前提条件

手順

  1. pod-overrides 属性を使用して、https://access.redhat.com/documentation/ja-jp/red_hat_openshift_dev_spaces/3.15/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

検証手順

  1. ワークスペースを起動し、ワークスペースコンテナーで /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 のマウント」を参照してください。

前提条件

注記

このガイド に従ってマウントされた ConfigMap は、ConfigMap のデータをすべてのワークスペースにマウントするため、この手順に従うと、すべてのワークスペースのストレージドライバーが fuse-overlayfs に設定されます。「/dev/fuse へのアクセス」 に従って、ワークスペースに fuse-overlayfs を使用するために必要なアノテーションが含まれていることを確認してください。

手順

  1. プロジェクトに /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"

検証手順

  1. 必要なアノテーションを含むワークスペースを起動し、ストレージドライバーが 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
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.