Flex Gateway新着情報
Governance新着情報
Monitoring API Managerローカルモードで Flex Gateway の背後で実行されている API をパブリッシュすることで、YAML 設定データを変更する方法について説明します。
Linux および Docker: .yaml
ファイル
始める前に、次の準備が整っていることを確認します。
Flex Gateway がインストールされていてローカルモードで実行されている。ゲートウェイのインストールと実行についての詳細は、「Flex Gateway のダウンロード」を参照してください。
アップストリームサービスの URL が用意されている。次の例では架空の products-api
と users-api
というサービスを使用していますが、metadata.name
には実際の API 名、spec.services
にはサービスの詳細を指定することができます。
.yaml
ファイル拡張子で設定ファイルを作成します。
ファイルにカスタム名を付けます。
ファイルを Flex Gateway の設定ディレクトリ /etc/mulesoft/flex-gateway/conf.d/custom
に保存します。このディレクトリには複数の設定ファイルを保存できます。
次の YAML スニペットをコピーしてファイルに貼り付け、必要な箇所を適切な値に変更します。
apiVersion: gateway.mulesoft.com/v1alpha1 kind: ApiInstance metadata: name: products-users-api spec: address: http://0.0.0.0:8080 services: products: address: https://<your products URL>:<your port>/ routes: - rules: - path: /products(/.*) - path: /products-featured(/.*) config: destinationPath: /api users: address: https://<your users URL>:<your port>/ routes: - rules: - path: /api/users(/.*) policies: - policyRef: name: http-basic-authentication-flex config: username: chris password: admin - policyRef: name: rate-limiting-flex config: exposeHeaders: true rateLimits: - maximumRequests: 3 timePeriodInMilliseconds: 6000 keySelector: "#[attributes.queryParams['identifier']]"
ファイルを保存します。ゲートウェイによって設定が自動的に更新されます。
次のコマンドを実行してログを表示します。
journalctl -u flex-gateway-*
応答は次のようになります。
[agent][info] Generating config [agent][info] Gateway default/18b4e890fe7d: Adding ApiInstance default/products-users-api http://0.0.0.0:8080 [agent][info] Gateway default/4191c977e1ce: Adding Policy default/products-users-api-users-http-basic-authentication-flex-1 [agent][info] Gateway default/4191c977e1ce: Adding Policy default/products-users-api-users-rate-limiting-flex-2 [agent][info] Gateway default/18b4e890fe7d: Adding Route: &{host: path:/api/products(/.*) methods: headerConditions:[] profile:0xc0030529f0} => {Kind:Service Name:products-users-api-products Namespace:default} [agent][info] Gateway default/18b4e890fe7d: Adding Route: &{host: path:/api/users(/.*) methods: headerConditions:[] profile:0xc0030529f0} => {Kind:Service Name:products-users-api-users Namespace:default} [agent][info] Gateway default/18b4e890fe7d: Adding Policy default/envoy.filters.http.router [agent][info] Gateway default/18b4e890fe7d: Adding Service default/monitoring_metrics http://0.0.0.0:9881 [agent][debug] generating service monitoring_metrics.default.svc hostname: 0.0.0.0 port: 9881 [agent][info] Gateway default/18b4e890fe7d: Adding Service default/products-users-api-products https://<your products URL>:<your port>/ [agent][info] Gateway default/18b4e890fe7d: Adding Service default/products-users-api-users https://<your users URL>:<your port>/ [agent][debug] generating service products-users-api-products.default.svc hostname: <your products URL> port: <your port> [agent][debug] generating service products-users-api-users.default.svc hostname: <your users URL> port: <your port> [agent][info] Writing envoy bootstrap configuration to /tmp/envoy.json [envoy][info] cds: add 2 cluster(s), remove 2 cluster(s) [envoy][info] cds: added/updated 1 cluster(s), skipped 1 unmodified cluster(s)
基本認証とレート制限によって保護された API が Flex Gateway の背後で実行されています。
始める前に、次の準備が整っていることを確認します。
Flex Gateway がインストールされている。詳細は、「Flex Gateway のダウンロード」を参照してください。
Flex Gateway がローカルモードで登録されて実行されている。詳細は「ローカルモードでの登録と実行」を参照してください。
アップストリームサービスの URL が用意されている。次の例では架空の products-api
と users-api
というサービスを使用していますが、metadata.name
には実際の API 名、spec.services
にはサービスの詳細を指定することができます。
ターミナルを開いて、Flex Gateway 設定ファイルが保存されているディレクトリに移動します。このディレクトリは、Flex Gateway を起動したときに指定されています。
.yaml
ファイル拡張子で設定ファイルを作成します。
ファイルにカスタム名を付けます。
ファイルを保存します。
次の YAML スニペットをコピーしてファイルに貼り付け、必要な箇所を適切な値に変更します。
apiVersion: gateway.mulesoft.com/v1alpha1 kind: ApiInstance metadata: name: products-users-api spec: address: http://0.0.0.0:8080 services: products: address: https://<your products URL>:<your port>/ routes: - rules: - path: /api/products(/.*) - path: /api/products-featured(/.*) config: destinationPath: /api users: address: https://<your users URL>:<your port>/ routes: - rules: - path: /api/users(/.*) policies: - policyRef: name: http-basic-authentication-flex config: username: chris password: admin - policyRef: name: rate-limiting-flex config: exposeHeaders: true rateLimits: - maximumRequests: 3 timePeriodInMilliseconds: 6000 keySelector: "#[attributes.queryParams['identifier']]"
ファイルを保存します。ゲートウェイによって設定が自動的に更新されます。
Docker コンテナログを表示します。内容は次のようになっています。
[agent][info] Generating config [agent][info] Gateway default/18b4e890fe7d: Adding ApiInstance default/products-users-api http://0.0.0.0:8080 [agent][info] Gateway default/4191c977e1ce: Adding Policy default/products-users-api-users-http-basic-authentication-flex-1 [agent][info] Gateway default/4191c977e1ce: Adding Policy default/products-users-api-users-rate-limiting-flex-2 [agent][info] Gateway default/18b4e890fe7d: Adding Route: &{host: path:/api/products(/.*) methods: headerConditions:[] profile:0xc0030529f0} => {Kind:Service Name:products-users-api-products Namespace:default} [agent][info] Gateway default/18b4e890fe7d: Adding Route: &{host: path:/api/users(/.*) methods: headerConditions:[] profile:0xc0030529f0} => {Kind:Service Name:products-users-api-users Namespace:default} [agent][info] Gateway default/18b4e890fe7d: Adding Policy default/envoy.filters.http.router [agent][info] Gateway default/18b4e890fe7d: Adding Service default/monitoring_metrics http://0.0.0.0:9881 [agent][debug] generating service monitoring_metrics.default.svc hostname: 0.0.0.0 port: 9881 [agent][info] Gateway default/18b4e890fe7d: Adding Service default/products-users-api-products https://<your products URL>:<your port>/ [agent][info] Gateway default/18b4e890fe7d: Adding Service default/products-users-api-users https://<your users URL>:<your port>/ [agent][debug] generating service products-users-api-products.default.svc hostname: <your products URL> port: <your port> [agent][debug] generating service products-users-api-users.default.svc hostname: <your users URL> port: <your port> [agent][info] Writing envoy bootstrap configuration to /tmp/envoy.json [envoy][info] cds: add 2 cluster(s), remove 2 cluster(s) [envoy][info] cds: added/updated 1 cluster(s), skipped 1 unmodified cluster(s)
基本認証とレート制限によって保護された API が Flex Gateway の背後で実行されています。