Runtime Fabric でのプロキシの管理

Runtime Fabric は、アプリケーションを実行およびホストするときに 2 種類のプロキシを使用します。

  • システムプロキシ: Docker デーモンやその他の内部コンポーネントを含む、Kubernetes クラスターサービス間の接続を可能にするプロキシが含まれます。Runtime Fabric を使用する場合は、システムプロキシを設定および管理する必要があります。

  • アプリケーションプロキシ: Runtime Fabric で実行されているアプリケーションへの接続を可能にするプロキシが含まれます。

インターネットへの Runtime Fabric アウトバウンド接続で使用するプロキシ設定を設定できます。これには、Anypoint コントロールプレーンに接続するための HTTP プロキシと、メトリクスとログを Anypoint Monitoring に送信するための SOCKS5 プロキシの両方が含まれます。アプリケーションのプロキシを設定することもできます。

rtfctl のインストール

Runtime Fabric のプロキシ設定を管理するには、​rtfctl​ コマンドラインツールが必要です。プロキシ設定を行う前に、​rtfctl をインストール​する手順を実行します。

Helm を使用してインストールする場合は、Runtime Fabric のインストール中にプロキシ設定を適用できます。詳細は、​「Helm を使用した Runtime Fabric のインストール」​を参照してください。

Anypoint Monitoring プロキシを設定する

監視エージェントは SOCKS5 プロキシを使用するため、Anypoint Monitoring を使用する場合は 2 つのプロキシ種別が必要です。

SOCKS5 プロキシは、次のエンドポイントで TCP 経由で Anypoint Monitoring に接続する必要があります。

  • US コントロールプレーン: dias-ingestor-router.us-east-1.prod.cloudhub.io

  • EU コントロールプレーン: dias-ingestor-router.eu-central-1.prod-eu.msap.io

    1. rtfctl​ がインストールされているノードにログインします。

    2. 次のコマンドを実行し、プレースホルダーの値を次の値に置き換えます。

      sudo /opt/anypoint/runtimefabric/rtfctl apply monitoring-proxy "socks5://<user>:<pass>@<10.0.0.2>:<8080>"
  • <user>​: SOCKS5 プロキシの認証に必要なユーザー名。

  • <pass>​: SOCKS5 プロキシの認証に必要なパスワード。

    パスワードは URL にエンコードされている必要があります。
  • <10.0.0.2>​: SOCKS5 プロキシへのアクセスに使用される IP アドレスまたはホスト名。

  • <8080>​: SOCKS5 プロキシが要求をリスンするホストのポート。

    1. 変更が成功したことを確認するには、次のコマンドを実行して、監視プロキシの現在の値を出力します。

      sudo /opt/anypoint/runtimefabric/rtfctl get monitoring-proxy

      出力は期待される値と一致する必要があります。

Runtime Fabric のサービス用に HTTP プロキシを設定する

アウトバウンドコンポーネントがコントロールプレーンと通信できるように HTTP プロキシと HTTPS プロキシを設定できます。

HTTP プロキシを更新すると、クラスター内の各マシンは、マシンで実行されているすべてのポッドを再起動します。複数のレプリカを実行している場合、ダウンタイムは発生しませんが、メンテナンスウィンドウ中に HTTP プロキシの更新を実行する必要があります。

  • Runtime Fabric 内で実行されているサービスにプロキシの値を適用する。

  • Runtime Fabric インストーラー 1.0.x を使用している場合は、Runtime Fabric の各ノードでスクリプトを実行してクラスターを更新する。

    1. rtfctl​ がインストールされているノードにログインします。

    2. 次のコマンドを実行し、プレースホルダーの値を次の値に置き換えます。

      sudo /opt/anypoint/runtimefabric/rtfctl apply http-proxy "http://<user>:<pass>@<10.0.0.1>:<8080>" --no-proxy "<1.1.1.1:8888,2.2.2.2:9999>"
  • <user>​: HTTP プロキシの認証に必要なユーザー名。

  • <pass>​: HTTP プロキシの認証に必要なパスワード。

    パスワードは URL にエンコードされている必要があります。
  • <10.0.0.1>​: HTTP プロキシにアクセスするための IP アドレスまたはホスト名を指定します。

  • <8080>​: HTTP プロキシが要求をリスンするホストのポートを指定します。

  • <1.1.1.1:8888,2.2.2.2:9999>​: カンマで区切られた ​RTF_NO_PROXY​ ホストとポートを指定します。

  • (省略可能) ​--confirm​: 変更の手動の肯定応答をスキップします。指定しなかった場合、​rtfctl apply proxy​ コマンドでは、続行する前に変更を確認することが求められます。

    1. 変更が成功したことを確認するには、次のコマンドを実行して、HTTP プロキシの現在の値を出力します。

      sudo /opt/anypoint/runtimefabric/rtfctl get http-proxy

      出力は期待される値と一致する必要があります。

    2. プロキシ値を削除するには、次のコマンドを実行します。

      sudo /opt/anypoint/runtimefabric/rtfctl apply http-proxy '' --no-proxy ''

