1.2.4. 확인된 문제
- sourceHydrator를 사용하는 애플리케이션에 대한 Image Updater 나중 쓰기 실패
Argo CD Image Updater는
spec.source대신spec.sourceHydrator를 사용하는 애플리케이션에 대한 업데이트를 커밋하지 못합니다. Helm 나중 쓰기 방법(helmvalues:./values.yaml사용자 정의 대상 또는argocdwrite-back 방법)을 사용하는 경우 Image Updater는 성공 메시지를 기록하지만 업데이트된 이미지 태그를 Git에 커밋하지 않습니다. 이 문제는 Image Updater의 내부 코드가 실제 애플리케이션 사양 대신 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참고-
실제 툴 유형과 일치하는 블록만 추가합니다. Argo CD가 둘 이상의 툴 유형의 소스를 거부하므로
helm및kustomize블록을 함께 추가하지 마십시오. - 빈 툴 블록은 리포지토리 콘텐츠에서 툴을 자동으로 감지하므로 Argo CD의 no-op이지만 Image Updater는 시험 소스 구성을 올바르게 식별하고 업데이트해야 하기 때문입니다.
-
실제 툴 유형과 일치하는 블록만 추가합니다. Argo CD가 둘 이상의 툴 유형의 소스를 거부하므로
- 업그레이드 후 Redis HA Pod가 CrashLoopBackOff로 들어갑니다.
Redis HA(고가용성)가 활성화된 Red Hat OpenShift GitOps 1.22로 업그레이드하면
*-redis-ha-server-NPod가 활성 프로브 실패와 일치하지 않는 상태가 되고 결국CrashLoopBackOff로 들어갑니다. Pod 사양 업데이트를 적용하고 정상적인 작업을 다시 시작하려면 수동 개입이 필요합니다.이 문제를 해결하려면 영향을 받는 Redis HA Pod를 하나씩 삭제하고 StatefulSet이 업데이트된 구성으로 다시 생성할 수 있도록 합니다.
$ oc delete pod <argocd-instance>-redis-ha-server-0 -n <namespace>포드가 다시 생성될 때까지 기다린 후 다음 Pod를 삭제하기 전에
Running상태에 도달합니다. 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는 네임스페이스 주석에 따라 인프라 노드에 예약됩니다.