第4章 Red Hat build of MicroShift アプリケーションの埋め込みのチュートリアル


次のチュートリアルでは、さまざまな環境の MicroShift クラスターで使用するために、RHEL for Edge イメージにアプリケーションを埋め込む方法の詳細な例を示します。

4.1. アプリケーション RPM の埋め込みのチュートリアル

次のチュートリアルでは、MicroShift のインストール手順を確認し、さらにアプリケーションを埋め込むためのワークフローを説明します。Red Hat Enterprise Linux for Edge (RHEL for Edge) や MicroShift などの rpm-ostree システムにすでに慣れている場合は、そのまま手順に進んでください。

4.1.1. インストールワークフローの再確認

アプリケーションを埋め込むには、MicroShift を RHEL for Edge イメージに埋め込む場合と同様のワークフローが必要です。

  • 次の画像は、RPM、コンテナー、ファイルなどのシステムアーティファクトをブループリントに追加し、それらをイメージコンポーザーで使用して ostree コミットを作成する方法を示しています。
  • ostree コミットは、ISO パスまたはリポジトリーパスのいずれかを使用してエッジデバイスに到達できます。
  • ISO パスは非接続環境で使用できます。一方、リポジトリーパスはネットワークが通常接続されている場所でよく使用されます。

MicroShift の埋め込みワークフロー

468 RHbM install workflow 1023 1

次の手順を再確認すると、アプリケーションの埋め込みに必要な手順を理解するのに役立ちます。

  1. MicroShift を RHEL for Edge に埋め込むために、MicroShift リポジトリーを Image Builder に追加しました。
  2. MicroShift の追加など、必要なすべての RPM、コンテナーイメージ、ファイル、およびカスタマイズを宣言するブループリントを作成しました。
  3. ブループリントを Image Builder に追加し、Image Builder CLI ツール (composer-cli) を使用してビルドを実行しました。この手順では、コンテナーイメージの作成に使用される rpm-ostree コミットを作成しました。このイメージには RHEL for Edge が含まれていました。
  4. インストーラーブループリントを Image Builder に追加して、起動元の rpm-ostree イメージ (ISO) を作成しました。このビルドには、RHEL for Edge と MicroShift の両方が含まれていました。
  5. MicroShift が埋め込まれた ISO をダウンロードし、使用できるように準備し、プロビジョニングして、エッジデバイスにインストールしました。

4.1.2. アプリケーション RPM の埋め込みワークフロー

Image Builder の要件を満たすビルドホストを設定したら、マニフェストのディレクトリーの形式でアプリケーションをイメージに追加できます。これらの手順の後、アプリケーションまたはワークロードを新しい ISO に埋め込む最も簡単な方法は、マニフェストを含む独自の RPM を作成します。アプリケーションの RPM には、デプロイメントを記述するすべての設定ファイルが含まれています。

次の「アプリケーションの埋め込みワークフロー」の画像は、Kubernetes アプリケーションマニフェストと RPM 仕様ファイルが単一のアプリケーション RPM ビルドにどのように組み合わされるかを示しています。このビルドは、MicroShift を ostree コミットに埋め込むワークフローで使用する RPM アーティファクトになります。

アプリケーションの埋め込みワークフロー

468 RHbM install workflow 1023 2

以下の手順では、rpmbuild ツールを使用して、仕様ファイルとローカルリポジトリーを作成します。この仕様ファイルにより、パッケージのビルド方法を定義し、アプリケーションマニフェストを RPM パッケージ内の正しい場所に移動して、MicroShift が取得できるようにします。この RPM パッケージは ISO に埋め込まれます。

4.1.3. アプリケーション RPM の作成準備

独自の RPM を構築するには、rpmbuild ツールなどの任意のツールを選択し、ホームディレクトリーで RPM ビルドツリーを初期化します。以下に手順の例を示します。RPM が Image Builder にアクセスできる限り、任意の方法を使用してアプリケーション RPM を構築できます。

前提条件

  • Image Builder のシステム要件を満たす Red Hat Enterprise Linux for Edge (RHEL for Edge) 9.2 ビルドホストを設定している。
  • ホストへの root アクセス権限がある。

手順

  1. rpmbuild ツールをインストールし、以下のコマンドを実行してその yum リポジトリーを作成します。

    $ sudo dnf install rpmdevtools rpmlint yum-utils createrepo
  2. 次のコマンドを実行して、RPM パッケージの構築に必要なファイルツリーを作成します。

    $ rpmdev-setuptree

検証

  • 次のコマンドを実行して、ディレクトリーを一覧表示して作成を確認します。

    $ ls ~/rpmbuild/

    出力例

    BUILD RPMS SOURCES SPECS SRPMS