HTTP_PROXY​ 環境変数について

Runtime Fabric のサービスにプロキシを適用したら、次のような警告が表示される場合があります。

Warning: Proxy configurations in the environment "HTTP_PROXY: " does not match configurations in Runtime Fabric "YOUR_PROXY"

Runtime Fabric で この警告​が生成されるのは、​HTTP_PROXY​ 環境変数を設定していないこと、または変数が Runtime Fabric サービスに使用される値と一致しないことを知らせるためです。これらの設定は必ずしも一致している必要はありませんが、Runtime Fabric ではサービスが影響を受ける可能性もあることを知らせるために警告が生成されます。

多くの Linux ツールでは ​HTTP_PROXY​ 環境変数を使用してそのプロキシ設定を提供しています。環境にインターネットアクセス用のプロキシが必要な場合、インターネットアクセスが必要なコマンド用に ​HTTP_PROXY​ 環境変数を設定する必要がある可能性が高くなります。

これにより、​kubectl​ のように HTTP または HTTPS 操作を使用するがインターネットアクセスが不要な他のツールに影響する可能性もあります。​NO_PROXY​ 環境変数を使用して、プロキシする必要がない接続を確立できます。

環境変数によるそのプロキシの動作に対する影響に関する詳細は、Linux ツールのドキュメントを参照してください。

NO_PROXY​ 環境変数について

デフォルトでは、​NO_PROXY​ は ​0.0.0.0/0​ と ​.local​ に設定されます。これらの設定により、プロキシで IPV4 宛先アドレスが転送されなくなります。

API Manager エージェントのプロキシを設定する

プロキシを使用して、API Manager で管理する Mule アプリケーション用の通信を確立できます。すべてのアプリケーションに同じ設定を使用している場合でも、このプロキシ設定は各 Mule アプリケーションで定義する必要があります。この設定はアプリケーションが他の外部エンドポイントと通信するために使用するアプリケーションレベルのプロキシとは無関係です。

API Manager エージェントのプロキシを設定するには、次のプロパティをアプリケーションに追加します。

anypoint.platform.proxy_host=hostname
anypoint.platform.proxy_port=port
anypoint.platform.proxy_username=username
anypoint.platform.proxy_password=password

Mule アプリケーション用のプロキシの設定

Runtime Fabric でデプロイされるアプリケーションは、Runtime Fabric クラスターからプロキシ設定を継承します。各アプリケーションでプロキシを設定することもできます。

各コネクタ (HTTP リクエスターなど) でプロキシを設定するか、または次の例に示すようにアプリケーションのプロパティでプロキシを設定することができます。アプリケーションで多くのコネクタを使用する場合は、アプリケーションのプロパティでプロキシを設定した方が楽です。

http.nonProxyHosts=localhost|*.svc.cluster.local|*.monitoring.svc.cluster.local
http.proxyHost=172.19.0.23
http.proxyPort=3128
https.proxyHost=172.19.0.23
https.proxyPort=3128

java.net.useSystemProxies=false
com.ning.http.client.AsyncHttpClientConfig.useProxySelector=false
com.ning.http.client.AsyncHttpClientConfig.useProxyProperties=true