コンテンツにスキップ

HelmチャートでNative Nodeをデプロイする

NGINXに依存せず動作するWallarm Native Nodeは、いくつかのコネクタと併用してデプロイするよう設計されています。Helmチャートを使用して、Kubernetesクラスター内でNative Nodeを独立したサービスまたはロードバランサーとして実行できます。

ユースケース

以下のケースでHelmチャートを用いてNative Nodeをデプロイします。

  • MuleSoftのMuleまたはFlex Gateway、AkamaiCloudflareAmazon CloudFrontBroadcom Layer7 API GatewayFastlyIBM DataPower向けのWallarmコネクタをデプロイし、ノードをセルフホストする必要がある場合。すでにOpenShift、Amazon EKS、Azure AKS、Google GKEなどのKubernetes管理プラットフォームを使用している場合に最適です。ノードはパブリックIPを持つロードバランサーとして構成され、容易にトラフィックをルーティングできます。

    この場合はNodeをconnector-serverモードで使用します。

  • Istioで管理されるAPI向けにインラインのgRPCベースの外部処理フィルターが必要な場合。ノードはパブリックIPを持つロードバランサーとして構成され、容易にトラフィックをルーティングできます。

    この場合はNodeをenvoy-external-filterモードで使用します。

  • Kong API Gateway向けのWallarmコネクタをデプロイする場合。ノードはパブリックIPを公開せず、内部トラフィック向けにClusterIPタイプでデプロイされます。

    この場合はNodeをconnector-serverモードで使用します。

要件

HelmチャートでNative NodeをデプロイするKubernetesクラスターは、以下の条件を満たす必要があります。

  • Helm v3パッケージマネージャーがインストールされていること。

  • APIが稼働するAPIゲートウェイまたはCDNからのインバウンドアクセス。

  • 以下へのアウトバウンドアクセス:

    • https://charts.wallarm.com からWallarmのHelmチャートをダウンロード
    • https://hub.docker.com/r/wallarm からデプロイに必要なDockerイメージをダウンロード
    • US/EUのWallarm Cloud用に https://us1.api.wallarm.com または https://api.wallarm.com
    • 攻撃検知ルールやAPI仕様の更新ダウンロード、ならびに許可リスト、拒否リスト、グレーリストに登録された国・地域・データセンターの正確なIP取得のために、以下のIPアドレス

      node-data0.us1.wallarm.com - 34.96.64.17
      node-data1.us1.wallarm.com - 34.110.183.149
      us1.api.wallarm.com - 35.235.66.155
      34.102.90.100
      34.94.156.115
      35.235.115.105
      
      node-data1.eu1.wallarm.com - 34.160.38.183
      node-data0.eu1.wallarm.com - 34.144.227.90
      api.wallarm.com - 34.90.110.226
      
  • LoadBalancerタイプでデプロイする場合、ドメインと信頼されたSSL/TLS証明書が必要です。

  • さらに、Wallarm ConsoleでAdministratorロールが割り当てられている必要があります。

制限事項

  • LoadBalancerタイプでWallarmサービスをデプロイする場合、Nodeインスタンスのドメインに対して信頼されたSSL/TLS証明書が必要です。自己署名証明書はまだサポートされていません。

  • カスタムブロックページとブロックコードの設定はまだサポートされていません。

  • Wallarmルールによるレート制限はサポートしていません。

  • マルチテナンシーはまだサポートしていません。

デプロイ

1. Wallarmトークンを準備する

Nodeをインストールするには、Wallarm CloudにNodeを登録するためのトークンが必要です。トークンを準備するには:

  1. US CloudまたはEU CloudのWallarm Console → SettingsAPI tokensを開きます。

  2. 使用タイプがNode deployment/DeploymentのAPI tokenを見つけるか作成します。

  3. そのトークンをコピーします。

2. WallarmのHelmチャートリポジトリを追加する

helm repo add wallarm https://charts.wallarm.com
helm repo update wallarm

3. 設定ファイルを準備する

