統合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 tohttps://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
手順1:Wallarm Helmチャートリポジトリを更新します¶
手順2:今後のK8sマニフェストの変更点を確認します¶
Ingress controllerの動作が予期せず変わることを避けるため、Helm Diff Pluginを使用して、適用予定のK8sマニフェストの変更をすべて確認します。このプラグインは、稼働中のIngress controllerバージョンと新バージョンのK8sマニフェストの差分を出力します。
プラグインをインストールして実行するには:
-
プラグインをインストールします:
-
プラグインを実行します:
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.tarantool
→controller.wallarm.postanalytics
。postanalyticsメモリを明示的に割り当てている場合は、values.yaml
にこの変更を適用してください。
-
稼働中のサービスの安定性に影響する変更がないことを確認し、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.tarantool
→controller.wallarm.postanalytics
。postanalyticsメモリを明示的に割り当てている場合は、values.yaml
にこの変更を適用してください。
手順4:アップグレードしたIngress controllerをテストします¶
-
Helmチャートのバージョンがアップグレードされたことを確認します:
ここで、
<NAMESPACE>
はIngress controllerを含むHelmチャートがデプロイされているNamespaceです。チャートのバージョンは
wallarm-ingress-6.4.0
である必要があります。 -
WallarmのPodを取得します:
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-xxx
Pod内で動作することに気付くはずです。 -
テスト用のパストラバーサル攻撃をWallarm Ingress controllerのアドレスに送信します:
新しいバージョンのソリューションが、前のバージョンと同様に不正リクエストを処理することを確認します。
ステージング環境でアップグレードが正常に検証できたら、本番環境のアップグレードに進みます。