2.2. 独自のイメージからカスタムイメージを作成する


独自のカスタムイメージを構築できます。ただし、イメージが OpenShift および OpenShift AI と互換性があることを確認する必要があります。

関連情報

2.2.1. 独自のワークベンチイメージを作成するための基本的なガイドライン

次の基本的なガイドラインは、独自のカスタムワークベンチイメージを構築する際に考慮すべき情報を提供します。

USER 1001 で実行するためのイメージの設計

OpenShift では、コンテナーはランダムな UID と GID 0 で実行されます。特にディレクトリーへの書き込みアクセスが必要な場合は、イメージがこれらのユーザーおよびグループの要件と互換性があることを確認してください。ベストプラクティスとしては、イメージを USER 1001 で実行するように設計することです。

$HOME にアーティファクトを配置しない

ワークベンチに接続された永続ボリュームは /opt/app-root/src にマウントされます。この場所は $HOME の場所でもあります。したがって、ワークベンチがデプロイされ、永続ボリュームがマウントされた後はファイルやその他のリソースが表示されなくなるため、$HOME に直接ファイルやその他のリソースを配置しないでください。

API エンドポイントの指定

OpenShift の readiness および liveness プローブは /api エンドポイントを照会します。Jupyter IDE の場合、これがデフォルトのエンドポイントです。他の IDE の場合は、/api エンドポイントを実装する必要があります。

2.2.2. 独自のワークベンチイメージを作成するための高度なガイドライン

次のガイドラインは、独自のカスタムワークベンチイメージをビルドする際に考慮すべき情報を提供します。

イメージサイズの最小化

ワークベンチイメージは、"階層化された" ファイルシステムを使用します。ワークベンチイメージファイルで COPY コマンドまたは RUN コマンドを使用するたびに、新しいレイヤーが作成されます。アーティファクトは削除されません。ファイルなどのアーティファクトを削除すると、次のレイヤーで "マスク" されます。したがって、ワークベンチイメージファイルを作成するときは、次のガイドラインを考慮してください。

  • dnf update コマンドは使用しないようにしてください。

    • Red Hat Catalog の ubi9/python-39 など、常に更新されるイメージから起動する場合は、dnf update コマンドを使用する必要がない場合があります。このコマンドは、新しいメタデータを取得し、影響がない可能性のあるファイルを更新し、ワークベンチのイメージサイズを増やします。
    • 古いバージョンで dnf update を実行するのではなく、ベースイメージの新しいバージョンを指定します。
  • RUN コマンドをグループ化します。各行の末尾に && \ を追加してコマンドを連結します。
  • カスタムイメージに含めるコード (ライブラリーやアプリケーションなど) をコンパイルする必要がある場合は、最終イメージにビルドアーティファクトが含まれないように、マルチステージビルドを実装します。つまり、ライブラリーまたはアプリケーションを中間イメージでコンパイルし、その結果を最終イメージにコピーして、含めたくないビルドアーティファクトを残します。

ファイルとディレクトリーへのアクセスの設定

  • 以下のように、ファイルとフォルダーの所有権を 1001:0 (ユーザー "default"、グループ "0") に設定します。

    COPY --chown=1001:0 os-packages.txt ./

    OpenShift では、(セキュリティーを変更しない限り) すべてのコンテナーは標準の namespace にあります。コンテナーは、ランダムなユーザー ID (uid) とグループ ID (gid) が 0 のユーザーで実行されます。したがって、イメージ内の書き込み先のすべてのフォルダーと (一時的に) 変更するすべてのファイルは、ランダムユーザー ID (uid) を持つユーザーがアクセスできる必要があります。または、次の例に示すように、任意のユーザーにアクセスを設定することもできます。

    COPY --chmod=775 os-packages.txt ./
  • 永続化するデータのデフォルトの場所として /opt/app-root/src を使用してイメージをビルドします。次に例を示します。

    WORKDIR /opt/app-root/src

    ユーザーが OpenShift AI Applications Enabled ページからワークベンチを起動すると、ユーザーの "個人" のボリュームが /opt/app-root/src にマウントされます。この場所は設定できないため、カスタムイメージをビルドするときに、永続化データのこのデフォルトの場所を指定する必要があります。

  • OpenShift 環境で PIP (Python パッケージのパッケージマネージャー) をサポートするための権限を修正します。次のコマンドをカスタムイメージに追加します (必要に応じて、python3.9 を使用している Python バージョンに変更します)。

    chmod -R g+w /opt/app-root/lib/python3.9/site-packages && \
       fix-permissions /opt/app-root -P
  • ワークベンチイメージ内のサービスは ${NB_PREFIX}/api で応答する必要があります。そうでない場合、OpenShift の liveness/readiness プローブは失敗し、ワークベンチイメージの Pod が削除されます。

    NB_PREFIX 環境変数は、コンテナーがリッスンすると予想される URL パスを指定します。

    以下は、Nginx 設定の例です。

    location = ${NB_PREFIX}/api {
    	return 302  /healthz;
    	access_log  off;
    }
  • アイドルカリングが機能するには、次の例に示すように、${NB_PREFIX}/api/kernels URL が特定の形式の JSON ペイロードを返す必要があります。

    以下は、Nginx 設定の例です。

    location = ${NB_PREFIX}/api/kernels {
    	return 302 $custom_scheme://$http_host/api/kernels/;
    	access_log  off;
    }
    
    location ${NB_PREFIX}/api/kernels/ {
    	return 302 $custom_scheme://$http_host/api/kernels/;
    	access_log  off;
    }
    
    location /api/kernels/ {
      index access.cgi;
      fastcgi_index access.cgi;
      gzip  off;
      access_log	off;
     }

    返される JSON ペイロードは次のようになります。

    {"id":"rstudio","name":"rstudio","last_activity":(time in ISO8601 format),"execution_state":"busy","connections": 1}

CodeReady Builder (CRB) と Enterprise Linux 用の追加パッケージ (EPEL) を有効にする

CRB と EPEL は、標準の Red Hat Enterprise Linux (RHEL) または Universal Base Image (UBI) インストールには存在しないパッケージを提供するリポジトリーです。このリポジトリーは必須で、RStudio などのソフトウェアをインストールする場合に役立ちます。

UBI9 イメージでは、CRB がデフォルトで有効になっています。UBI9 ベースのイメージで EPEL を有効にするには、次のコマンドを実行します。

 RUN yum install -y https://download.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

Centos Stream 9 ベースのイメージで CRB と EPEL を有効にするには、次のコマンドを実行します。

 RUN yum install -y yum-utils && \
    yum-config-manager --enable crb && \
    yum install -y https://download.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

Elyra 互換性の追加

データサイエンスパイプライン V2 (odh-elyra パッケージで提供) のサポートは、Red Hat OpenShift AI バージョン 2.9 以降で利用できます。OpenShift AI の以前のバージョンでは、データサイエンスパイプライン V1 (elyra パッケージで提供) がサポートされています。

カスタムイメージでデータサイエンスパイプライン V2 をサポートする場合は、次の要件を満たす必要があります。

  • Data Science pipeline V2 のサポートを受けるには、以下のように、odh-elyra パッケージ (elyra パッケージではありません) を含めます。

     USER 1001
    
     RUN pip install odh-elyra
  • データサイエンスパイプライン設定をランタイム設定として自動的に含める場合は、カスタムワークベンチイメージをインポートするときにアノテーションを追加します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.