Runtime Fabric に Mule アプリケーションをデプロイする

Mule アプリケーションを Anypoint Runtime Fabric にデプロイし、デプロイされたアプリケーションのインバウンドトラフィックをテストします。

開始する前に

アプリケーションを Anypoint Runtime Fabric にデプロイする前に、次のことを実行する必要があります。

アプリケーションをデプロイする

アプリケーションをデプロイするには、次の手順を実行します。

  1. Anypoint Platform​ にサインインします。

  2. Runtime Manager​ に移動し、​[Applications (アプリケーション)]​ セクションを選択します。

  3. [Deploy application (アプリケーションをデプロイ)]​ をクリックします。

  4. [Application Name (アプリケーション名)]​ 項目で、アプリケーションに名前を付けます。

    名前に使用できるのは、小文字の英数字、ハイフン、およびアンダースコアのみです。

  5. [Choose File (ファイルを選択)]​ をクリックしてデプロイするアプリケーションを選択し、次のいずれかのオプションを選択します。

    • Import file from Exchange (Exchange からファイルをインポート)​: Anypoint Exchange に保存されている Mule アプリケーションを選択可能。

    • Upload file (ファイルをアップロード)​: ファイルシステムから Mule アプリケーションファイルを選択可能。

  6. [Deployment Target (デプロイメント対象)]​ ドロップダウンリストから、Runtime Fabric の名前を選択します。

    結果​: [Deployment Target (デプロイメント対象)]​、​[Ingress (イングレス)]​、および ​[Properties (プロパティ)]​ タブが表示されます。これらのタブを使用して、アプリケーションの追加設定情報を入力します。

  7. [Deployment Target (デプロイメント対象)]​ タブを選択します。

    このタブには、上記で選択したデプロイメント対象の名前と種別が表示されます。

  8. [Runtime Version (ランタイムバージョン)]​ ドロップダウンリストから、Mule Runtime エンジンバージョンを選択します。

  9. デプロイするアプリケーションのレプリカまたはインスタンスの数を選択します。

    高可用性には、少なくとも 2 つのレプリカが必要です。
  10. アプリケーションの各レプリカで Mule のクラスター化を有効にするには、​[Run in Runtime Clustering Mode (ランタイムのクラスター化モードで実行)]​ を有効にします。

  11. [Cores (コア)]​ の数と ​[Memory (メモリ)]​ の量を指定し、スライダーを適切な値に調整してアプリケーションの各レプリカに割り当てます。

    アプリケーションを Runtime Fabric にデプロイするために​リソース割り当てを決定​する方法を確認してください。

  12. アプリケーションのネットワーク設定を指定します。

    1. [Ingress (イングレス)]​ タブをクリックします。

    2. 次のオプションを有効または無効にします。

      • Enable inbound traffic to this application (このアプリケーションへのインバウンドトラフィックを有効化)​: 受信 HTTP 要求をこのアプリケーションで処理可能にする。アプリケーションがポート 8081 で接続を受け入れるように設定されていることを確認します。

      • Enable Last-Mile security (Last-Mile セキュリティを有効化)​: このアプリケーションによって復号化される HTTPS 接続を転送する。このためには SSL 証明書を Mule アプリケーションに含む必要があり、より多くの CPU リソースも必要です。

  13. アプリケーションプロパティを設定します。

    1. [Properties (プロパティ)]​ タブをクリックします。

    2. アプリケーションプロパティをキーと値のペアとして指定します。

  14. [Deploy Application (アプリケーションをデプロイ)]​ をクリックします。

    [Deploy Application (アプリケーションをデプロイ)]​ ボタンが無効な場合、有効な Mule アプリケーションファイルをアップロードしていることを確認します。また、選択した Mule Runtime エンジンのバージョンがアプリケーションで使用されているバージョンと同じであることも確認します。

結果​: Runtime Manager にアプリケーションのデプロイメントを確認する状況メッセージが表示されます。デプロイメントが開始されると、デプロイメントの状況を参照できるアプリケーションリストページが表示されます。

新しくデプロイされたアプリケーションの場合、最初の状況は ​[Starting (開始中)]​ と表示されます。アプリケーションが成功した場合、状況は ​[Started (開始済み)]​ に更新されます。アプリケーションの状況を監視し、正常に開始されたことを確認します。

検証

