コンテンツにスキップ

高可用性に関する考慮事項(NGINXベースIngressコントローラ)

この記事では、Wallarm Ingressコントローラを高可用性化し、ダウンタイムを防止するための構成推奨事項について説明します。

Other recommendations

Wallarm’s version of the Kubernetes Ingress controller is based on the community-supported NGINX Ingress controller for Kubernetes, so the majority of recommendations found in the official Ingress controller documentation and on the public Internet are also applicable to Wallarm’s Ingress controller.

Recommended reading:

構成推奨事項

以下の推奨事項は、本番環境など重要な環境に該当します。

  • 複数のIngressコントローラポッドインスタンスを使用します。この動作は、values.yamlファイル内の属性controller.replicaCountで制御します。例えば:

    controller:
      replicaCount: 2
    

  • KubernetesクラスターがIngressコントローラポッドを異なるノードに配置するよう強制します。これにより、ノード障害時にIngressサービスのレジリエンスが向上します。この動作は、Kubernetesのpodアンチアフィニティ機能を使用しており、values.yamlファイルに設定されています。例えば:

    controller:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchExpressions:
                - key: app
                  operator: In
                  values:
                  - nginx-ingress
            topologyKey: "kubernetes.io/hostname"
    

  • 予期しないトラフィック急増やその他の条件によりKubernetesのhorizontal pod autoscaling (HPA)機能の使用が正当化されるクラスターでは、values.yamlファイルで以下のように有効化できます:

    controller:
      autoscaling:
        enabled: true
        minReplicas: 1
        maxReplicas: 11
        targetCPUUtilizationPercentage: 50
        targetMemoryUtilizationPercentage: 50
    

  • Tarantoolデータベースを利用したWallarmのpostanalyticsサービスを少なくとも2インスタンス実行します。これらのポッドは名前にingress-controller-wallarm-tarantoolを含みます。この動作は、values.yamlファイル内の属性controller.wallarm.tarantool.replicaCountで制御します。例えば:

    controller:
      wallarm:
        tarantool:
          replicaCount: 2
    

構成手順

これらの構成を設定するには、helm installおよびhelm upgradeコマンドの--setオプションを使用することが推奨されます。例えば:

helm install --set controller.replicaCount=2 <INGRESS_CONTROLLER_RELEASE_NAME> wallarm/wallarm-ingress -n <KUBERNETES_NAMESPACE>

正しいIngressコントローラのインストールにはその他のパラメータも必要です。これらも--setオプションで渡してください。

helm upgrade --reuse-values --set controller.replicaCount=2 <INGRESS_CONTROLLER_RELEASE_NAME> wallarm/wallarm-ingress -n <KUBERNETES_NAMESPACE>