Runtime Fabric でのローカルレジストリの使用

Runtime Fabric では、独自のレジストリを使用して Runtime Fabric をインストールして管理し、Kubernetes でアプリケーションを実行するために必要な Docker イメージを保存します。セキュリティポリシーで、自分で管理しているレジストリから Docker イメージを取得することが要求されている場合は、これらの Docker イメージを取得して保存するようにローカルレジストリをセットアップできます。

ローカルレジストリのサポートに関する制限事項

Mule Docker イメージ (アプリケーションデプロイメントの管理用) と Runtime Fabric ソフトウェアイメージ (Runtime Fabric ソフトウェアの更新またはインストール用) を保存するために、すべての Runtime Fabric サポート対象プラットフォームベンダーにわたってローカルレジストリを設定できます。次の詳細と制限事項は、Mule Docker イメージと Runtime Fabric ソフトウェアイメージの両方に適用されます。

OpenShift 上の Runtime Fabric Operator のインストールまたは管理にローカルレジストリを使用することはできません。
  • 『Runtime Fabric コマンドラインユーティリティ (​rtfctl​)』​ バージョン 0.3.150 以降を使用できます。 rtfctl​ を使用すると、デフォルトで最新のバージョンに Runtime Fabric エージェントがインストールされます。

  • Runtime Fabric のインストールとローカルレジストリの設定には Helm を使用できます。

  • ローカルレジストリを使用できるのは、バージョン 1.12.0 以降の新しい Runtime Fabric インスタンスを作成する場合のみです。

    ローカルレジストリをセットアップする場合は、Runtime Fabric を再インストールせずに 1.12.0 より後のバージョンにアップグレードできます。

    既存の Runtime Fabric インスタンスにローカルレジストリを追加するには、インストールが Helm ベースの『Helm 管理 Runtime Fabric への移行』であることを確認し、次のセクションのステップを実行してローカルレジストリを追加します。

  • ローカルレジストリで使用するために Runtime Fabric インスタンスを作成した場合、​rtf-runtime-registry​ エンドポイントを使用するように後から再設定することはできません。​rtf-runtime-registry​ エンドポイントを使用するには、標準のインストール手順に従って新しい Runtime Fabric インスタンスをインストールする必要があります。

  • お客様はローカルレジストリを必要な連動関係と同期する責任を負います。

  • 認証が必要なローカルレジストリを使用している場合、異なる名前空間の間でのプルシークレットの同期と伝播は各自の責任となります。または、シークレットで次の表示ラベルを使用している場合は、Runtime Fabric により異なる名前空間の間でプルシークレットを同期できます。

  labels:
    rtf.mulesoft.com/synchronized: "true"

ローカルレジストリへの Mule Runtime の連動関係とイメージの同期

アプリケーションのデプロイメントに使用する Mule Runtime バージョンをレジストリ内で同期するには、​「Mule runtime patch updates for Runtime Fabric Release Notes (Runtime Fabric リリースノートの Mule Runtime パッチ更新)」​を参照してください。イメージの場所は次の形式に従います: rtf-runtime-registry.kprod.msap.io/mulesoft/​。

ローカルレジストリへの Runtime Fabric コアソフトウェアの連動関係とイメージの同期

Runtime Fabric をインストールするには、まず連動関係イメージをローカルレジストリに同期する必要があります。同期を実行するには自動的にスクリプトを実行するか手動でコマンドを実行します。

連動関係イメージを自動的に同期するには、​docker​、​curl​、​jq​ ツールを使用する bash スクリプトを実行します。

自動レジストリ同期は、Runtime Fabric バージョン 2.6.0 以降で使用できます。このスクリプトを使用して以前の連動関係を取得することはできません。

