コンテンツにスキップ

統合Wallarmモジュール付きNGINX Ingress controllerのアップグレード

本手順では、デプロイ済みのWallarm NGINXベースのIngress Controllerを最新の6.xにアップグレードする手順を説明します。

サポート終了ノード(3.6以下)をアップグレードする場合は、別の手順を使用してください。

要件

  • Kubernetes platform version 1.26-1.30

  • Helm package manager

  • Compatibility of your services with the Community Ingress NGINX Controller version 1.11.8

  • Access to the account with the Administrator role in Wallarm Console for the US Cloud or EU Cloud

  • 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 and their corresponding hostnames (if any) listed below. This is needed for downloading updates to attack detection rules and API specifications, as well as retrieving precise IPs for your allowlisted, denylisted, or graylisted countries, regions, or data centers

    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
    

手順1:Wallarm Helmチャートリポジトリを更新します

helm repo update wallarm

手順2:今後のK8sマニフェストの変更点を確認します

Ingress controllerの動作が予期せず変わることを避けるため、Helm Diff Pluginを使用して、適用予定のK8sマニフェストの変更をすべて確認します。このプラグインは、稼働中のIngress controllerバージョンと新バージョンのK8sマニフェストの差分を出力します。

プラグインをインストールして実行するには:

  1. プラグインをインストールします:

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

    helm diff upgrade <RELEASE_NAME> -n <NAMESPACE> wallarm/wallarm-ingress --version 6.4.0 -f <PATH_TO_VALUES>
    
    • <RELEASE_NAME>: Ingress controllerチャートを含むHelmリリース名です。
    • <NAMESPACE>: Ingress controllerがデプロイされているNamespaceです。
    • <PATH_TO_VALUES>: Ingress Controller 6.xの設定を含むvalues.yamlファイルへのパスです。以前のバージョンのファイルを流用し、Tarantoolからwstoreへの移行に合わせて更新できます。

      Helmの値名が変更されました:controller.wallarm.tarantoolcontroller.wallarm.postanalytics。postanalyticsメモリを明示的に割り当てている場合は、values.yamlにこの変更を適用してください。

  3. 稼働中のサービスの安定性に影響する変更がないことを確認し、stdoutに出力されたエラーを注意深く確認します。

    stdoutが空の場合は、values.yamlファイルが正しいことを確認します。

手順3:Ingress controllerをアップグレードします

本番環境へデプロイする前に、ステージングのKubernetes環境でNGINX Ingress Controllerを先にアップグレードし、変更内容を検証することを推奨します。

デプロイ済みのNGINX Ingress controllerをアップグレードします:

helm upgrade <RELEASE_NAME> -n <NAMESPACE> wallarm/wallarm-ingress --version 6.4.0 -f <PATH_TO_VALUES>
  • <RELEASE_NAME>: Ingress controllerチャートを含むHelmリリース名です。

  • <NAMESPACE>: Ingress controllerがデプロイされているNamespaceです。

  • <PATH_TO_VALUES>: Ingress Controller 6.xの設定を含むvalues.yamlファイルへのパスです。以前のバージョンのファイルを流用し、Tarantoolからwstoreへの移行に合わせて更新できます。

    Helmの値名が変更されました:controller.wallarm.tarantoolcontroller.wallarm.postanalytics。postanalyticsメモリを明示的に割り当てている場合は、values.yamlにこの変更を適用してください。

手順4:アップグレードしたIngress controllerをテストします

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

    helm list -n <NAMESPACE>
    

    ここで、<NAMESPACE>はIngress controllerを含むHelmチャートがデプロイされているNamespaceです。

    チャートのバージョンはwallarm-ingress-6.4.0である必要があります。

  2. Wallarmの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-wallarm-ingress-controller-6d659bd79b-952gl        3/3     Running   0          8m7s
    ingress-controller-wallarm-ingress-controller-wallarm-wstore-7ddmgbfm 3/3     Running   0          8m7s
    

    バージョン5.x以下からアップグレードする場合、Tarantoolの個別Podがなくなり、wstoreはメインの<CHART_NAME>-wallarm-ingress-controller-xxxPod内で動作することに気付くはずです。

  3. テスト用のパストラバーサル攻撃をWallarm Ingress controllerのアドレスに送信します:

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

    新しいバージョンのソリューションが、前のバージョンと同様に不正リクエストを処理することを確認します。

ステージング環境でアップグレードが正常に検証できたら、本番環境のアップグレードに進みます。