1.2.4. 既知の問題
- イメージアップデーターの書き戻しが、sourceHydrator を使用するアプリケーションで失敗する
Argo CD イメージアップデーターは、
spec.sourceの代わりにspec.sourceHydratorを使用するアプリケーションの更新をコミットできません。Helm の書き戻し方法 (helmvalues:./values.yamlカスタムターゲットまたはargocd の書き戻し方法) を使用すると、イメージアップデーターは成功メッセージをログに記録しますが、更新されたイメージタグを Git にコミットしません。この問題は、イメージアップデーターの内部コードが、実際のアプリケーション仕様ではなく、sourceHydrator アプリケーションのソース設定のローカルコピーを変更するために発生します。その結果、変更内容は破棄されます。この問題を回避するには、
spec.sourceHydrator.drySourceに、ドライソースのツールタイプに一致する空のツールブロックを追加します。Helm ベースのドライソースの例:
apiVersion: argoproj.io/v1alpha1 kind: Application spec: sourceHydrator: drySource: repoURL: https://example.com/repo.git path: charts/app targetRevision: HEAD helm: {} # Add this empty block for Helm charts syncSource: targetBranch: env/dev path: charts/appKustomize ベースのドライソースの例:
apiVersion: argoproj.io/v1alpha1 kind: Application spec: sourceHydrator: drySource: repoURL: https://example.com/repo.git path: overlays/production targetRevision: HEAD kustomize: {} # Add this empty block for Kustomize overlays syncSource: targetBranch: env/production path: overlays/production注記-
実際のツールタイプに一致するブロックのみを追加してください。
Helmとkustomize のブロックを一緒に追加しないでください。Argo CD は、複数のツールタイプを含むソースを拒否します。 - Argo CD では、空のツールブロックはリポジトリーの内容からツールを自動検出するため、何もしませんが、Image Updater では、ドライソース設定を正しく識別して更新するためにこのブロックが必要です。
-
実際のツールタイプに一致するブロックのみを追加してください。
- アップグレード後に Redis HAPod が CrashLoopBackOff 状態になる
Red Hat OpenShift GitOps 1.22 にアップグレードし、Redis 高可用性 (HA) を有効にすると、
*-redis-ha-server-NPod がライブネスプローブの失敗を伴う不整合な状態になり、最終的にCrashLoopBackOff 状態になります。Pod の仕様更新を強制し、通常の動作を再開するには、手動による介入が必要です。この問題を回避するには、影響を受ける Redis HA Pod を 1 つずつ削除し、StatefulSet が更新された設定でそれらを再作成するのを待ちます。
$ oc delete pod <argocd-instance>-redis-ha-server-0 -n <namespace>次の Pod を削除する前に、Pod が再作成され、
実行状態になるまで待機してください。StatefulSet 内のすべてのredis-ha-serverPod に対して、このプロセスを繰り返します。- runOnInfra を有効にしても、既存の Pod は自動的に再スケジュールされない
Red Hat OpenShift GitOps 1.22 では、
gitopsserviceクラスター CR でspec.runOnInfra: trueを有効にすると、ワークロード Pod テンプレートを更新するのではなく、名前空間アノテーションによってインフラストラクチャーノードのスケジューリングが適用されます。この設定が有効になっている場合、既存の Pod はインフラストラクチャーノードに自動的に再スケジュールされません。spec.runOnInfra: trueを有効にした後、既存のワークロードをインフラストラクチャーノードに移動するには、影響を受ける Pod を手動で再起動します。$ oc delete pod <pod-name> -n <namespace>再作成された Pod は、名前空間アノテーションに従ってインフラストラクチャーノードにスケジュールされます。