Argo CD 업그레이드 v3.3 → v3.4
Argo CD 업그레이드 v3.3 → v3.4
이 페이지는 Argo CD v3.3에서 v3.4로 업그레이드할 때 알아야 할 변경 사항(breaking changes)을 정리합니다. 클러스터 버전 형식 변경, 누락된 리소스의 헬스 상태 처리 방식, gRPC DNS 조회 기본 비활성화 등이 핵심입니다.
출처: 문서
본문
v3.3 → 3.4
Breaking Changes
클러스터 버전 형식 변경
새 동작:
3.4에서는 클러스터 버전을 이전 형식 Major.Minor 대신 좀 더 상세한 vMajor.Minor.Patch 형식으로 저장합니다.
이 변경은 ArgoCD가 K8s 클러스터 버전을 해석하는 방식을 Helm 3.19.0 이상이 해석하는 방식과 맞추는 것입니다.
이 변경으로 버전 비교가 쉬워지고 향후 기능을 지원할 수 있게 됩니다. 또한 더 정확한 버전 비교가 가능해지고 향후 Kubernetes 릴리스와의 호환성이 향상됩니다.
이 변경은 Argo CD 3.3.3에도 백포트되었습니다.
영향:
클러스터 생성기(Cluster Generators)를 사용하면서 클러스터의 Kubernetes 버전을 기준으로 클러스터를 가져오고 클러스터 시크릿에 argocd.argoproj.io/auto-label-cluster-info를 사용하는 ApplicationSet은, 기존 Major.Minor 형식 대신 vMajor.Minor.Patch 형식의 argocd.argoproj.io/kubernetes-version을 사용하도록 업데이트해야 합니다. 자세한 내용은 여기에서 확인할 수 있습니다.
또한 클러스터 정보를 조회하는 API, UI, CLI 명령어는 이제 버전을 vMajor.Minor.Patch 형식으로 반환합니다.
Argo CD CMP 플러그인과 함께 사용되는 환경 변수 $KUBE_VERSION은 변경되지 않으며 Major.Minor.Patch 형식으로 버전을 반환하므로 CMP 플러그인은 영향을 받지 않습니다.
동작 개선 / 수정
헬스 상태가 누락된 Application
Application 헬스 상태의 동작이 더 일관되고 유용하게 변경되었습니다. 기존에는 누락된 리소스에 내장 또는 커스텀 헬스체크가 정의되어 있는지에 따라 Application의 헬스 상태가 Missing으로 일관되지 않게 표시되었습니다.
새 동작:
- Application은 모든 리소스가 누락된 경우에만(예: 첫 동기화 전)
Missing헬스를 표시합니다. - 개별 누락 리소스는 더 이상 Application의 전체 헬스 상태에 영향을 주지 않습니다.
- 헬스 상태는 이제 존재하는 리소스의 집계 헬스를 반영합니다.
OutOfSync상태가 이미 리소스 누락을 나타내므로, 개별 누락 리소스에 대한 헬스 상태는 중복입니다.- 존재하는 리소스에 대해 정의된 리소스 헬스체크가 명시적으로
Missing을 반환한다면, 그 결과는 여전히 전체 Application 헬스에 반영됩니다.
영향:
- 일부 리소스가 누락된 Application은 이제
Missing대신 존재하는 리소스의 헬스(예:Healthy,Progressing,Degraded)를 표시합니다. - 리소스 누락 감지에 Application 헬스 상태를 사용하던 자동화는 이제 동기화 상태에서
OutOfSync를 확인하고, 필요하다면 개별 리소스 헬스를 선택적으로 검사해야 합니다. - 사용자는 이제 한 번도 동기화되지 않은 Application(모든 리소스 누락 =
Missing헬스)과 일부 리소스가 삭제된 Application(남은 리소스의 헬스 표시)을 구분할 수 있습니다.
gRPC 서비스 구성 DNS 조회가 기본적으로 비활성화됨
ArgoCD 컴포넌트는 이제 듀얼 스택(IPv4+IPv6) Kubernetes 환경에서 과도한 DNS 쿼리와 타임아웃을 방지하기 위해 기본적으로 DNS TXT 레코드를 통한 gRPC 서비스 구성 조회를 비활성화합니다.
배경:
gRPC 클라이언트는 기본적으로 _grpc_config.<hostname>에 대한 DNS TXT 레코드를 쿼리하여 서비스 구성을 발견하려고 시도합니다. 듀얼 스택 환경에서는 이러한 조회가 과도한 DNS 쿼리와 타임아웃을 유발하여 repo-server 충돌과 동기화 실패를 일으킬 수 있습니다.
새 동작:
- 모든 ArgoCD 컴포넌트에서 환경 변수
GRPC_ENABLE_TXT_SERVICE_CONFIG가 기본적으로false로 설정됩니다. - 이로써 gRPC가 서비스 구성에 대한 DNS TXT 레코드 조회를 시도하지 않게 됩니다.
- 대부분의 사용자는 gRPC 서비스 구성에 DNS TXT 레코드를 사용하지 않습니다.
영향:
- 긍정적: 듀얼 스택 환경에서 과도한 DNS 쿼리를 없애 타임아웃을 방지하고 안정성을 개선합니다.
- 최소한: 대다수의 사용자는 gRPC 서비스 구성에 DNS TXT 레코드를 사용하지 않으므로 기능 변화를 느끼지 못합니다.
- 재활성화: DNS TXT 레코드를 통한 gRPC 서비스 구성을 실제로 사용하는 사용자는
argocd-cmd-params-cmConfigMap에서controller.grpc.enable.txt.service.config: "true"파라미터를 설정해 이 기능을 다시 활성화할 수 있습니다.
필요한 경우 재활성화 예시:
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-cmd-params-cm
namespace: argocd
data:
controller.grpc.enable.txt.service.config: "true"
관련 이슈
https://github.com/argoproj/argo-cd/issues/24991
더 상세한 클러스터 버전
3.4.0은 클러스터 버전을 이전 형식 Major.Minor 대신 더 상세한 Major.Minor.Patch 형식으로 저장합니다. 이 변경은 버전 비교를 쉽게 하고 향후 기능을 지원하기 위한 것입니다. 또한 더 정확한 버전 비교와 향후 Kubernetes 릴리스와의 더 나은 호환성을 제공합니다.
사용자는 UI와 클러스터 정보를 조회하는 CLI 명령어에서 이를 확인할 수 있습니다.
API 변경
API 표면의 변경 사항: 필드 제거나 변경된 API 기본값
보안 변경
보안 동작의 변경 사항: 민감한 필드 제거 또는 변경된 인증 기본값
폐기 항목
향후 릴리스에서 제거될 플래그/동작, 그리고 폐기된 구성 API 또는 CLI 플래그
Kustomize 업그레이드
번들 Kustomize 버전 상향: breaking 동작, 특정 업스트림 동작 변경(예: 네임스페이스 전파 수정)에 대한 참고사항
Helm 업그레이드
번들 Helm 버전 상향: breaking 동작, 차트가 특정 Helm 버전에 묶인 기능에 의존하는지 확인
Dex 업그레이드
Argo CD v3.4는 번들된 Dex 버전을 2.45.0으로 업그레이드합니다. 릴리스 노트에 따르면 몇 가지 유의할 점이 있습니다.
- Gomplate가 내부적으로 사용되지만, 전처리에 Dex를 구성한 사용자는 영향을 받을 수 있습니다.
ContinueOnConnectorFailure기능 플래그가 이제 기본적으로 활성화됩니다. 비활성화하려면argocd-cmd-params-cmConfigMap 파라미터dexserver.connector.failure.continue를false로 설정하세요.
go-oidc 업그레이드
go-oidc v3.17.0은 토큰 검증 단계의 순서를 변경합니다.
이전 순서:
parse claims → signature
업데이트된 순서:
signature → parse claims
가능한 사용자 영향과 완화 방안
만료되었고 회전(rotation)으로 인해 JWKS에서 제거된 키로 서명된 토큰의 경우, 서명 검증 실패 시 사용자를 SSO로 리다이렉트하지 않습니다. 대신 사용자는 로그인 페이지로 리다이렉트되고 SSO 로그인을 수동으로 시작해야 합니다.
이 시나리오는 이전에 사용된 키를 토큰 수명을 초과하는 유예 기간 동안 제공하는 프로바이더 모범 사례를 구현하면 피할 수 있습니다.
Open Telemetry 업그레이드
Argo CD v3.4는 go.opentelemetry.io/otel을 1.42.0으로 업그레이드하며, 시맨틱 컨벤션은 v1.40.0 릴리스입니다. 변경된 메트릭 이름과 제거된 속성 목록은 시맨틱 컨벤션 릴리스 노트를 참조하세요. OTEL 기반 Argo CD Grafana 대시보드/알림을 수정해야 할 수 있습니다.
추가된 커스텀 헬스체크
- nmstate.io/NodeNetworkConfigurationPolicy