Flex Gateway レプリカの自動スケーリングおよび名前空間への追加

高可用性 (HA) 環境では、水平スケーリングにより負荷が複数の Flex Gateway インスタンスに分散されます。デフォルトでは、Flex Gateway の Helm チャートは 1 つのレプリカで設定されます。より多くの Flex Gateway レプリカを名前空間にリリースするには、次のいずれかの設定を提供します。

次のいずれかの方法で、Flex Gateway (flex-gateway) のデフォルトの Helm チャート設定を見つけます。

  • ArtifactHUB​ の ​flex-gateway​ ページを開く

  • ターミナルウィンドウから ​helm show values <helm-repository-name>/<helm-chart-name>​ を実行する (例: helm show values flex-gateway/flex-gateway​)。

始める前に

次の前提条件が準備されていることを確認します。

レプリカ数を設定する

必要なレプリカの数を設定して検証します。新しいレプリカで既存のレプリカは置き換えられます。Flex Gateway の新しいバージョンが使用可能な場合、このコマンドにより古いレプリカバージョンが最新バージョンに置き換えられます。

実行する手順は、Helm チャートがインストールされているかどうかにより異なります。

  1. 名前空間の Helm チャートがインストールされている場合、次のコマンドを実行します。

    構文:
    helm -n <namespace> upgrade \
    <release-name> <helm-repository-name>/<helm-chart-name> \
    --reuse-values \
    --set replicaCount=<number of replicas>
    例:
    helm -n gateway upgrade \
    ingress flex-gateway/flex-gateway \
    --reuse-values \
    --set replicaCount=2

    正常に終了すると、このコマンドでは次の例のような出力が印刷されます。

    Release "ingress" has been upgraded. Happy Helming!
    NAME: ingress
    LAST DEPLOYED: Mon Apr 17 15:00:09 2023
    NAMESPACE: gateway
    STATUS: deployed
    REVISION: 27
    TEST SUITE: None
  2. Helm チャートがインストールされていない場合、次のコマンドを実行します。

    構文:
    helm -n <namespace> \
    upgrade -i --create-namespace \
    <release-name> <helm-repository-name>/<helm-chart-name> \
    --set-file registration.content=<registration file> \
    --set replicaCount=<number of replicas>
    例:
    helm -n gateway \
    upgrade -i --create-namespace \
    ingress flex-gateway/flex-gateway \
    --set-file registration.content=registration.yaml \
    --set replicaCount=2

    正常に終了すると、このコマンドでは次の例のような出力が印刷されます。

    Release "ingress" does not exist. Installing it now.
    NAME: ingress
    LAST DEPLOYED: Mon Apr 17 15:32:50 2023
    NAMESPACE: gateway
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
  3. 次のコマンドを実行して、レプリカの作成を検証します。

    構文:
    kubectl get rs -n <namespace>
    例:
    kubectl get rs -n gateway

    正常に終了すると、このコマンドでは次の例のような出力が印刷されます。

    NAME                  DESIRED   CURRENT   READY   AGE
    ingress-5b7474b8f6    2         2         2       70s

自動スケーリングを設定する

水平ポッド自動スケーリングでは、CPU、メモリ、および対象と動作に関するその他の設定に基づいて Flex Gateway レプリカが自動的に生成されます。これらの設定についての詳細は、「​自動スケーリングパラメーター​」を参照してください。

自動スケーリング設定を使用した Helm チャートの更新