デプロイされたアプリケーションのインバウンドトラフィックをテストするため、ドメインに設定されたホストヘッダーと共にコントローラーの IP アドレスを使用して要求を送信できます。ホストヘッダーは、アプリケーション URL の構造によって異なります。

  1. たとえば次のように、アプリケーションのワーカーノードを探してアプリケーションの URL パス (存在する場合) を特定します。

    kubectl get pods --all-namespaces | grep {app-name}
    
    873835cd-273a-4623-9203-ecaa1b975a5e   {app-name}-f9b7d85d-59df7                   2/2     Running     0          2m48s
  2. コントローラーノードで、アプリケーションのワーカーノードへの接続を取得します。

    kubectl exec -n 873835cd-273a-4623-9203-ecaa1b975a5e {app-name}-f9b7d85d-59df7 -c app -it -- /bin/bash
  3. アプリケーションのワーカーノードで、URL パスを取得します。この例では、URL パスは ​/helloWorld​ です。

    app@{app-name}-f9b7d85d-59df7:/opt/mule/apps/{app-name}$ cat hello-world.xml
    
    <?xml version="1.0" encoding="UTF-8"?>
    
    <mule xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core"
    	xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
    http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd">
    	<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="d6132ed6-b549-4a5a-ab30-b0006362476b" >
    		<http:listener-connection host="0.0.0.0" port="8081" />
    	</http:listener-config>
    	<flow name="hello-worldFlow" doc:id="fb709ee4-0263-492c-92e3-ba5bb6287cd7" >
    		<http:listener doc:name="Listener" doc:id="b4f5d981-3869-46e4-879b-2ba9e8e1c2b7" config-ref="HTTP_Listener_config" path="/helloWorld"/>
    		<logger level="INFO" doc:name="Logger" doc:id="d254b372-8ea9-4b59-bb07-04cc2bf715a5" message="#[attributes.requestPath]"/>
    		<set-payload value="Hello World!" doc:name="Set Payload" doc:id="c04ac342-40dd-48ec-bf80-206d3aaa77e3" mimeType="text/plain"/>
    	</flow>
    </mule>
  4. 取得した ​{path}​ 情報を使用して、アプリケーションの URL の形式に基づいて次の cURL コマンドのいずれかを使用して検証します。

    • {app-name}.domain.com​ 形式のアプリケーション URL では、要求ヘッダー形式 ​Host: {app-name}.domain.com​ を使用します 。次の cURL コマンドを使用して検証します。

      curl -Lvk -XGET -H 'Host: {app_name}.<domain of worker>' https://{worker-ip-address>}/{path}

      次に例を示します。

      curl -Lvk -XGET -H 'Host: hworld-app.eu-north-1.compute.amazonaws.com' https://13.53.214.196/helloWorld
    • domain.com/{app-name}​ 形式のアプリケーション URL では、要求ヘッダー形式 ​Host: domain.com​ を使用します 。次の cURL コマンドを使用して検証します。

      curl -Lvk -XGET https://{worker-ip-address}/{app-name}/{path} -H "Host: <domain of worker>"

      次に例を示します。

      curl -Lvk -XGET https://{worker-ip-address}/hworld-app/helloWorld -H "Host: eu-north-1.compute.amazonaws.com"

一般的な問題

アプリケーションが数分間 ​[Starting (開始中)]​ 状況のままの場合、指定したリソース量が少なすぎることが原因の可能性があります。0.3 コア以下を選択した場合、アプリケーションの起動に数分かかることは一般的です。

起動時にアプリケーションでエラーが発生した場合、デプロイメントが停止し、状況は ​[Failed (失敗)]​ に更新されます。アプリケーションをクリックして右サイドバーを表示すると、エラーメッセージのプレビューが表示されます。メッセージ全体を表示するには、​[Manage Application (アプリケーションを管理)]​ ボタンをクリックします。詳細は、オペレーションセンターでアプリケーションログを表示するか、サードパーティのログプロバイダーを使用して確認できます。

Runtime Fabric にデプロイメントで使用可能な CPU コアまたはメモリがない場合、​insufficient resources​ を示すエラーメッセージが返されます。複数のレプリカを選択する場合、指定されたコアとメモリが​​レプリカに適用されることを理解することが重要です。

既存の実行中のアプリケーションへの再デプロイメントが失敗した場合、以前のアプリケーションは実行中で有効なままになります。この動作により、ダウンタイムゼロのアプリケーションの再デプロイメントが可能になります。Runtime Manager では、失敗の解決に役立つ失敗したデプロイメントの詳細と状況が報告されます。