第4章 Argo CD Application Controller レプリカ間でのクラスターのシャーディング


コントローラーが管理しているクラスターが多すぎてメモリーを大量に使用している場合は、複数の Argo CD Application Controller レプリカ間でクラスターをシャードできます。

4.1. ラウンドロビンシャーディングアルゴリズムの有効化

重要

round-robin シャーディングアルゴリズムはテクノロジープレビューのみの機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

デフォルトでは、Argo CD Application Controller は、不均一な legacy のハッシュベースのシャーディングアルゴリズムを使用してクラスターをシャードに割り当てます。これにより、クラスターの分散が不均等になる可能性があります。round-robin シャーディングアルゴリズムを有効にして、すべてのシャードにわたってより均等なクラスター分散を実現できます。

Red Hat OpenShift GitOps で round-robin シャーディングアルゴリズムを使用すると、次の利点があります。

  • よりバランスの取れたワークロード分散を確保する
  • シャードが過負荷になったり、十分に活用されなかったりすることを回避する
  • コンピューティングリソースの効率を最適化する
  • ボトルネックのリスクを軽減する
  • Argo CD システムの全体的なパフォーマンスと信頼性を向上する

代替シャーディングアルゴリズムの導入により、特定の使用例に基づいてさらにカスタマイズできるようになります。デプロイメントのニーズに最も適したアルゴリズムを選択できるため、さまざまな運用シナリオでの柔軟性と適応性が向上します。

ヒント

GitOps で代替シャーディングアルゴリズムの利点を活用するには、デプロイ中にシャーディングを有効にすることが重要です。

4.1.1. Web コンソールでの round-robin シャーディングアルゴリズムの有効化

OpenShift Container Platform Web コンソールを使用して round-robin シャーディングアルゴリズムを有効にできます。

前提条件

  • Red Hat OpenShift GitOps Operator が OpenShift Container Platform クラスターにインストールされている。
  • OpenShift Container Platform Web コンソールにアクセスできる。
  • cluster-admin 権限でクラスターにアクセスできる。

手順

  1. Web コンソールの Administrator パースペクティブで、Operators Installed Operators に移動します。
  2. インストールされている Operator から Red Hat OpenShift GitOps をクリックし、Argo CD タブに移動します。
  3. round-robin シャーディングアルゴリズムを有効にする Argo CD インスタンス (例: openshift-gitops) をクリックします。
  4. YAML タブをクリックし、以下の例のように YAML ファイルを編集します。

    ラウンドロビンシャーディングアルゴリズムが有効になっている Argo CD インスタンスの例

    apiVersion: argoproj.io/v1beta1
    kind: ArgoCD
    metadata:
      name: openshift-gitops
      namespace: openshift-gitops
    spec:
      controller:
        sharding:
          enabled: true 1
          replicas: 3 2
        env: 3
          - name: ARGOCD_CONTROLLER_SHARDING_ALGORITHM
            value: round-robin
        logLevel: debug 4

    1
    シャーディングを有効にするには、sharding.enabled パラメーターを true に設定します。
    2
    レプリカの数を必要な値 (例: 3) に設定します。
    3
    シャーディングアルゴリズムを round-robin に設定します。
    4
    各クラスターがどのシャードに接続されているかを確認できるように、ログレベルを debug に設定します。
  5. Save をクリックします。

    成功通知アラート openshift-gitops has been updated to version <version> が表示されます。

    注記

    デフォルトの openshift-gitops インスタンスを編集すると、Managed resource ダイアログボックスが表示されます。Save をもう一度クリックして、変更を確定します。

  6. 次の手順を実行して、シャーディングアルゴリズムとして round-robin を使用する設定で、シャーディングが有効になっていることを確認します。

    1. Workloads StatefulSets に移動します。
    2. Argo CD インスタンスをインストールしたネームスペースを Project ドロップダウンリストから選択します。
    3. <instance_name>-application-controller (例: openshift-gitops-application-controller) をクリックし、Pod タブに移動します。
    4. 作成された Application Controller Pod の数を確認します。これは、セットレプリカの数に対応している必要があります。
    5. 調べるコントローラー Pod をクリックし、Logs タブに移動して Pod ログを表示します。

      コントローラー Pod ログスニペットの例

      time="2023-12-13T09:05:34Z" level=info msg="ArgoCD Application Controller is starting" built="2023-12-01T19:21:49Z" commit=a3vd5c3df52943a6fff6c0rg181fth3248976299 namespace=openshift-gitops version=v2.9.2+c5ea5c4
      time="2023-12-13T09:05:34Z" level=info msg="Processing clusters from shard 1"
      time="2023-12-13T09:05:34Z" level=info msg="Using filter function:  round-robin" 1
      time="2023-12-13T09:05:34Z" level=info msg="Using filter function:  round-robin"
      time="2023-12-13T09:05:34Z" level=info msg="appResyncPeriod=3m0s, appHardResyncPeriod=0s"

      1
      "Using filter function: round-robin" メッセージを探します。
    6. 次の例に示すように、ログの Search フィールドで processed by shard を検索して、シャード間でのクラスターの分布が均一であることを確認します。

      重要

      これらのログを確認するには、ログレベルを debug に設定していることを確認してください。

      コントローラー Pod ログスニペットの例

      time="2023-12-13T09:05:34Z" level=debug msg="ClustersList has 3 items"
      time="2023-12-13T09:05:34Z" level=debug msg="Adding cluster with id= and name=in-cluster to cluster's map"
      time="2023-12-13T09:05:34Z" level=debug msg="Adding cluster with id=068d8b26-6rhi-4w23-jrf6-wjjfyw833n23 and name=in-cluster2 to cluster's map"
      time="2023-12-13T09:05:34Z" level=debug msg="Adding cluster with id=836d8b53-96k4-f68r-8wq0-sh72j22kl90w and name=in-cluster3 to cluster's map"
      time="2023-12-13T09:05:34Z" level=debug msg="Cluster with id= will be processed by shard 0" 1
      time="2023-12-13T09:05:34Z" level=debug msg="Cluster with id=068d8b26-6rhi-4w23-jrf6-wjjfyw833n23 will be processed by shard 1" 2
      time="2023-12-13T09:05:34Z" level=debug msg="Cluster with id=836d8b53-96k4-f68r-8wq0-sh72j22kl90w will be processed by shard 2" 3

      1 2 3
      この例では、3 つのクラスターがシャード 0、シャード 1、およびシャード 2 に連続して接続されています。
      注記

      クラスターの数 "C" がシャードレプリカの数 "R" の倍数である場合は、各シャードに同じ数のクラスター "N" が割り当てられている必要があります。これは、"C" を "R" で割ったものに相当します。前の例では、3 つのクラスターと 3 つのレプリカを示しています。したがって、各シャードには 1 つのクラスターが割り当てられます。

