コンテンツにスキップ

Wallarm Sidecarのアップグレード

本手順では、Wallarm Sidecarソリューションのアップグレード手順を説明します。

要件

  • Kubernetes platform version 1.19-1.29

  • Helm v3 package manager

  • An application deployed as a Pod in a Kubernetes cluster

  • 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

  • Access to the Wallarm repositories on Docker Hub https://hub.docker.com/r/wallarm

  • Access to the IP addresses below 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

    34.96.64.17
    34.110.183.149
    35.235.66.155
    34.102.90.100
    34.94.156.115
    35.235.115.105
    
    34.160.38.183
    34.144.227.90
    34.90.110.226
    
  • Access to the account with the Administrator role in Wallarm Console for the US Cloud or the EU Cloud

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

helm repo update wallarm

ステップ2: これから適用されるK8sマニフェストの変更内容を確認

想定外のSidecar動作の変更を防ぐため、Helm Diff Pluginを使用して、デプロイ済みSidecarバージョンと新バージョンのK8sマニフェスト間の差分を確認します。

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

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

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

    helm diff upgrade <RELEASE_NAME> -n wallarm-sidecar wallarm/wallarm-sidecar --version 5.3.0 -f <PATH_TO_VALUES>
    
    • <RELEASE_NAME>はWallarm Sidecar Helmリリースの名前です。
    • wallarm-sidecarはWallarm Sidecarソリューションをデプロイしたnamespaceです。当社のデプロイガイドに従い、通常はwallarm-sidecarに設定されています。
    • <PATH_TO_VALUES>はSidecar設定を定義するvalues.yamlファイルへのパスです。以前のSidecarバージョン実行時に作成したものを使用できます。
  3. すべての変更が稼働中のサービスの安定性に影響しないことを確認し、stdoutのエラーを慎重に確認してください。

    stdoutが空の場合、values.yamlファイルが有効であることを確認します。

バージョン4.10.6または4.10.x以前からのアップグレード

リリース 4.10.7では互換性に破壊的な変更が導入されたため、ソリューションの再インストールが必要となります。admission webhook証明書の生成デフォルト方式はcertgenプロセスに置き換えられました。アップグレード中に、新しいcertgenプロセスにより証明書が自動生成されます。

さらに、本リリースではcert-managerを使用してadmission webhook証明書を提供するか、証明書を手動で指定することが可能です。

ステップ3: 前バージョンのソリューションをアンインストール

helm uninstall <RELEASE_NAME> -n wallarm-sidecar

ステップ4: 以前の証明書アーティファクトを削除

kubectl delete MutatingWebhookConfiguration <RELEASE_NAME>-wallarm-sidecar
kubectl delete secret <RELEASE_NAME>-wallarm-sidecar-admission-tls -n wallarm-sidecar

ステップ5: 新バージョンのソリューションをデプロイ

helm install --version 5.3.0 <RELEASE_NAME> wallarm/wallarm-sidecar --wait -n wallarm-sidecar -f <PATH_TO_VALUES>
  • <RELEASE_NAME>はHelmリリースの名称です。初回デプロイ時と同じ名称を使用することが推奨されます。

  • wallarm-sidecarはHelmリリースをデプロイするnamespaceです。初回デプロイ時と同じnamespaceを使用することが推奨されます。

  • <PATH_TO_VALUES>values.yamlファイルへのパスです。初回デプロイ時に生成したものを再利用でき、アップグレード時に変更は必要ありません。

バージョン4.10.7以降からのアップグレード

ステップ3: Sidecarソリューションのアップグレード

デプロイ済みのSidecarソリューションコンポーネントをアップグレードします:

helm upgrade <RELEASE_NAME> -n <NAMESPACE> wallarm/wallarm-sidecar --version 5.3.0 -f <PATH_TO_VALUES>
  • <RELEASE_NAME>:デプロイされたSidecarチャートのHelmリリース名

  • <NAMESPACE>:Sidecarがデプロイされているnamespace

  • <PATH_TO_VALUES>:Sidecar 4.10設定を定義するvalues.yamlファイルへのパスです。以前のSidecarバージョン実行時に作成したものを使用できます。

アップグレード後のSidecarソリューションのテスト

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

    helm list -n wallarm-sidecar
    

    ここでwallarm-sidecarはSidecarがデプロイされているnamespaceです。namespaceが異なる場合は、この値を変更してください。

    チャートバージョンはwallarm-sidecar-5.3.0に対応している必要があります。

  2. Wallarmコントロールプレーンの詳細を取得し、正常に起動していることを確認します:

    kubectl get pods -n wallarm-sidecar -l app.kubernetes.io/name=wallarm-sidecar
    

    各podはREADY: N/NおよびSTATUS: Runningと表示されるはずです。例:

    NAME                                              READY   STATUS    RESTARTS   AGE
    wallarm-sidecar-controller-54cf88b989-gp2vg      1/1     Running   0          91m
    wallarm-sidecar-postanalytics-86d9d4b6cd-hpd5k   4/4     Running   0          91m
    
  3. アプリケーションクラスターのアドレスに対して、テストパストラバーサル攻撃を送信します:

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

    リクエストされたアプリケーションPodにはwallarm-sidecar: enabledラベルが付与されているはずです。

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