4.1.4. アプリケーションマニフェストの RPM パッケージの構築

独自の RPM を構築するには、アプリケーションマニフェストを RPM パッケージに追加する仕様ファイルを作成する必要があります。以下に手順の例を示します。イメージ構築に必要なアプリケーション RPM およびその他の要素が Image Builder にアクセスできる限り、任意の方法を使用できます。

前提条件

  • Image Builder のシステム要件を満たす Red Hat Enterprise Linux for Edge (RHEL for Edge) 9.2 ビルドホストを設定している。
  • ホストへの root アクセス権限がある。
  • RPM パッケージの構築に必要なファイルツリーが作成されている。

手順

  1. ~/rpmbuild/SPECS ディレクトリーに、次のテンプレートを使用して <application_workload_manifests.spec> などのファイルを作成します。

    仕様ファイルの例

    Name: <application_workload_manifests>
    Version: 0.0.1
    Release: 1%{?dist}
    Summary: Adds workload manifests to microshift
    BuildArch: noarch
    License: GPL
    Source0: %{name}-%{version}.tar.gz
    #Requires: microshift
    %description
    Adds workload manifests to microshift
    %prep
    %autosetup
    %install 1
    rm -rf $RPM_BUILD_ROOT
    mkdir -p $RPM_BUILD_ROOT/%{_prefix}/lib/microshift/manifests
    cp -pr ~/manifests $RPM_BUILD_ROOT/%{_prefix}/lib/microshift/
    %clean
    rm -rf $RPM_BUILD_ROOT
    
    %files
    %{_prefix}/lib/microshift/manifests/**
    %changelog
    * <DDD MM DD YYYY username@domain - V major.minor.patch>
    - <your_change_log_comment>

    1
    %install セクションは、RPM パッケージ内にターゲットディレクトリー /usr/lib/microshift/manifests/ を作成し、ソースホームディレクトリー ~/manifests からマニフェストをコピーします。
    重要

    必要な YAML ファイルはすべて、ソースホームディレクトリー ~/manifests に置かれている必要があります (kustomize を使用している場合は kustomize.yaml ファイルも含まれます)。

  2. 以下のコマンドを実行して、~/rpmbuild/RPMS ディレクトリーに RPM パッケージをビルドします。

    $ rpmbuild -bb ~/rpmbuild/SPECS/<application_workload_manifests.spec>

4.1.5. ブループリントへのアプリケーション RPM の追加

アプリケーション RPM をブループリントに追加するには、Image Builder が ISO の作成に使用できるローカルリポジトリーを作成する必要があります。この手順では、ワークロードに必要なコンテナーイメージをネットワーク経由でプルできます。

前提条件

  • ホストへの root アクセス権限がある。
  • ワークロードまたはアプリケーション RPM が ~/rpmbuild/RPMS ディレクトリーにある。

手順

  1. 次のコマンドを実行して、ローカル RPM リポジトリーを作成します。

    $ createrepo ~/rpmbuild/RPMS/
  2. 次のコマンドを実行して、Image Builder に RPM リポジトリーへのアクセス権限を付与します。

    $ sudo chmod a+rx ~
    注記

    イメージ構築に必要なファイル全てにアクセスする必須のパーミッションが Image Builder に割り当てられている必要があります。そうでないと、ビルドを続行できません。

  3. 次のテンプレートを使用して、ブループリントファイル repo-local-rpmbuild.toml を作成します。

    id = "local-rpm-build"
    name = "RPMs build locally"
    type = "yum-baseurl"
    url = "file://<path>/rpmbuild/RPMS" 1
    check_gpg = false
    check_ssl = false
    system = false
    1
    選択したロケーションを作成するパスの一部を指定します。後のコマンドでこのパスを使用して、リポジトリーを設定し、RPM をコピーします。
  4. 次のコマンドを実行して、Image Builder のソースとしてリポジトリーを追加します。

    $ sudo composer-cli sources add repo-local-rpmbuild.toml
  5. 以下の行を追加して、RPM をブループリントに追加します。

    …
    [[packages]]
    name = "<application_workload_manifests>" 1
    version = "*"
    …
    1
    ワークロードの名前をここに追加します。
  6. 次のコマンドを実行して、更新されたブループリントを Image Builder にプッシュします。

    $ sudo composer-cli blueprints push repo-local-rpmbuild.toml
  7. この時点で、Image Builder を実行して ISO を作成するか、オフラインで使用するためにコンテナーイメージを埋め込むことができます。

    1. ISO を作成するには、次のコマンドを実行して Image Builder を起動します。

      $ sudo composer-cli compose start-ostree repo-local-rpmbuild edge-commit

このシナリオでは、起動時にエッジデバイスによってネットワーク経由でコンテナーイメージがプルされます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.