---
schema_version: "1"
id: cf145422f1674bf1519d2600e64d3031caa91a9dc5b9ea07dc3a63a584f93ea0
title: ローカルモードでの Flex Gateway のカスタムポリシーのデプロイ
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/gateway/1.9/flex-local-deploy-custom-policy.md
canonical_url: https://docs.mulesoft.com/jp/gateway/1.9/flex-local-deploy-custom-policy
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 4a77e243a2fcf4877dce510441675b6def8125b7da97e4c7f0eea65909b5c3d7
description: MuleSoft Documentation Site
release: "1.9"
latest: false
---
# ローカルモードでの Flex Gateway のカスタムポリシーのデプロイ

**新機能があります**​: この製品機能は最新ではなく、既存のカスタムポリシーのためにのみ提供されています。新しいカスタムポリシーを作成するには、​[Flex Gateway Policy Development Kit (PDK)](https://docs.mulesoft.com/pdk/latest/policies-pdk-overview)​ を使用してください。

WebAssembly (WASM) 拡張機能を使用して、Envoy 上でカスタム検索条件として機能するカスタムポリシーを実装できます。次の手順は、ローカルモードで実行されている API にカスタム検索条件 (ポリシー) をデプロイおよび適用する方法を示しています。

1. 設定 YAML ファイルを作成します。
2. ファイルを Flex Gateway 設定ディレクトリに保存します。
3. 拡張機能定義を作成します。
4. `base64`​ を使用して、カスタムポリシー WASM 実装をエンコードします。
5. 拡張機能定義をカスタムポリシー WASM バイナリ実装にリンクします。
6. カスタムポリシーを API インスタンスにリンクします。
7. リソースを Flex Gateway インスタンスに適用します。

## [](#始める前に)始める前に

始める前に、次の準備が整っていることを確認します。

- Flex Gateway がインストールされていてローカルモードで実行されている。ゲートウェイのインストールと実行についての詳細は、[Flex Gateway のダウンロード](https://docs.mulesoft.com/jp/gateway/1.9/flex-install)を参照してください。
- アップストリームサービスの URL が用意されている。例については、[ローカルモードでのシンプルな API のパブリッシュ](https://docs.mulesoft.com/jp/gateway/1.9/flex-local-publish-simple-api)を参照してください。
- カスタムポリシーが実装およびコンパイルされている。[Rust での Flex Gateway カスタムポリシーの実装](https://docs.mulesoft.com/jp/gateway/1.9/policies-custom-flex-implement-rust)を参照してください。

## [](#カスタムポリシーのデプロイ)カスタムポリシーのデプロイ

1. `custom-policy-example.yaml`​ という設定ファイルを作成します。
2. ファイルを Flex Gateway 設定ディレクトリに保存します。次に例を示します。
    
    - `/etc/mulesoft/flex-gateway/conf.d/policies`
3. 拡張機能定義を作成します。
    
    次の YAML スニペットをコピーして、新しい設定ファイルに貼り付けます。YAML は、カスタムポリシーの設定とメタデータプロパティを定義します。
    
    ```yaml
    apiVersion: gateway.mulesoft.com/v1alpha1
    kind: Extension
    metadata:
      name: custom-local-example-definition
    spec:
      extends:
      - name: extension-authentication
      - name: extension-definition
      properties:
        secret-value:
          type: string
      required:
        - secret-value
    ```
    
    - `metadata.name`​ 値には、拡張機能名が含まれます。
    - `Extension`​ は、他の定義済み拡張機能からプロパティを継承します。たとえば、​`spec.extends`​ は、拡張機能が ​`extension-definition`​ であり、​`authentication`​ カテゴリ (​`extension-authentication`​) に属していることを指定します。
    - `spec.properties`​ 値は、カスタムポリシーインスタンスを設定するプロパティを定義します。
    - `spec.required`​ 値は、必要なプロパティを指定します。
4. `base64`​ を使用して、カスタムポリシー WASM バイナリ実装をエンコードします。
    
    次のコマンドを実行して、カスタムポリシー WASM バイナリ実装をエンコードします。
    
    ```ssh
    base64 <your-custom-policy-name>.wasm | tr -d '\n\r' > policy
    ```
    
    このコマンドは、エンコードデータを ​`policy`​ というファイルに送信します。次のステップで、​`<WASM_BINARY_IN_BASE64>`​ をこのエンコードデータに置き換えます。
    
    <table>
<tbody><tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
<p><code>wasm32-unknown-unknown</code>​ の対象を使用してポリシーをコンパイルした場合、​<code>./target/wasm32-unknown-unknown/release</code>​ にバイナリがあります。</p>
</div>
<div class="paragraph">
<p><code>wasm32-wasi</code>​ の対象を使用してポリシーをコンパイルした場合、​<code>./target/wasm32-wasi/release</code>​ にバイナリがあります。</p>
</div>
</td>
</tr>
</tbody></table>
5. 拡張機能定義をカスタムポリシー WASM バイナリ実装にリンクします。
    
    `custom-policy-example.yaml`​ で、ポリシー実装を含む別のリソースを定義します。
    
    ```yaml
    apiVersion: gateway.mulesoft.com/v1alpha1
    kind: Extension
    metadata:
      name: custom-local-example-flex
    spec:
      extends:
        - name: custom-local-example-definition
        - name: envoy-filter
        - name: proxy-wasm-filter
      properties:
        rootId:
          type: string
          default: main
        implementation:
          type: string
          default: base64://<WASM_BINARY_IN_BASE64>
    ```
    
    - `metadata.name`​ 値にはポリシー名が含まれます。これは、定義で指定された名前とは異なる必要があります。
    - `spec.extends`​ 値は、継承元のリソース定義を指定します。たとえば、​`custom-local-example-definition`​ は以前に定義されたリソースです。
    - `spec.properties.implementation.default`​ の ​`<WASM_BINARY_IN_BASE64>`​ 値を、以前に生成した ​`base64`​ エンコード WASM バイナリデータに置き換えます。
        
        <table>
<tbody><tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
<p>ポリシー定義と実装を同じ ​<code>Extension</code>​ リソースに含めることができますが、これにより、それらの間の結合がより緊密になります。したがって、その 2 つは別のリソースに分離することをお勧めします。</p>
</div>
</td>
</tr>
</tbody></table>
6. カスタムポリシーを API インスタンスにリンクします。
    
    `custom-policy-example.yaml`​ で、ポリシーを API インスタンスにリンクする別のリソースを定義します。
    
    ```yaml
    apiVersion: gateway.mulesoft.com/v1alpha1
    kind: PolicyBinding
    metadata:
      name: custom-local-example
    spec:
      targetRef:
        kind: ApiInstance
        name: ingress-http
      policyRef:
        kind: Extension
        name: custom-local-example-flex
      config:
        secret-value: "an-example-value"
    ```
    
    - `metadata.name`​ 値には、カスタムポリシーインスタンス名が含まれます。
    - `spec.targetRef.name`​ 値には、カスタムポリシーを適用する API インスタンスの名前が含まれます。API インスタンスはすでに定義済みで、適用されている必要があります。
    - `spec.policyRef.name`​ 値には、適用するカスタムポリシー実装が含まれます。
    - `spec.config`​ 値には、ポリシー設定データが含まれます。
7. リソースを Flex Gateway インスタンスに適用します。
    
    完全な ​`custom-policy-example.yaml`​ ファイルに次の内容が含まれるようになります。
    
    ```yaml
    ---
    apiVersion: gateway.mulesoft.com/v1alpha1
    kind: Extension
    metadata:
      name: custom-local-example-definition
    spec:
      extends:
      - name: extension-authentication
      - name: extension-definition
      properties:
        secret-value:
          type: string
      required:
        - secret-value
    ---
    apiVersion: gateway.mulesoft.com/v1alpha1
    kind: Extension
    metadata:
      name: custom-local-example-flex
    spec:
      extends:
        - name: custom-local-example-definition
        - name: envoy-filter
        - name: proxy-wasm-filter
      properties:
        rootId:
          type: string
          default: main
        implementation:
          type: string
          default: base64://<WASM_BINARY_IN_BASE64>
    ---
    apiVersion: gateway.mulesoft.com/v1alpha1
    kind: PolicyBinding
    metadata:
      name: custom-local-example
    spec:
      targetRef:
        kind: ApiInstance
        name: ingress-http
      policyRef:
        kind: Extension
        name: custom-local-example-flex
      config:
        secret-value: "an-example-value"
    ```
    
    ファイルを Flex Gateway 設定ディレクトリに保存します。次に例を示します。
    
    - `/etc/mulesoft/flex-gateway/conf.d/policies`

これで、カスタムポリシーが ​`ingress-http`​ という API インスタンスに適用されます。

## [](#関連情報)関連情報

- [Rust での Flex Gateway カスタムポリシーの実装](https://docs.mulesoft.com/jp/gateway/1.9/policies-custom-flex-implement-rust)
- [宣言型設定リファレンスガイド](https://docs.mulesoft.com/jp/gateway/1.9/flex-local-configuration-reference-guide)