「Runtime Manager のアクセス管理権限」​が ​[Read Runtime Fabric (Runtime Fabric の読み取り)]​ に設定されていることを確認します。この設定により、組織内で Runtime Fabric を照会できます。

  1. Unix シェルで、次のスクリプトを実行します。​agent-version​、​authorization-token​、​mulesoft-docker-server​、およびその他のパラメーター値は適宜置き換えます。

    OpenShift 以外の環境の場合:

    ##!/usr/bin/env bash
    dependencies=$(curl <platform-url>/runtimefabric/api/agentmanifests/<agent-version>         -H 'Authorization: bearer <authorization-token>' | jq -c '.dependencies |.[] | select(.provider | contains("generic")) | "\(.artifact):\(.version)"' | sed 's/"//g')
    for i in $dependencies
    do
        echo "Processing $i"
        docker pull <mulesoft-docker-server>/mulesoft/$i
        docker tag  <mulesoft-docker-server>/mulesoft/$i <local-docker-server>/mulesoft/$i
        docker push <local-docker-server>/mulesoft/$i
    done
    copy

    OpenShift 環境の場合:

    ##!/usr/bin/env bash
    dependencies=$(curl <platform-url>/runtimefabric/api/agentmanifests/<agent-version>         -H 'Authorization: bearer <authorization-token>' | jq -c '.dependencies |.[] | select(.provider | contains("openshift")) | "\(.artifact):\(.version)"' | sed 's/"//g')
    for i in $dependencies
    do
        echo "Processing $i"
        docker pull <mulesoft-docker-server>/mulesoft/$i
        docker tag  <mulesoft-docker-server>/mulesoft/$i <local-docker-server>/mulesoft/$i
        docker push <local-docker-server>/mulesoft/$i
    done
    copy
    Table 1. スクリプトパラメーター
    パラメーター 説明

    platform-url

    Anypoint Platform の URL。​https://anypoint.mulesoft.comLeaving the Site または https://eu1.anypoint.mulesoft.comLeaving the Site など。

    agent-version

    同期に必要な Runtime Fabric エージェントのリリースバージョン。

    authorization-token

    同期を実行するために接続アプリケーションを使用するのに必要な認証トークン。このトークンを使用すると、リンクは接続アプリケーションページにリダイレクトします。

    mulesoft-docker-server

    同期に必要な MuleSoft Docker サーバー。
    US コントロールプレーン: rtf-runtime-registry.kprod.msap.io
    EU コントロールプレーン: rtf-runtime-registry.kprod-eu.msap.io

Runtime Fabric 向けのローカルレジストリの設定

ローカルレジストリをセットアップするには、レジストリを同期するために必要なログイン情報を収集して追加する必要があります。

始める前に

次の作業を必ず実行しておいてください。

  1. 非公開の Docker イメージレジストリをセットアップ、設定、およびテストします。

  2. Runtime Fabric のインストールに必要なすべての Docker イメージをローカルレジストリに​同期します​。

    ご使用の Runtime Fabric バージョンの必須の連動関係については、​「Runtime Fabric リリースノート」​を参照してください。

    連動関係バージョンは Runtime Fabric バージョンに固有です。

rtfctl​ または ​helm​ とローカルレジストリを使用して Runtime Fabric をインストールするには、次のいずれかのオプションを選択します。

  1. rtfctl​ コマンドラインユーティリティ」​バージョン 0.3.150 以降をダウンロードしてインストールします。

  2. rtf-runtime-registry​ ログイン情報を取得します。

    # rtfctl get registry-credentials <activation-data>
    copy

    このコマンドにより、現在のシェル環境で ​RTF_IMAGE_REGISTRY_ENDPOINT​、​RTF_IMAGE_REGISTRY_USER​、​RTF_IMAGE_REGISTRY_PASSWORD​ が設定されます。

  3. 次のコマンドを実行して、​rtf-runtime-registry​ への Docker ログインが成功することを確認します。

    # eval $(rtfctl get registry-credentials <activation-data>)
    # docker login $RTF_IMAGE_REGISTRY_ENDPOINT --username $RTF_IMAGE_REGISTRY_USER --password $RTF_IMAGE_REGISTRY_PASSWORD
    copy

    ログインが成功したというメッセージが表示されます。

  4. ローカルレジストリに​コンテナイメージを同期します​。

  5. Runtime Fabric リリースノートでパブリッシュされているバージョンに基づいて、他のすべての連動関係イメージ (resourceFetcher、clusterOps など) でステップ 3 を繰り返します。

  6. レジストリへのアクセスに認証を使用している場合は、rtf 名前空間で必須のシークレットを作成します。

    # kubectl create namespace rtf
    # kubectl create secret docker-registry regcred --namespace=rtf --docker-server=<docker_server> --docker-username=<docker_username> --docker-email=<docker_email> --docker-password=<docker_password>
    # kubectl label secret regcred rtf.mulesoft.com/synchronized=true -n rtf
    copy
  7. Runtime Fabric インストールを最終処理して、ローカルレジストリから取得するように設定します。

    # rtfctl install ‘<activation_data>’ --image-pull-registry <docker-server>
    copy

    または、レジストリへのアクセスに認証を使用している場合は、次のコマンドを使用します。

    # rtfctl install ‘<activation_data>’ --image-pull-registry <docker-server> --image-pull-secret <your-local-reg-secret>
    copy

    このコマンドにより、Runtime Fabric でローカルレジストリ URL と ​image-pull-secret​ 値の必要なオーバーライドが作成され、Runtime Fabric がアップグレード後も引き続きローカルレジストリからイメージを取得するようになります。

  8. レジストリへのアクセスに認証を使用している場合は、インストールの完了後に、RTF 名前空間とアプリケーションをデプロイする他の名前空間でプルシークレットを再作成する必要があります。

  9. Mule ライセンスキーの挿入などの追加の手順については、​『インストール手順』​を参照してください。

rtfctl uninstall​ コマンドにより、インストール中に指定したプルシークレットが削除されます。

rtfctl​ を使用してバックアップと復元の手順を実行するときに、バックアップはローカルレジストリ URL とプルシークレットを参照します。