v2.5에서 v2.6으로 업그레이드
v2.5에서 v2.6으로 업그레이드 (v2.5 to 2.6)
v2.6에서는 Sprig v3 도입으로 semver 함수의 ^ 동작이 바뀌고, 일시 중단(suspended)된 Job을 가진 Application이 "Progressing" 대신 "Suspended"로 표시되며, API 서버 인증 토큰에 aud 클레임이 기본 요구돼요.
출처: 문서
본문
알려진 이슈 (Known Issues)
2.6.6 이전의 깨진 project 필터
Argo CD 2.4.0은 project 필터를 projects로 이름을 바꾸는, 호환성이 깨지는 API 변경을 도입했어요.
API 클라이언트에 미치는 영향
REST API로 Argo CD API 서버와 통신하는 다른 API 클라이언트에도 비슷한 문제가 적용돼요. 클라이언트가 project 필드를 사용해 프로젝트를 필터링한다면 필터가 적용되지 않아요. 실패하는 project 필터는, 예를 들어 삭제할 Application 목록을 만드는 데 의존한다면 심각한 결과를 초래할 수 있어요.
CLI 클라이언트에 미치는 영향
v2.4.0보다 오래된 CLI 클라이언트는 클라이언트 측 필터링에 의존하므로 이 버그의 영향을 받지 않아요.
문제 해결 방법
Argo CD >=2.4.27, >=2.5.15 또는 >=2.6.6으로 업그레이드하세요. 이 버전의 Argo CD는 project와 projects를 모두 유효한 필터로 받아들여요.
2.6.5의 깨진 matrix 중첩 git files 생성기
Argo CD 2.6.5는 matrix 중첩 git files 생성기에 버그를 도입했어요. 이 버그는 git files 생성기가 matrix 아래에 중첩된 두 번째 생성기일 때만 적용돼요. 예를 들어:
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
spec:
generators:
- matrix:
generators:
- clusters: {}
- git:
repoURL: https://git.example.com/org/repo.git
revision: HEAD
files:
- path: "defaults/*.yaml"
template:
# ...
중첩된 git files 생성기가 파라미터를 생성하지 않으면, matrix 생성기도 파라미터를 생성하지 않아요. 이로 인해 ApplicationSet이 Application을 생성하지 못해요. ApplicationSet 컨트롤러가 애플리케이션을 삭제할 수 있도록 구성되어 있다면, 이전에 ApplicationSet이 생성한 모든 Application을 삭제하게 돼요.
이 문제를 피하려면 >=2.5.15 또는 >= 2.6.6으로 바로 업그레이드하세요.
ApplicationSets: Sprig의 semver 함수에서 ^ 동작 변경
Argo CD 2.5는 ApplicationSets에 Go 템플릿을 도입했어요. Go 템플릿은 Sprig 함수 라이브러리에 접근할 수 있어요.
Argo CD 2.6은 Sprig를 v3으로 업그레이드해요. 이 업그레이드에는 Masterminds/semver의 v3 업그레이드가 포함돼요.
Masterminds/semver v3는 시맨틱 버전 제약에서 ^ 접두사의 동작을 변경했어요. Sprig의 semver 함수를 참조하고 ^ 접두사를 사용하는 Go 템플릿 ApplicationSet을 사용한다면, Masterminds/semver 체인지로그를 읽고 ApplicationSet의 동작이 어떻게 달라질 수 있는지 이해하세요.
일시 중단된 Job이 있는 Application이 이제 "Progressing" 대신 "Suspended"로 표시
Argo CD v2.6 이전에는 일시 중단된 Job을 관리하는 Application이 "Progressing"으로 표시됐어요. 이는 많은 사용자에게 혼란스럽고 예상치 못한 동작이었어요. v2.6부터 Argo CD는 이러한 Application을 "Suspended"로 표시해요.
이전 동작에 의존하는 프로세스(예: argocd app wait 호출이 있는 CI job)가 있다면, v2.6으로 업그레이드하기 전에 업데이트하세요.
API 서버가 기본적으로 토큰에 aud 클레임을 요구
Argo CD v2.6은 이제 API 서버에 인증하는 데 사용되는 토큰에 aud 클레임이 있어야 해요. 이는 토큰이 API 서버용으로 의도되지 않은 용도로 사용되는 것을 방지하는 보안 개선이에요.
aud 클레임을 제공하지 않는 OIDC provider에 의존한다면, Argo CD OIDC 구성에서 skipAudienceCheckWhenTokenHasNoAudience 플래그를 true로 설정해 이 요구 사항을 비활성화할 수 있어요. (예시는 OIDC 구성 문서를 참고하세요.)
argocd-cm 플러그인 지원 제거가 2.7로 연기
argocd-cm 플러그인에 대한 지원은 원래 2.6으로 예정되어 있었어요. 그 당시에는 사이드카 플러그인을 이름으로 지정할 수 없었어요. Argo CD v2.6은 이름으로 사이드카 플러그인을 지정하는 지원을 도입해요.
이름으로 플러그인을 지정해야 하는 사용자에게 전환 시간을 제공하기 위해 argocd-cm 플러그인 지원 제거가 2.7로 연기됐어요.
API 버전 >=2.6.7에서 오래된 CLI 버전의 argocd app create 실패
Argo CD 2.6.7부터 API는 Application이 존재하지 않을 때 Application GET 요청에 NotFound 대신 PermissionDenied를 반환해요.
2.5.0-rc1로 시작하는 버전 이전과 2.5.16 및 2.6.7 이전 버전의 Argo CD CLI는 argocd app create에서 POST 요청 전에 GET 요청을 수행해요. 이 명령은 PermissionDenied 응답을 처리하지 못하므로 Application 생성/업데이트에 실패해요.
이 문제를 해결하려면 CLI를 최소 2.5.16 또는 2.6.7로 업그레이드하세요.
2.5.0-rc1보다 오래된 CLI는 영향을 받지 않아요.
더 알아보기 (Learn more)
- 이 문서의 원문: v2.5 to 2.6
- Argo CD 공식 문서: https://argo-cd.readthedocs.io