5.16. マルチプラットフォームをサポートするための Operator プロジェクトの設定


複数のアーキテクチャーとオペレーティングシステム (プラットフォーム) をサポートする Operator プロジェクトは、単一のプラットフォームのみをサポートする Operator プロジェクトよりも多くの Kubernetes および OpenShift Container Platform クラスターで実行できます。アーキテクチャーの例には、amd64arm64ppc64les390x があります。オペレーティングシステムの例には、Linux や Windows などがあります。

Operator プロジェクトが複数の OpenShift Container Platform プラットフォームで実行できるようにするには、以下のアクションを実行します。

  • Operator がサポートするプラットフォームを指定するマニフェストリストを作成します。
  • マルチアーキテクチャーのコンピュートマシンをサポートするように Operator のノードアフィニティーを設定します。
重要

Operator プロジェクトの関連スキャフォールディングおよびテストツールなど、Red Hat がサポートするバージョンの Operator SDK CLI ツールは非推奨となり、OpenShift Container Platform の今後のリリースで削除される予定です。Red Hat は、現在のリリースライフサイクル中にこの機能のバグ修正とサポートを提供しますが、この機能は今後、機能拡張の提供はなく、OpenShift Container Platform リリースから削除されます。

新しい Operator プロジェクトを作成する場合、Red Hat がサポートするバージョンの Operator SDK は推奨されません。既存の Operator プロジェクトを使用する Operator 作成者は、OpenShift Container Platform 4.16 でリリースされるバージョンの Operator SDK CLI ツールを使用してプロジェクトを維持し、OpenShift Container Platform の新しいバージョンを対象とする Operator リリースを作成できます。

Operator プロジェクトの次の関連ベースイメージは 非推奨 ではありません。これらのベースイメージのランタイム機能と設定 API は、バグ修正と CVE への対応のために引き続きサポートされます。

  • Ansible ベースの Operator プロジェクトのベースイメージ
  • Helm ベースの Operator プロジェクトのベースイメージ

OpenShift Container Platform で非推奨となったか、削除された主な機能の最新の一覧は、OpenShift Container Platform リリースノートの 非推奨および削除された機能 セクションを参照してください。

サポートされていない、コミュニティーによって管理されているバージョンの Operator SDK は、Operator SDK (Operator Framework) を参照してください。

5.16.1. Operator がサポートするプラットフォームのマニフェストリストの作成

make docker-buildx コマンドを使用すると、Operator とオペランドによってサポートされるプラットフォームのマニフェストリストを作成できます。マニフェストリストは、1 つ以上のアーキテクチャーの特定のイメージマニフェストを参照します。イメージマニフェストは、イメージがサポートするプラットフォームを指定します。

詳細は、OpenContainers Image Index Spec または Image Manifest v2, Schema 2 を参照してください。

重要

Operator プロジェクトがアプリケーションまたはその他のワークロードリソースをデプロイする場合、次の手順では、アプリケーションのリリースプロセス中にアプリケーションのマルチプラットフォームイメージが構築されることを前提としています。

前提条件

  • Operator SDK バージョン 1.36.1 以降を使用して構築された Operator プロジェクトがある。
  • Docker がインストールされている。

手順

  1. Operator とオペランドのイメージマニフェストを調べて、Operator プロジェクトがサポートできるプラットフォームを見つけます。次のコマンドを実行して、イメージマニフェストを検査します。

    $ docker manifest inspect <image_manifest> 
    1
    1
    redhat/ubi9:latest などのイメージマニフェストを指定します。

    Operator とオペランドが相互にサポートするプラットフォームによって、Operator プロジェクトのプラットフォーム互換性が決まります。

    出力例

    {
        "manifests": [
            {
                "digest": "sha256:c0669ef34cdc14332c0f1ab0c2c01acb91d96014b172f1a76f3a39e63d1f0bda",
                "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
                "platform": {
                    "architecture": "amd64",
                    "os": "linux"
                },
                "size": 528
            },
    ...
            {
                "digest": "sha256:30e6d35703c578ee703230b9dc87ada2ba958c1928615ac8a674fcbbcbb0f281",
                "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
                "platform": {
                    "architecture": "arm64",
                    "os": "linux",
                    "variant": "v8"
                },
                "size": 528
            },
    ...
        ]
    }

  2. 前のコマンドでプラットフォーム情報が出力されない場合、指定されたベースイメージはイメージマニフェストではなく単一イメージである可能性があります。次のコマンドを実行すると、イメージがサポートするアーキテクチャーを確認できます。

    $ docker inspect <image>
  3. Go ベースの Operator プロジェクトの場合、Operator SDK はプロジェクトの Dockerfile で amd64 アーキテクチャーを明示的に参照します。Dockerfile に次の変更を加えて、環境変数をプラットフォームフラグで指定された値に設定します。

    Dockerfile の例

    FROM golang:1.19 as builder
    ARG TARGETOS
    ARG TARGETARCH
    ...
    RUN CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} go build -a -o manager main.go 
    1

    1
    GOARCH フィールドを amd64 から $TARGETARCH に変更します。
  4. Operator プロジェクトの makefile は、PLATFORMS 環境変数を定義します。Operator のイメージがデフォルトで設定されているプラットフォームの一部をサポートしていない場合は、変数を編集してサポートされているプラットフォームを指定します。次の例では、サポートされるプラットフォームを linux/arm64 および linux/amd64 として定義します。

    例 makefile

    # ...
    PLATFORMS ?= linux/arm64,linux/amd64 
    1
    
    .PHONY: docker-buildx
    # ...

    1
    デフォルトでは、次の PLATFORMS 値が設定されています (linux/arm64linux/amd64linux/s390x、および linux/ppc64le)。

    make docker buildx コマンドを実行してマニフェストリストを生成すると、Operator SDK は PLATFORMS 変数で指定されたプラットフォームごとにイメージマニフェストを作成します。

  5. Operator プロジェクトディレクトリーから次のコマンドを実行して、マネージャーイメージを構築します。コマンドを実行すると、マルチプラットフォームをサポートするマネージャーイメージが構築され、マニフェストリストがレジストリーにプッシュされます。

    $ make docker-buildx \
      IMG=<image_registry>/<organization_name>/<repository_name>:<version_or_sha>
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る