Application Manager API を使用した TCP を使用するアプリケーションのデプロイ

HTTP または HTTPS 以外のプロトコルを設定するには、まず非公開スペースの TCP トラフィックを許可する TCP インバウンドファイアウォールルールを設定します。その後、 Application Manager API​ を使用して TCP を使用するアプリケーションをデプロイできます。

TCP を使用してファイアウォールルールを設定するには、​「ファイアウォールルールを設定する」​の手順に従って TCP を選択してください。

アプリケーションに使用可能なポートの確認

TCP のポート範囲は 30500 ~ 32500 です。ポートが使用できることを確認するには、使用可能なポートのリストを返す CloudHub 2.0 API​ を使用します。

次の例は、使用可能なポートを確認するために使用した場合の API 要求と応答を示しています。

要求:

GET
https:/anypoint.mulesoft.com/runtimefabric/api/organizations/{organizationId}/privatespaces/{privatespaceId}/ports?available=true&count=10

要求では、​available​ パラメーターで使用済みのポートと未使用のポートを切り替えることができます。 count​ パラメーターでポートの数 (1 ~ 10) を指定できます。実際に使用可能なポートの数によって最終的な結果は制限されます。

応答:

{
   "ports": [
       30500,
       30501,
       30502,
       30503,
       30504,
       30511,
       30512,
       30513,
       30514,
       30515
   ]
}

Application Manager API を使用したアプリケーションのデプロイ

Application Manager API​ で、​deploymentSettings​ の ​tcp​ セクションを使用して TCP ポートをマップし、アプリケーションをデプロイします。マッピングでは、外部ポートを使用して ​portNumber​ とアプリケーションレベルで定義されたポート ​applicationPortNumber​ を公開します。アプリケーションごとに最大 10 個のポートを設定できます。

次の例は、TCP ポートマッピングを使用して新しいアプリケーションをデプロイする要求を示しています。

POST https://anypoint.mulesoft.com/amc/application-manager/api/v2/organizations/{organizationId}/environments/{environmentId}/deployments

{
 "name": "logs-app-uc01",
 "labels": [
   "beta"
 ],
 "target": {
   "provider": "MC",
   "targetId": "cfe2157f-438b-4fb8-81fe-13ec89c55545",
   "deploymentSettings": {
     "clustered": false,
     "enforceDeployingReplicasAcrossNodes": false,
//------------------------------------NEW-------------------------------------
     "tcp": {
         "inbound": {
           "ports": [
             {
               "portNumber": 30500,
               "applicationPortNumber": 9000
             },
             {
               "portNumber": 30501,
               "applicationPortNumber": 9001
             },
             {
               "portNumber": 30502,
               "applicationPortNumber": 9002
             },
           ]
         }
       },
//------------------------------------NEW-------------------------------------
     "jvm": {},
     "runtimeVersion": "4.4.0:20220523-1",
     "updateStrategy": "rolling",
     "disableAmLogForwarding": false,
     "generateDefaultPublicUrl": true
   },
   "replicas": 1
 },
 "application": {
   "ref": {
     "groupId": "66310c16-bce5-43c4-b978-5945ed2f99c5",
     "artifactId": "app-with-40-schedulers",
     "version": "1.0.5",
     "packaging": "jar"
   },
   "assets": [],
   "desiredState": "STARTED",
   "configuration": {
     "mule.agent.application.properties.service": {
       "applicationName": "logs-app-uc01",
       "properties": {},
       "secureProperties": {}
     },
     "mule.agent.logging.service": {
       "artifactName": "logs-app-uc01",
       "scopeLoggingConfigurations": []
     }
   },
   "integrations": {
     "services": {
       "objectStoreV2": {
         "enabled": false
       }
     }
   },
   "vCores": "0.05"
 }
}

使用できないポートが含まれているデプロイメントは失敗します。成功したデプロイメントでは新たにマップされたポートを使用しており、これらのポートは使用できなくなります。アプリケーションが削除されると、ポートは再び使用可能になります。

Application Manager API を使用したアプリケーションの更新

Application Manager API​ を使用して、​deploymentSettings​ の ​tcp​ マッピングを変更して TCP ポートを更新してからアプリケーションをデプロイします。

次の例は、新しい TCP マッピングを使用して既存のアプリケーションとその本文を更新する要求を示しています。

PATCH
https://anypoint.mulesoft.com/amc/adam/api/organizations/{organizationId}/environments/{environmentId}/deployments/{deploymentId}

{
    "id": "id",
    "target": {
      "provider": "MC",
      "targetId": "873a9879-cca7-4211-b90e-826e98123929",
      "deploymentSettings": {
        "tcp": {
          "inbound": {
            "ports": [
              {
                "portNumber": 30507,
                "applicationPortNumber": 9007
              },
              {
                "portNumber": 30508,
                "applicationPortNumber": 9008
              },
              {
                "portNumber": 30509,
                "applicationPortNumber": 9009
              }
            ]
          }
        }
      }
    }
  }

使用できないポートが含まれている更新は失敗します。成功したデプロイメントでは新たにマップされたポートを使用しており、これらのポートは使用できなくなります。新しいマッピングで置き換えたポートは使用できるようになります。

TCP アプリケーションへのアクセス

VPN または移行ゲートウェイを使用して非公開スペース内でアプリケーションにアクセスできます。アプリケーションはワーカーノードで実行されるため、インターネットを介して直接アクセスすることはできません。TCP アプリケーションにアクセスするための URL は次のような構造になります: {application-url}.tcp.{environment}.cloudhub.io:{port}

URL の例としては ​mllp-app-2-mpskt5.q8b5lv.tcp.usa-e1.cloudhub.io:30500​ のようになります。