---
schema_version: "1"
id: c174c81dcc04efd82b32abaad0a0a22750365cfc2c56c651992c47786cc6706f
title: 宣言型設定リファレンスガイド
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/gateway/1.9/flex-local-configuration-reference-guide.md
canonical_url: https://docs.mulesoft.com/jp/gateway/1.9/flex-local-configuration-reference-guide
source_site: docs.mulesoft.com
content_type: documentation
content_hash: fba60c221e2120ea43c486d22b02ecd92fc5daef86ff60df9881683e65bb50c1
description: MuleSoft Documentation Site
release: "1.9"
latest: false
---
# 宣言型設定リファレンスガイド

ローカルモードで実行される Anypoint Flex Gateway は、2 つの設定モデルをサポートします。

- Kubernetes で一般的なリソースベースモデルは、詳細な定義に適しています。各リソースは、設定の ​`kind`​ の値が次のいずれかになります。
    
    - `ApiInstance`
    - `Service`
    - `PolicyBinding`
    - `Configuration`
- インラインモデルは簡潔な定義に適していますが、汎用性が低くなります (たとえば、自動ポリシーはリソースベース定義でしか適用できません)。
    
    インライン定義では、設定の ​`kind`​ の値は ​`ApiInstance`​ のみとなり、この下でサービスとポリシーの両方を定義します。

![API インスタンス、サービス、ポリシーバインドの構造の図](/mulesoft/current/ja-jp/gateway/1.9/_images/gateway-configuration-models.png)

