コンテンツにスキップ

統合されたWallarmモジュールとNGINX Ingress controllerの更新

[nginx-process-time-limit-docs]:    ../admin-en/configure-parameters-en.md#wallarm_process_time_limit
[nginx-process-time-limit-block-docs]:  ../admin-en/configure-parameters-en.md#wallarm_process_time_limit_block
[overlimit-res-rule-docs]:           ../user-guides/rules/configure-overlimit-res-detection.md
[graylist-docs]:                     ../user-guides/ip-lists/overview.md
[ip-list-docs]:                     ../user-guides/ip-lists/overview.md
[waf-mode-instr]:                   ../admin-en/configure-wallarm-mode.md
[ip-lists-docs]:                    ../user-guides/ip-lists/overview.md
[api-spec-enforcement-docs]:        ../api-specification-enforcement/overview.md

# 統合Wallarmモジュール搭載のNGINX Ingressコントローラーのアップグレード

本手順では、既にデプロイされたWallarm NGINXベースのIngressコントローラー4.xから、Wallarmノード5.0搭載の新バージョンへのアップグレード手順を説明します。

サポート終了ノード(3.6以下)のアップグレードには、[こちらの手順](older-versions/ingress-controller.md)をご利用ください。

## 要件

* Kubernetes platform version 1.26-1.30
* [Helm](https://helm.sh/) package manager
* Compatibility of your services with the [Community Ingress NGINX Controller](https://github.com/kubernetes/ingress-nginx) version 1.11.5
* Access to the account with the **Administrator** role in Wallarm Console for the [US Cloud](https://us1.my.wallarm.com/) or [EU Cloud](https://my.wallarm.com/)
* Access to `https://us1.api.wallarm.com` for working with US Wallarm Cloud or to `https://api.wallarm.com` for working with EU Wallarm Cloud
* Access to `https://charts.wallarm.com` to add the Wallarm Helm charts. Ensure the access is not blocked by a firewall
* Access to the Wallarm repositories on Docker Hub `https://hub.docker.com/r/wallarm`. Make sure the access is not blocked by a firewall
* Access to the IP addresses below for downloading updates to attack detection rules and [API specifications][api-spec-enforcement-docs], as well as retrieving precise IPs for your [allowlisted, denylisted, or graylisted][ip-lists-docs] countries, regions, or data centers

    === "US Cloud"
        ```
        34.96.64.17
        34.110.183.149
        35.235.66.155
        34.102.90.100
        34.94.156.115
        35.235.115.105
        ```
    === "EU Cloud"
        ```
        34.160.38.183
        34.144.227.90
        34.90.110.226
        ```

## ステップ1: Wallarm Helmチャートリポジトリの更新

```bash
helm repo update wallarm

ステップ2: 今後のK8sマニフェストの変更内容を確認する

予期しないIngressコントローラーの動作変更を防ぐため、Helm Diff Pluginを使用して、今後のK8sマニフェストの変更内容を確認してください。このプラグインは、デプロイ済みのIngressコントローラーのバージョンのK8sマニフェストと新バージョンとの差分を出力します。

プラグインのインストールと実行方法は以下の通りです:

  1. プラグインのインストール:

    helm plugin install https://github.com/databus23/helm-diff
    
  2. プラグインの実行:

    helm diff upgrade <RELEASE_NAME> -n <NAMESPACE> wallarm/wallarm-ingress --version 5.3.0 -f <PATH_TO_VALUES>
    
    • <RELEASE_NAME>:IngressコントローラーチャートのHelmリリース名
    • <NAMESPACE>:IngressコントローラーがデプロイされているNamespace
    • <PATH_TO_VALUES>:Ingressコントローラー5.0設定を定義するvalues.yamlファイルへのパス–前バージョン実行時に作成したファイルを利用できます
  3. 変更が稼働中のサービスの安定性に影響を及ぼさないことを確認し、stdoutからのエラーを注意深く確認してください。

    もしstdoutが空の場合は、values.yamlファイルが有効であることを確認してください。

ステップ3: Ingressコントローラーのアップグレード

デプロイ済みのNGINX Ingressコントローラーをアップグレードしてください:

helm upgrade <RELEASE_NAME> -n <NAMESPACE> wallarm/wallarm-ingress --version 5.3.0 -f <PATH_TO_VALUES>
  • <RELEASE_NAME>:IngressコントローラーチャートのHelmリリース名

  • <NAMESPACE>:IngressコントローラーがデプロイされているNamespace

  • <PATH_TO_VALUES>:Ingressコントローラー5.0設定を定義するvalues.yamlファイルへのパス–前バージョン実行時に作成したファイルを利用できます

ステップ4: アップグレード後のIngressコントローラーのテスト

  1. Helmチャートのバージョンがアップグレードされたことを確認してください:

    helm list -n <NAMESPACE>
    

    ここで<NAMESPACE>は、IngressコントローラーのHelmチャートがデプロイされたNamespaceです。

    チャートバージョンがwallarm-ingress-5.3.0に一致している必要があります。

  2. Pod一覧の取得:

    kubectl get pods -n <NAMESPACE> -l app.kubernetes.io/name=wallarm-ingress
    

    各PodのステータスはSTATUS: RunningまたはREADY: N/Nである必要があります。例えば:

    NAME                                                              READY     STATUS    RESTARTS   AGE
    ingress-controller-nginx-ingress-controller-675c68d46d-cfck8      3/3       Running   0          5m
    ingress-controller-nginx-ingress-controller-wallarm-tarantljj8g   4/4       Running   0          5m
    
  3. Wallarm Ingressコントローラーのアドレスに対して、テストパストラバーサル攻撃リクエストを送信してください:

    curl http://<INGRESS_CONTROLLER_IP>/etc/passwd
    

    新バージョンのソリューションが、前バージョンと同様に悪意あるリクエストを処理することを確認してください。
    ```