4.1.2. CLI を使用したラウンドロビンシャーディングアルゴリズムの有効化

コマンドラインインターフェイスを使用して、round-robin シャーディングアルゴリズムを有効にできます。

前提条件

  • Red Hat OpenShift GitOps Operator が OpenShift Container Platform クラスターにインストールされている。
  • cluster-admin 権限でクラスターにアクセスできる。

手順

  1. 以下のコマンドを実行して、シャード化を有効にし、レプリカの数を必要な値に設定します。

    $ oc patch argocd <argocd_instance> -n <namespace> --patch='{"spec":{"controller":{"sharding":{"enabled":true,"replicas":<value>}}}}' --type=merge

    出力例

    argocd.argoproj.io/<argocd_instance> patched

  2. 以下のコマンドを実行して、シャード化アルゴリズムを round-robin に設定します。

    $ oc patch argocd <argocd_instance> -n <namespace> --patch='{"spec":{"controller":{"env":[{"name":"ARGOCD_CONTROLLER_SHARDING_ALGORITHM","value":"round-robin"}]}}}' --type=merge

    出力例

    argocd.argoproj.io/<argocd_instance> patched

  3. 次のコマンドを実行して、Argo CD Application Controller Pod の数がセットされたレプリカの数と一致していることを確認します。

    $ oc get pods -l app.kubernetes.io/name=<argocd_instance>-application-controller -n <namespace>

    出力例

    NAME                                        READY   STATUS    RESTARTS   AGE
    <argocd_instance>-application-controller-0   1/1     Running   0          11s
    <argocd_instance>-application-controller-1   1/1     Running   0          32s
    <argocd_instance>-application-controller-2   1/1     Running   0          22s

  4. 次のコマンドを実行して、シャーディングアルゴリズムとして round-robin を使用する設定で、シャーディングが有効になっていることを確認します。

    $ oc logs <argocd_application_controller_pod> -n <namespace>

    出力の抜粋例

    time="2023-12-13T09:05:34Z" level=info msg="ArgoCD Application Controller is starting" built="2023-12-01T19:21:49Z" commit=a3vd5c3df52943a6fff6c0rg181fth3248976299 namespace=<namespace> version=v2.9.2+c5ea5c4
    time="2023-12-13T09:05:34Z" level=info msg="Processing clusters from shard 1"
    time="2023-12-13T09:05:34Z" level=info msg="Using filter function:  round-robin" 1
    time="2023-12-13T09:05:34Z" level=info msg="Using filter function:  round-robin"
    time="2023-12-13T09:05:34Z" level=info msg="appResyncPeriod=3m0s, appHardResyncPeriod=0s"

    1
    "Using filter function: round-robin" メッセージを探します。
  5. 次の手順を実行して、シャード間でクラスターが均等に分散されていることを確認します。

    1. 次のコマンドを実行して、ログレベルを debug に設定します。

      $ oc patch argocd <argocd_instance> -n <namespace> --patch='{"spec":{"controller":{"logLevel":"debug"}}}' --type=merge

      出力例

      argocd.argoproj.io/<argocd_instance> patched

    2. 次のコマンドを実行して、ログを表示し、processed by shard を検索して、各クラスターがどのシャードに接続されているかを確認します。

      $ oc logs <argocd_application_controller_pod> -n <namespace> | grep "processed by shard"

      出力の抜粋例

      time="2023-12-13T09:05:34Z" level=debug msg="Cluster with id= will be processed by shard 0" 1
      time="2023-12-13T09:05:34Z" level=debug msg="Cluster with id=068d8b26-6rhi-4w23-jrf6-wjjfyw833n23 will be processed by shard 1" 2
      time="2023-12-13T09:05:34Z" level=debug msg="Cluster with id=836d8b53-96k4-f68r-8wq0-sh72j22kl90w will be processed by shard 2" 3

      1 2 3
      この例では、3 つのクラスターがシャード 0、シャード 1、およびシャード 2 に連続して接続されています。
      注記

      クラスターの数 "C" がシャードレプリカの数 "R" の倍数である場合は、各シャードに同じ数のクラスター "N" が割り当てられている必要があります。これは、"C" を "R" で割ったものに相当します。前の例では、3 つのクラスターと 3 つのレプリカを示しています。したがって、各シャードには 1 つのクラスターが割り当てられます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.