😵‍💫

マルチGKE構成でArgoCDを使ってる時にAnthos Connect Gatewayのの使用率は100%になった件

2023/09/27に公開

1. 背景

Google Kubernetes Engine(GKE)をマルチクラスタ構成でArgoCDを使う中で、クラスター連携にAnthos Connect Gatewayを使用している。
ある日、いつも通りアプリケーションデプロイを行っていたところ、the server has received too many requestsのエラーが出た。エラーだけ出るならまだしも、アプリケーションの一部が消失した。
ArgoCDで同じような事例がないか検索したところ以下のissueにたどり着いた。
Events on CRDs cause full cluster discovery

2. 原因

Issueを確認したところ、Backup for GKEが有効化されている場合、addon-managerが頻繁にCustomResourceDefinitionをパッチすることで、ArgoCDのgitops-engineの処理でイベントでループが発生し、Connect Gateway APIのrate limit値に達してしまうようです。

実際、Cloud Loggingで以下のロギングクエリで出たログと、Connect Gatewayのリクエストが跳ね上がったタイミングを比べると同じタイミングであったことを確認できました。

resource.type="k8s_cluster"
protoPayload.authenticationInfo.principalEmail="system:addon-manager"
resource.labels.location="us-central1"
protoPayload.methodName="io.k8s.apiextensions.v1.customresourcedefinitions.patch"

Cloud Logging
メトリクス

Connect Gateway
Connect Gateway

3. 対応策

issue内で「GKEのバックアップに関する製品チームから連絡がありました。急速にパッチが当てられたCRDの修正が来週展開される予定です。」と書いてあったので、既にBackup for GKEにアップデートが入ると思っていました。
GCPのサポートに問い合わせたところ個別対応で行ったとのことで、別途こちらでも今回の事象についてissueチケット切る形となりました。対応後は、CustomeResourceDefinitionパッチの頻度が抑えられており、rate limitの上限にならないようになりました。

対応後のConnect Gateway
対応後のConnect Gateway

Discussion