パブリックIPを持つLoadBalancerとしてネイティブなWallarmノードをデプロイすると、MuleSoft、Cloudflare、Amazon CloudFront、Broadcom Layer7 API Gateway、FastlyからこのIPへトラフィックをルーティングし、セキュリティ分析とフィルタリングを実施できます。

  1. ロードバランサー用のドメインを登録します。
  2. 信頼されたSSL/TLS証明書を取得します。
  3. 以下の最小構成でvalues.yaml設定ファイルを作成します。証明書の適用方法として希望するタブを選択してください:

    クラスター内でcert-managerを使用している場合、これでSSL/TLS証明書を発行できます。

    config:
      connector:
        mode: connector-server
        certificate:
          enabled: true
          certManager:
            enabled: true
            issuerRef:
              # cert-managerのIssuerまたはClusterIssuerの名前
              name: letsencrypt-prod
              # Issuer(Namespaceスコープ)かClusterIssuer(クラスター全体)か
              kind: ClusterIssuer
    processing:
      service:
        type: LoadBalancer
    

    同一Namespace内の既存のKubernetes SecretからSSL/TLS証明書を取り込めます。

    config:
      connector:
        mode: connector-server
        certificate:
          enabled: true
          existingSecret:
            enabled: true
            # 証明書と秘密鍵を含むKubernetes Secretの名前
            name: my-secret-name
    processing:
      service:
        type: LoadBalancer
    

    customSecret構成では、証明書をbase64エンコード値として直接定義できます。

    config:
      connector:
        mode: connector-server
        certificate:
          enabled: true
          customSecret:
            enabled: true
            ca: LS0...  # Base64でエンコードされたCA
            crt: LS0... # Base64でエンコードされた証明書
            key: LS0... # Base64でエンコードされた秘密鍵
    processing:
      service:
        type: LoadBalancer
    

パブリックIPを持つLoadBalancerとしてネイティブなWallarmノードをデプロイすると、MuleSoft、Cloudflare、Amazon CloudFront、Broadcom Layer7 API Gateway、FastlyからこのIPへトラフィックをルーティングし、セキュリティ分析とフィルタリングを実施できます。

  1. ロードバランサー用のドメインを登録します。
  2. 信頼されたSSL/TLS証明書を取得します。
  3. 以下の最小構成でvalues.yaml設定ファイルを作成します。証明書の適用方法として希望するタブを選択してください:

    クラスター内でcert-managerを使用している場合、これでSSL/TLS証明書を発行できます。

    config:
      connector:
        mode: envoy-external-filter
        certificate:
          enabled: true
          certManager:
            enabled: true
            issuerRef:
              # cert-managerのIssuerまたはClusterIssuerの名前
              name: letsencrypt-prod
              # Issuer(Namespaceスコープ)かClusterIssuer(クラスター全体)か
              kind: ClusterIssuer
    processing:
      service:
        type: LoadBalancer
    

    同一Namespace内の既存のKubernetes SecretからSSL/TLS証明書を取り込めます。

    config:
      connector:
        mode: envoy-external-filter
        certificate:
          enabled: true
          existingSecret:
            enabled: true
            # 証明書と秘密鍵を含むKubernetes Secretの名前
            name: my-secret-name
    processing:
      service:
        type: LoadBalancer
    

    customSecret構成では、証明書をbase64エンコード値として直接定義できます。

    config:
      connector:
        mode: envoy-external-filter
        certificate:
          enabled: true
          customSecret:
            enabled: true
            ca: LS0...  # Base64でエンコードされたCA
            crt: LS0... # Base64でエンコードされた証明書
            key: LS0... # Base64でエンコードされた秘密鍵
    processing:
      service:
        type: LoadBalancer
    

WallarmをKong API GatewayまたはIstioのコネクタとしてデプロイする場合、パブリックIPを公開せず、内部トラフィック向けにこのコネクタ用のNative NodeをClusterIPタイプでデプロイします。

以下の最小構成でvalues.yaml設定ファイルを作成します。

processing:
  service:
    type: ClusterIP

すべての設定パラメータ

4. Wallarmサービスをデプロイする

helm upgrade --install --version 0.17.1 <WALLARM_RELEASE_NAME> wallarm/wallarm-node-native -n wallarm-node --create-namespace --set config.api.token=<WALLARM_API_TOKEN> --set config.api.host=us1.api.wallarm.com
helm upgrade --install --version 0.17.1 <WALLARM_RELEASE_NAME> wallarm/wallarm-node-native -n wallarm-node --create-namespace --set config.api.token=<WALLARM_API_TOKEN> --set config.api.host=api.wallarm.com

5. Wallarmロードバランサーを取得する

LoadBalancerタイプでデプロイした場合:

  1. Wallarmロードバランサーの外部IPを取得します。

    kubectl get svc -n wallarm-node
    

    native-processingサービスの外部IPを確認します。

  2. DNSプロバイダーでAレコードを作成し、ドメインを外部IPに向けます。

    DNSが伝播したら、ドメイン名でサービスにアクセスできます。

6. API管理サービスへWallarmコードを適用する

ノードをデプロイしたら、次のステップとして、トラフィックをデプロイ済みノードにルーティングするためにWallarmコードをAPI管理プラットフォームまたはサービスに適用します。

  1. コネクタ向けのWallarmコードバンドルを入手するため、sales@wallarm.comに連絡してください。

  2. プラットフォーム固有の手順に従って、API管理プラットフォームにバンドルを適用します。

アップグレード

Nodeをアップグレードするには、手順に従ってください。