コンテンツにスキップ

Wallarm Sidecarのアップグレード

本手順では、Wallarm Sidecarソリューションを最新の6.xバージョンにアップグレードする手順を説明します。

要件

  • 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 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
    
  • 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を使用して、今後適用されるK8sマニフェストの変更点を確認します。このプラグインは、現在デプロイされている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 6.4.0 -f <PATH_TO_VALUES>
    
    • <RELEASE_NAME>はWallarm SidecarのHelmリリース名です。
    • wallarm-sidecarはWallarm Sidecarソリューションがデプロイされているnamespaceです。弊社のデプロイガイドに従う場合、通常はwallarm-sidecarに設定されています。
    • <PATH_TO_VALUES>はSidecar Helmチャート6.xの設定を含むvalues.yamlファイルへのパスです。Tarantoolからwstoreへの移行に合わせて更新すれば、以前のバージョンのファイルを再利用できます:

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

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

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

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

リリース4.10.7では互換性を破る変更が導入され、ソリューションの再インストールが必要になりました。admission webhook証明書の生成方法の既定がcertgenプロセスに置き換えられています。アップグレード中は、新しいcertgenプロセスを使用して証明書が自動生成されます。

さらに、このリリースでは、admission webhook証明書のプロビジョニングにcert-managerを使用する、または証明書を手動で指定することが可能です。

手順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 6.4.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>はSidecar Helmチャート6.xの設定を含むvalues.yamlファイルへのパスです。Tarantoolからwstoreへの移行に合わせて更新すれば、以前のバージョンのファイルを再利用できます:

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

手順6: Sidecar ProxyがアタッチされたDeploymentを再起動します

既にアプリケーションPodにインジェクトされているプロキシコンテナをアップグレードするには、該当するDeploymentを再起動します:

kubectl rollout restart deployment <DEPLOYMENT_NAME> -n <NAMESPACE>
  • <DEPLOYMENT_NAME>はアプリケーションのDeployment名です

  • <NAMESPACE>はそのDeploymentが存在するnamespaceです

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

手順3: Sidecarソリューションをアップグレードします

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

helm upgrade <RELEASE_NAME> -n <NAMESPACE> wallarm/wallarm-sidecar --version 6.4.0 -f <PATH_TO_VALUES>
  • <RELEASE_NAME>: デプロイ済みSidecarチャートのHelmリリース名です

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

  • <PATH_TO_VALUES>はSidecar Helmチャート6.xの設定を含むvalues.yamlファイルへのパスです。Tarantoolからwstoreへの移行に合わせて更新すれば、以前のバージョンのファイルを再利用できます:

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

手順4: Sidecar ProxyがアタッチされたDeploymentを再起動します

既にアプリケーションPodにインジェクトされているプロキシコンテナをアップグレードするには、該当するDeploymentを再起動します:

kubectl rollout restart deployment <DEPLOYMENT_NAME> -n <NAMESPACE>
  • <DEPLOYMENT_NAME>はアプリケーションのDeployment名です

  • <NAMESPACE>はそのDeploymentが存在するnamespaceです

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

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

    helm list -n wallarm-sidecar
    

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

    チャートバージョンはwallarm-sidecar-6.4.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   3/3     Running   0          91m
    
  3. アプリケーションクラスターのアドレスにテスト用のパストラバーサル攻撃を送信します:

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

    対象のアプリケーションPodにはwallarm-sidecar: enabledラベルが付与されている必要があります。

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