それぞれの例は​[「例」](#examples)​セクションを参照してください。

このリファレンスガイドでは、リソースベース設定またはインライン設定に適用可能なリソースについて説明します。

## [](#api-instance)API インスタンス

apiVersion: gateway.mulesoft.com/v1alpha1
kind: ApiInstance
metadata:
  name: <api instance name>
  namespace: # optional namespace name
spec:
  address: <proxy address including port and path>
  services: # optional map of upstream services
    <name>:
      address: <service address>
      routes: # optional array of routes to service
        - config: # optional route configuration
            destinationPath: <optional base path to upstream service>
          rules: # optional route rules
  policies: # optional array of policies
    - policyRef:
        name: <name of the policy>
        namespace: <optional namespace of the policy>
      config: # optional policy configuration
      rules: # optional policy rules

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 28.5714%;">
<col style="width: 14.2857%;">
<col style="width: 14.2857%;">
<col style="width: 42.8572%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">パラメーター</th>
<th class="tableblock halign-left valign-top">必須または省略可能</th>
<th class="tableblock halign-left valign-top">デフォルト値</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>metadata.name</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">必須</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">なし</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">他のリソース (ポリシーバインドなど) の対象リファレンスとして使用される API インスタンス識別子。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>metadata.namespace</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>default</code></p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec.address</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">必須</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">なし</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">プロトコル、ホスト、ポート、パス (省略可能) を含むプロキシアドレス URL。ベースパスを指定する場合は、どの ​<code>rules.path</code>​ 属性にも指定されていないパスでなければなりません。サポートされる形式:
<code>protocol://host:port/path</code>​ (​<code>path</code>​ は省略可能で、​<code>protocol</code>​ は ​<code>http</code>​ または ​<code>https</code>​)。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec.services</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">空</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">指定されたサービスとルートのマップ。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec.services[name].address</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">必須</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">なし</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">サービスアドレス (およびポート)。サポートされる形式: <code>protocol://host:port</code>​ (​<code>protocol</code>​ は ​<code>http</code>​ または ​<code>https</code>​)。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec.services[name].routes</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">空</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">この API インスタンスに設定されているサービスへのルートの配列。空である場合は、サービスへのデフォルトルートが確立され、すべてのトラフィックがルーティングされます。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec.services[name].routes[#].config</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">空</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">このルートの設定。空の場合は、空の ​<code>destinationPath</code>​ でデフォルトの設定が適用されます。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec.services[name].routes[#].config.destinationPath</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">空</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">アップストリームサービスに要求を転送するために先頭に追加するパス。たとえば、「destinationPath: /api/v1」と指定した場合、この API インスタンスへの要求で「/orders」のようなパスを指定すると、要求は「/api/v1/orders」のように上流にルーティングされます。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec.services[name].routes[#].rules</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">空</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">このルートのルールの配列。「ポリシーバインド」の「​<a href="#policy-binding">spec.rules</a>​」を参照してください。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec.policies</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">空</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">この API インスタンスに適用するポリシーの配列。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec.policies[#].policyRef.name</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">必須</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">なし</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ポリシー名。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec.policies[#].policyRef.namespace</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>metadata.namespace</code>​ の値</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ポリシーが定義される名前空間。提供ポリシーの場合、この項目の値は ​<code>default</code>​ である必要があります。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec.policies[#].config</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">空</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ポリシーの設定。「ポリシーバインド」の「​<a href="#policy-binding">spec.config</a>​」を参照してください。​<code>policies[#].config</code>​ 項目で環境変数を使用するには、​<a href="#environment-variables">ポリシーバインドの環境変数</a>​を参照してください。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec.policies[#].rules</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">空</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">このポリシーを API インスタンスに適用するためのルールの配列。  「ポリシーバインド」の「​<a href="#policy-binding">spec.rules</a>​」を参照してください。</p></td>
</tr>
</tbody>
</table>

### [](#api-インスタンスの例)API インスタンスの例

次のリソースは、インスタンス識別子を記述するメタデータを使用して ​`ApiInstance`​ を指定しています。​`metadata.name`​ 値は、他のリソース (ポリシーバインドなど) の対象リファレンスとして使用されます。​`spec.services.routes.config.destinationPath`​ 値は、​`rules`​ の下に指定されているパスの先頭に ​`/v1/apps`​ を追加し、ベースパスのように機能します。

apiVersion: gateway.mulesoft.com/v1alpha1
kind: ApiInstance
metadata:
  name: hello-flex-gateway-instance
spec:
  address: http://0.0.0.0:8080
  services:
    json:
      address: https://<upstream address>:443/
      routes:
        - rules:
            - path: /api(/users/.\*)
            - path: /api(/comments/.\*)
          config:
            destinationPath: /v1/apps

#### [](#ポート共有)ポート共有

次の ​`ApiInstance`​ リソースは、2 つの異なる API インスタンスがポート 8080 でリスンする API ポート共有を示しています。

\---
apiVersion: gateway.mulesoft.com/v1alpha1
kind: ApiInstance
metadata:
  name: httpbin-example
spec:
  address: http://0.0.0.0:8080/api/httpbin/
  services:
    upstream:
      address: https://<upstream address>:443
---
apiVersion: gateway.mulesoft.com/v1alpha1
kind: ApiInstance
metadata:
  name: json-example
spec:
  address: http://0.0.0.0:8080/api/json/
  services:
    upstream:
      address: https://<upstream address>:443

両方のサービスはポート 8080 でリスンします。次に例を示します。

curl http://localhost:8080/api/httpbin/get -v
curl http://localhost:8080/api/json/users/1 -v

<table>
<tbody><tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
<p>ポートを共有する API のベースパスは競合しない必要があります。たとえば、次のパスの組み合わせは許可されません。</p>
</div>
<div class="listingblock">
<div class="content">
<pre>http://0.0.0.0:8080/cats
http://0.0.0.0:8080/cats/dogs</pre>
</div>
</div>
</td>
</tr>
</tbody></table>

<table>
<tbody><tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
<p>ポートには TLS が適用されます。そのため、ポートを共有するすべての API インスタンスに同じ TLS ポリシーが適用されます。</p>
</div>
</td>
</tr>
</tbody></table>

## [](#policy-binding)ポリシーバインド

apiVersion: gateway.mulesoft.com/v1alpha1
kind: PolicyBinding
metadata:
  name: <policy binding name>
  namespace: <namespace name>
spec:
  targetRef:
    name: <name of api instance or upstream service>
    namespace: <optional namespace of api instance or upstream service>
  policyRef:
    name: <policy name>
    namespace: <optional policy namespace>
  config: # optional policy configuration
  order: # optional policy read order
  rules: # optional policy rules
  - path: <path regular expression>
    methods: <methods regular expression>
    host: <host regular expression>
    headers: <headers map>
      <header-name>: <header value regular expression>

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 28.5714%;">
<col style="width: 14.2857%;">
<col style="width: 14.2857%;">
<col style="width: 42.8572%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">パラメーター</th>
<th class="tableblock halign-left valign-top">必須または省略可能</th>
<th class="tableblock halign-left valign-top">デフォルト値</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>metadata.name</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">必須</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">なし</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ポリシーバインドの識別子。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>metadata.namespace</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>default</code></p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec.targetRef.name</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">必須</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">なし</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ポリシーがバインドされる API インスタンスまたはアップストリームサービスの識別子。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec.targetRef.namespace</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>metadata.namespace</code>​ の値</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">対象が定義される名前空間。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec.policyRef.name</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">必須</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">なし</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ポリシー名。利用可能なポリシーのリストを参照してください。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec.policyRef.namespace</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>metadata.namespace</code>​ の値</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ポリシーが定義される名前空間。提供ポリシーの場合、この項目の値は ​<code>default</code>​ である必要があります。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec.config</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">空</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ポリシーの設定。この項目のコンテンツは、指定されたポリシーに依存します。利用可能なポリシーのリストを参照してください。​<code>config</code>​ 項目で環境変数を使用するには、​<a href="#environment-variables">ポリシーバインドの環境変数</a>​を参照してください。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec.order</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">50</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ポリシー実行チェーン全体におけるポリシーの読み取り順序。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec.rules</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">空</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ポリシーが特定の要求に適用されるかどうかを決定するためのルールの配列。これらのルールは OR 形式でチェックされます。最初に True となったルールに従ってポリシーを要求に適合します。各ルールの属性は、AND 形式で適用されます。パスとホストが定義されている場合は、両方が一致しなければルールは True にはなりません。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec.rules[#].path</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>.*</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">要求のパスと一致する正規表現。</p>
<p class="tableblock">要求を上流にルーティングする場合は、この正規表現のキャプチャグループを使用して、パスを置き換えます。</p>
<p class="tableblock">「path: /api(/.*)」と指定すると、/api/orders というパスが指定された要求は、/orders として上流にルーティングされます。</p>
<p class="tableblock">複数のキャプチャグループを指定でき、その場合は、取得されたすべてのサブ文字列が連結されてパスが置き換えられます。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec.rules[#].host</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>.*</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">要求のホストと一致する正規表現。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec.rules[#].methods</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>.*</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">要求のメソッドと一致する正規表現。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec.rules[#].headers</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">空</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ヘッダー名と要求に含まれる必要がある値の正規表現のマップ。</p>
<p class="tableblock">各エントリのキーは想定されるヘッダー名で、値はヘッダー値と一致する正規表現です。</p></td>
</tr>
</tbody>
</table>

### [](#ポリシーバインドの例)ポリシーバインドの例

次のリソースは、​`route`​ ポリシーを API インスタンスにバインドして、​`rules`​ で指定されたトラフィックを ​`Service`​ 設定スニペットで指定されたプロキシアドレスにルーティングします。

apiVersion: gateway.mulesoft.com/v1alpha1
kind: PolicyBinding
metadata:
  name: hello-flex-gateway-route
  namespace: e-commerce
spec:
  targetRef:
    name: hello-flex-gateway-instance
  policyRef:
    name: route
    namespace: default
  config:
    destinationRef:
      name: json
      namespace: e-commerce
  rules:
  - path: /api/json(/.\*)

次のリソースは、​`http-basic-authentication-flex`​ ポリシーを API インスタンスにバインドし、要求に ​`config.username`​ と ​`config.password`​ で定義されている基本ログイン情報を含めることを必須にします。このポリシーには読み取り順序に ​`2`​ の値が与えられます。

apiVersion: gateway.mulesoft.com/v1alpha1
kind: PolicyBinding
metadata:
  name: hello-flex-gateway-auth
  namespace: e-commerce
spec:
  targetRef:
    name: hello-flex-gateway-instance
    namespace: e-commerce
  policyRef:
    name: http-basic-authentication-flex
    namespace: default
  config:
    username: chris
    password: admin
  order: 2

### [](#environment-variables)ポリシーバインドの環境変数

ポリシーバインドリソースとインラインポリシーバインドの両方で ​`config`​ 項目の環境変数がサポートされます。使用可能な環境変数は環境に応じて異なります。

環境変数を参照するには、次のようにプレフィックス ​`$`​ を付けて環境変数を指定します。

\- policyRef:
    name: http-basic-authentication-flex
  config:
    username: $USERNAME
    password: $PASSWORD

## [](#サービス)サービス

apiVersion: gateway.mulesoft.com/v1alpha1
kind: Service
metadata:
  name: <service name>
  namespace: <namespace name>
spec:
  address: <service address including port>

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 28.5714%;">
<col style="width: 14.2857%;">
<col style="width: 14.2857%;">
<col style="width: 42.8572%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">パラメーター</th>
<th class="tableblock halign-left valign-top">必須または省略可能</th>
<th class="tableblock halign-left valign-top">デフォルト値</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>metadata.name</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">必須</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">なし</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">サービス識別子。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>metadata.namespace</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>default</code></p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec.address</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">必須</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">なし</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">プロトコル、ホスト、ポートを含むサービスアドレス URL。サポートされる形式: <code>protocol://host:port</code>​ (​<code>protocol</code>​ は ​<code>http</code>​ または ​<code>https</code>​)。</p></td>
</tr>
</tbody>
</table>

### [](#サービスの例)サービスの例

次のリソースは、サービス識別子を記述するメタデータを使用して ​`Service`​ を定義しています。​`metadata.namespace`​ 値は ​`ApiInstance`​ 設定で指定されている名前空間と一致します。​`spec.address`​ は、API 実装のアドレスです。

apiVersion: gateway.mulesoft.com/v1alpha1
kind: Service
metadata:
  name: json-example
  namespace: e-commerce
spec:
  address: https://<upstream address>:443/

## [](#設定)設定

`Configuration`​ エンティティを作成することによって目的のゲートウェイ状態を定義します。 `Configuration`​ エンティティは、Flex Gateway 自身のいくつかのランタイム設定 (​[ログ](#logging)​や​[共有ストレージ](#shared-storage)​など) を指定します。定義には以下が含まれます。

apiVersion: gateway.mulesoft.com/v1alpha1
kind: Configuration
metadata:
  name: <value>
  namespace: <namespace name>
spec:
  logging: # logging configuration
  sharedStorage: # shared storage configuration

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 28.5714%;">
<col style="width: 14.2857%;">
<col style="width: 14.2857%;">
<col style="width: 42.8572%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">パラメーター</th>
<th class="tableblock halign-left valign-top">必須または省略可能</th>
<th class="tableblock halign-left valign-top">デフォルト値</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>metadata.name</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">必須</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">なし</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">設定エンティティ。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>metadata.namespace</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>default</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">設定エンティティを特定するための名前空間値。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>spec</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">必須</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">なし</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ゲートウェイの特性を定義する設定オブジェクト。オブジェクトには ​<code>logging</code>​、​<code>sharedStorage</code>​、​<code>tls</code>​ があります。</p></td>
</tr>
</tbody>
</table>

### [](#logging)ログ記録

`logging`​ オブジェクトは、メッセージログポリシーを介してランタイムおよびアクセスログの配信を設定します。ログは、サポートされている Fluent Bit v3.0 出力に配信されます。

```yaml
apiVersion: gateway.mulesoft.com/v1alpha1
kind: Configuration
metadata:
  name: <value>
  namespace: <namespace name>
spec:
  logging:
    outputs:
    - name: <output-name>
      type: <output-type>
      parameters:
        <param-name>: <param-value>
    runtimeLogs:
      logLevel: <value>
      outputs: <value>
    accessLogs:
      outputs: <value>
```

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 28.5714%;">
<col style="width: 14.2857%;">
<col style="width: 14.2857%;">
<col style="width: 42.8572%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">パラメーター</th>
<th class="tableblock halign-left valign-top">必須または省略可能</th>
<th class="tableblock halign-left valign-top">デフォルト値</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>logging.outputs[#].name</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">必須</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">なし</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">後でランタイムとアクセスログの設定で参照する、この出力の名前。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>logging.outputs[#].type</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">必須</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">なし</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Fluent Bit でサポートされる出力種別。Fluent Bit 出力種別については、対象の Fluent Bit バージョンの  <a href="https://docs.fluentbit.io/manual">Fluent Bit のドキュメント</a>​を参照してください。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>logging.outputs[#].parameters</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">必須</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">なし</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">特定の Fluent Bit 出力種別のパラメーターのマップ。Fluent Bit 出力種別のパラメーターについては、対象の Fluent Bit バージョンの  <a href="https://docs.fluentbit.io/manual">Fluent Bit のドキュメント</a>​を参照してください。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>logging.accessLogs.outputs</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">空</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">アクセスログをリダイレクトする出力名のリスト。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>logging.runtimeLogs.logLevel</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>info</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ログの詳細を指定するパラメーター。サポートされる ​<code>logLevel</code>​ の種別は冗長レベルの高い順にリストされており、​<code>debug</code>​、​<code>info</code>​、​<code>warn</code>​、​<code>error</code>​、​<code>fatal</code>​ です。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>logging.runtimeLogs.outputs</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">空</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ランタイムログをリダイレクトする出力名のリスト。</p></td>
</tr>
</tbody>
</table>

値を空白のままにすると、デフォルト値が設定に適用されます。

上記のパラメーターに加えて、Flex Gateway にはログ出力用の変数が用意されています。設定されている場合、変数はログ内のそれぞれの出力の 1 つとして表示されます。

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 16.6666%;">
<col style="width: 33.3333%;">
<col style="width: 50.0001%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">変数</th>
<th class="tableblock halign-left valign-top">説明</th>
<th class="tableblock halign-left valign-top">出力</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>date</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ログに記録されたイベントの日時</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">特定の時刻 (例: <code>17/11/2022-09:48:27AM</code>​)</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>logger</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ログに記録されたイベントが発生した Flex Gateway サービス</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>flex-gateway-agent</code>​、​<code>flex-gateway-envoy</code>​、または ​<code>flex-gateway-fluent</code></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>level</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ログに記録されたイベントの ​<code>Loglevel</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>debug</code>​、​<code>info</code>​、​<code>warn</code>​、​<code>error</code>​、または ​<code>fatal</code></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>kind</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ログ種別</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>runtimeLog</code>​ または ​<code>accessLog</code></p></td>
</tr>
</tbody>
</table>

#### [](#ログの例)ログの例

apiVersion: gateway.mulesoft.com/v1alpha1
kind: Configuration
metadata:
  name: logging
spec:
  logging:
    outputs:
    - name: log-to-file
      type: file
      parameters:
        path: /var/log
        file: log.txt
        format: template
        template: |
          \[{date}\]\[{logger}\]\[{level}\]\[{kind}\] {message}
    runtimeLogs:
      logLevel: info
      outputs:
      - log-to-file
    accessLogs:
      outputs:
      - log-to-file

### [](#shared-storage)共有ストレージ

`sharedStorage`​ オブジェクトは、共有ストレージのゲートウェイを設定します。本番ワークフローでは [Redis](https://redis.io/)​ (最小バージョン 4.0.0) を使用する必要がありますが、その定義は省略可能です。Redis が定義されていない場合、ポート 4000 の共有ストレージサービスを引き続き使用できますが、メモリ内実装が使用されます。

必要に応じて、Redis とトランスポート層セキュリティ (TLS) を使用して、機密データを保護し、不正なアクセスを防止して、サービスの信頼性を維持できます。

apiVersion: gateway.mulesoft.com/v1alpha1
kind: Configuration
metadata:
 name: shared-storage-redis
spec:
 sharedStorage:
   redis:
     address: <string> // REQUIRED
     username: <string> // OPTIONAL
     password: <string> // OPTIONAL
     db: <string> // OPTIONAL
     tls: // OPTIONAL
       trustedCA: <string> // OPTIONAL
       certificate: // OPTIONAL
         keyPassphrase <string> // OPTIONAL
         key: <string> // REQUIRED
         crt: <string> // REQUIRED
       alpn: <array> // OPTIONAL
       skipValidation: <boolean> // OPTIONAL
       minversion: <string> // OPTIONAL
       maxversion: <string> // OPTIONAL
       ciphers: <array> // OPTIONAL

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 28.5714%;">
<col style="width: 14.2857%;">
<col style="width: 14.2857%;">
<col style="width: 42.8572%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">パラメーター</th>
<th class="tableblock halign-left valign-top">必須または省略可能</th>
<th class="tableblock halign-left valign-top">デフォルト値</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>sharedStorage.redis.address</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">必須</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">なし</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>host:port</code>​ 形式の Redis インスタンスアドレス。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>sharedStorage.redis.username</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">空</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Redis ユーザー名</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>sharedStorage.redis.password</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">空</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Redis ユーザーパスワード</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>sharedStorage.redis.db</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">使用する Redis データベース番号</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>sharedStorage.redis.tls</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">空</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Redis TLS 設定</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>sharedStorage.redis.tls.trustedCA</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">なし</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">サーバー証明書を確認する時に使用するルート認証機関</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>sharedStorage.redis.tls.certificate</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">なし</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">サーバーに提供するクライアント証明書</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>sharedStorage.redis.tls.keyPassphrase</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>none</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">証明書鍵パスフレーズ。指定された場合、DEK-Info ヘッダーが含まれる非公開鍵形式を使用します。未指定の場合、非公開鍵は暗号化できません。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>sharedStorage.redis.tls.certificate.key</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">必須</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">なし</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">証明書の非公開鍵部分</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>sharedStorage.redis.tls.certificate.crt</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">必須</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">なし</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">証明書の公開鍵部分</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>sharedStorage.redis.tls.skipValidation</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>false</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">true の場合、サーバーによって提供されたすべての証明書が受け入れられます。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>sharedStorage.redis.tls.minversion</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>1.2</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">許容される最小 TLS バージョン</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>sharedStorage.redis.tls.maxversion</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>1.3</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">許容される最大 TLS バージョン</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>sharedStorage.redis.tls.alpn</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">空のリスト</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">サポートされているアプリケーションレベルプロトコルの優先リスト (h2、http/1.1 など)。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>sharedStorage.redis.tls.ciphers</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">省略可能</p></td>
<td class="tableblock halign-left valign-top"></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
</tbody>
</table>

<table>
<tbody><tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
<p>TLS/Redis では、以下を除いて ​<a href="https://docs.mulesoft.com/jp/gateway/1.9/policies-included-tls" class="xref page">TLS ポリシー</a>​と同じ暗号化がサポートされます。</p>
</div>
<div class="ulist">
<ul>
<li>
<p>TLS_RSA_WITH_NULL_SHA</p>
</li>
<li>
<p>TLS_PSK_WITH_AES_256_CBC_SHA</p>
</li>
<li>
<p>TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA</p>
</li>
<li>
<p>TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA</p>
</li>
<li>
<p>TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256</p>
</li>
</ul>
</div>
</td>
</tr>
</tbody></table>

**Redis 共有ストレージ例**

Redis ストレージサービスは、オブジェクトストアインターフェースと Redis バックエンド間のブリッジとして機能する、REST API オブジェクトストアの実装です。

```yaml
apiVersion: gateway.mulesoft.com/v1alpha1
kind: Configuration
metadata:
 name: shared-storage-redis
spec:
 sharedStorage:
   redis:
     address: redis.e-commerce.svc:6379
     username: ecomm-user
     password: ecomm-pwd-123
     DB: 7
```

**Redis と TLS の共有ストレージ例**

必要に応じて、Redis と TLS を使用してデータを保護し、安全な通信を確保できます。

```yaml
apiVersion: gateway.mulesoft.com/v1alpha1
kind: Configuration
metadata:
  name: shared-storage-redis
spec:
  sharedStorage:
    redis:
      address: internal.redis.com:6379
      tls:
        skipValidation: false
        minVersion: "1.1"
        maxVersion: "1.3"
        alpn:
          - h2
          - http/1.1
        ciphers:
          - TLS_AES_128_GCM_SHA256
          - TLS_AES_256_GCM_SHA384
          - TLS_CHACHA20_POLY1305_SHA256
          - TLS_RSA_WITH_3DES_EDE_CBC_SHA
          - TLS_RSA_WITH_AES_128_CBC_SHA
          - TLS_RSA_WITH_AES_256_CBC_SHA
          - TLS_RSA_WITH_AES_128_CBC_SHA256
          - TLS_RSA_WITH_AES_128_GCM_SHA256
          - TLS_RSA_WITH_AES_256_GCM_SHA384
          - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
          - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
          - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
          - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
          - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
          - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
          - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
          - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
          - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
          - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
        trustedCA: |
          -----BEGIN CERTIFICATE-----
          ...
          -----END CERTIFICATE-----

        certificate:
          keyPassphrase: "****"
          key: |
            -----BEGIN RSA PRIVATE KEY-----
            ...
            -----END RSA PRIVATE KEY-----

          crt: |
            -----BEGIN CERTIFICATE-----
            ...
            -----END CERTIFICATE-----
```

**ローカル共有ストレージの例**

ローカルストレージサービスは、データをメモリに保存する REST API オブジェクトストアの実装です。Flex Gateway を停止または再起動すると、すべてのデータが失われます。

```yaml
apiVersion: gateway.mulesoft.com/v1alpha1
kind: Configuration
metadata:
 name: rtm-config
 namespace: sales
spec:
 sharedStorage:
   local:
     enabled: true
```

## [](#examples)例

### [](#インライン設定の例)インライン設定の例

apiVersion: gateway.mulesoft.com/v1alpha1
kind: ApiInstance
metadata:
  name: api-example
spec:
  address: http://0.0.0.0:8080
  services:
    api-example:
      address: https://<your url>:443/
      routes:
        - rules:
            - path: /api(/users/.\*)
            - path: /api(/comments/.\*)
          config:
            destinationPath: /v1/apps
  policies:
    - policyRef:
        name: http-basic-authentication-flex
      config:
        username: chris
        password: admin

### [](#リソースベース設定の例)リソースベース設定の例

\---
apiVersion: gateway.mulesoft.com/v1alpha1
kind: ApiInstance
metadata:
  name: ingress-http
spec:
  address: http://0.0.0.0:8080
---
apiVersion: gateway.mulesoft.com/v1alpha1
kind: Service
metadata:
  name: json
spec:
  address: https://<your url>:443/
---
apiVersion: gateway.mulesoft.com/v1alpha1
kind: PolicyBinding
metadata:
  name: ingress-http-route
spec:
  targetRef:
    name: ingress-http
  policyRef:
    name: route
  config:
    destinationRef:
      name: json
  rules:
  - path: /api(/users/.\*)
  - path: /api(/comments/.\*)
---
apiVersion: gateway.mulesoft.com/v1alpha1
kind: PolicyBinding
metadata:
  name: ingress-http-authentication
spec:
  targetRef:
    name: ingress-http
  policyRef:
    name: http-basic-authentication-flex
  config:
    username: chris
    password: admin