自動スケーリングパラメーターを使用して Helm チャートを更新する手順は、次のとおりです。

  1. 自動スケーリング設定を使用して YAML ファイルを作成し、要件に合わせて設定を変更します。

    例:
    autoscaling:
      enabled: true
      minReplicas: 2
      maxReplicas: 11
      targetCPUUtilizationPercentage: 50
      targetMemoryUtilizationPercentage: 50
      behavior:
        scaleDown:
          selectPolicy: Min
          stabilizationWindowSeconds: 100
          policies:
          - type: Percent
            value: 70
            periodSeconds: 30
        scaleUp:
          selectPolicy: Max
          stabilizationWindowSeconds: 100
          policies:
          - type: Percent
            value: 70
            periodSeconds: 30
  2. 名前空間の Helm チャートがインストールされている場合、次のコマンドを実行して自動スケーリング設定を適用します。

    構文:
    helm -n <namespace> upgrade \
    <release-name> <helm-repository-name>/<helm-chart-name> \
    --reuse-values \
    -f <your-autoscaling-configuration-yaml>
    例:
    helm -n gateway upgrade \
    ingress flex-gateway/flex-gateway \
    --reuse-values \
    -f autoscaling.yaml

    正常に終了すると、このコマンドでは次の例のような出力が印刷されます。

    Release "ingress" has been upgraded. Happy Helming!
    NAME: ingress
    LAST DEPLOYED: Tue Apr 18 15:46:38 2023
    NAMESPACE: gateway
    STATUS: deployed
    REVISION: 33
    TEST SUITE: None
  3. Helm チャートがインストールされていない場合、次のコマンドを実行して自動スケーリング設定を適用します。

    構文:
    helm -n <namespace> \
    upgrade -i --create-namespace \
    <release-name> <helm-repository-name>/<helm-chart-name> \
    --set-file registration.content=<registration file> \
    -f <your-autoscaling-configuration-yaml>
    例:
    helm -n gateway \
    upgrade -i --create-namespace \
    ingress flex-gateway/flex-gateway \
    --set-file registration.content=registration.yaml \
    -f autoscaling.yaml

    正常に終了すると、このコマンドでは次の例のような出力が印刷されます。

    NAME: ingress
    LAST DEPLOYED: Tue Apr 18 15:50:29 2023
    NAMESPACE: gateway
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
  4. 次のコマンドを実行して、自動スケーリング設定を検証します。

    構文:
    kubectl get hpa -n <namespace>
    例:
    kubectl get hpa -n gateway

    このコマンドでは次の例のような出力が印刷されます。

    NAME     REFERENCE           TARGETS          MINPODS  MAXPODS  REPLICAS  AGE
    ingress  Deployment/ingress  66%/50%, 5%/50%  2        11       2         59s

自動スケーリングパラメーター

自動スケーリングを使用するには、Horizontal Pod Autoscaler (HPA) を有効にして、自動スケーリング動作を定義するための他の Helm チャート設定を定義します。

パラメーター 説明

autoscaling.enabled

Horizontal Pod Autoscaler (HPA) が有効であるかどうかを示すブール値。デフォルトは ​false​ です。

autoscaling.minReplicas

HPA スケーラーが作成できるレプリカの最小数。デフォルトは ​2​ です。

autoscaling.maxReplicas

HPA スケーラーが作成できるレプリカの最大数。デフォルトは ​11​ です。

autoscaling.targetCPUUtilizationPercentage

デプロイされているすべてのポッドの平均 CPU 使用率を設定するリソースメトリクス。デフォルトは ​50​ です。

autoscaling.targetMemoryUtilizationPercentage

デプロイされているすべてのポッドの平均メモリ使用率を表す文字列。デフォルトは ​nil​ です。

autoscaling.behavior

Kubernetes で ​HorizontalPodAutoscaler​ (HPA) オブジェクトをサポートする設定。HPA 設定では、ワークロードの変更の割合に基づいてアプリケーションリソース数などの自動スケーリング動作を制御します。

autoscaling.behavior.scaleUp, ​autoscaling.behavior.scaleDown

HPA スケーラーでレプリカ数を増加 (​scaleUp​) または減少 (​scaleDown​) する場合の自動スケーリング動作の設定。ネストされたパラメーターを使用してスケーリング動作を定義します。

  • selectPolicy​: スケーリングが必要であることが設定済みリソースのメトリクスで示された場合、この設定でポッドをスケーリングするタイミングを決定します。ポッドにはさまざまな数のレプリカが含まれる可能性があるため、この設定が必要です。有効な値は ​Disabled (無効)​、​Min (最小)​、​Max (最大)​ です。 デフォルトは ​Max (最大)​ です。 ​Min (最小)​ と ​Max (最大)​ の値は、レプリカの最小数 (​Min​) または最大数 (​Max​) のどちらでポッドをスケーリングするかを示します。

  • stabilizationWindowSeconds​: ワークロードの変更後にアプリケーションを再スケーリングするまで待機する最小時間 (秒数)。目的は、スケーリングの頻度が高すぎる場合に HPA による過度に積極的な応答や不安定な応答を回避することです。

  • policies​: スケーリング動作を決定するポリシーのリスト。

    • type​: 特定のポリシーの値の種別 ([Percent (パーセント)] または [Pods (ポッド)])。

    • value​: 特定のポリシーの種別の値。

    • periodSeconds​: 特定のポリシーのスケーリング操作間の時間 (秒数)。

自動スケーリングについての詳細は Kubernetes ドキュメント​を参照してください。