v3.0에서 v3.1로 업그레이드
v3.0에서 v3.1로 업그레이드 (v3.0 to 3.1)
v3.1에서는 API 서버의 --staticassets 디렉터리가 out-of-bounds 심링크로부터 보호되고, v1 Actions API가 디프리케이트되며, PKCE를 쓸 때 권한 부여 코드 흐름이 UI 대신 서버에서 처리되도록 바뀌었어요. Helm과 Kustomize 버전도 각각 3.18.4, 5.7.0으로 올라갔어요.
출처: 문서
본문
API --staticassets 디렉터리의 심링크 보호
API 서버의 --staticassets 디렉터리(기본 /app/shared)가 이제 out-of-bounds 심링크로부터 보호돼요. 이는 심링크 공격을 방지하기 위한 것이에요. --staticassets 디렉터리 안에 디렉터리 밖의 위치를 가리키는 심링크가 있다면, 3.1부터 500 오류를 반환해요.
v1 Actions API 디프리케이트
/api/v1/applications/{name}/resource/actions 엔드포인트가 /api/v1/applications/{name}/resource/actions/v2로 대체되며 디프리케이트됐어요.
이 엔드포인트는 API 사용자가 애플리케이션의 특정 리소스에서 커스텀 리소스 액션을 실행할 수 있게 해줘요.
기존 엔드포인트는 다양한 파라미터를 쿼리 파라미터로 받아들였어요. POST 본문은 액션 이름이었어요.
새 엔드포인트는 모든 파라미터를 POST 본문의 JSON 객체로 받아들여요. 새 엔드포인트는 또한 액션 실행을 파라미터화하기 위한 새 resourceActionParameters 필드를 지원해요.
기존 엔드포인트는 향후 릴리스에서 제거될 예정이므로, 사용자는 가능한 한 빨리 새 엔드포인트로 마이그레이션해야 해요. API 클라이언트는 엔드포인트 URL을 바꾸고 쿼리 문자열 파라미터를 JSON 본문으로 전환하기만 하면 돼요.
기존 엔드포인트가 사용되면 API가 경고 메시지를 기록해요:
RunResourceAction was called. RunResourceAction is deprecated and will be removed in a future release. Use RunResourceActionV2 instead.
새 엔드포인트를 사용할 수 없으면 CLI는 기존 엔드포인트로 폴백해요. 폴백하면 경고 메시지를 기록해요:
RunResourceActionV2 is not supported by the server, falling back to RunResourceAction.
OpenID Connect 권한 부여 코드 흐름(PKCE 포함)이 UI 대신 서버에서 처리
이전에는 PKCE가 활성화되면 권한 부여 코드 흐름(OpenID Connect로 Argo CD에 로그인할 때 일어나는 과정)이 UI에서 처리됐고, PKCE가 비활성화되면 서버에서 처리됐어요. 이제 서버가 항상 이 흐름을 처리해요. PKCE 활성화 여부와 무관하게요.
감지 (Detection)
PKCE가 사용되는지 확인하려면 다음 명령을 실행하세요:
kubectl get cm argocd-cm -n argocd -o=jsonpath="{.data.oidc\.config}" | grep enablePKCEAuthentication
"enablePKCEAuthentication": true를 반환하면 PKCE가 사용되는 거예요.
해결 (Remediation)
아이덴티티 제공자에서 Argo CD에 사용되는 OIDC 클라이언트의 리다이렉트 URI에 Argo CD URL의 /auth/callback 엔드포인트(예: https://argocd.example.com/auth/callback)가 있는지 확인하세요.
Helm 3.18.4로 업그레이드
Argo CD v3.1은 번들 Helm 버전을 3.18.4로 업그레이드해요. 릴리스 노트에 따르면 Helm 3.18에는 호환성이 깨지는 변경이 없어요.
Kustomize 5.7.0으로 업그레이드
Argo CD v3.1은 번들 Kustomize 버전을 5.7.0으로 업그레이드해요. 릴리스 노트에 따르면 Kustomize 5.7에는 호환성이 깨지는 변경이 없어요.
호환성이 깨지는 변경 (Breaking Changes)
Sanitized project API 응답
보안상 이유(GHSA-786q-9hcg-v9ff)로 project API 응답이 민감한 정보를 제거하도록 정리(sanitize)됐어요. 여기에는 project 스코프 저장소와 클러스터의 자격 증명이 포함돼요.
추가된 헬스체크 (Added Healthchecks)
- core.spinkube.dev/SpinApp
- opentelemetry.io/OpenTelemetryCollector
- logstash.k8s.elastic.co/Logstash
- kyverno.io/Policy
- projectcontour.io/HTTPProxy
- grafana.integreatly.org/GrafanaDashboard
- grafana.integreatly.org/GrafanaFolder
- postgresql.cnpg.io/Cluster
- gateway.networking.k8s.io/GRPCRoute
- gateway.networking.k8s.io/Gateway
- gateway.networking.k8s.io/HTTPRoute
- rabbitmq.com/Binding
- rabbitmq.com/Exchange
- rabbitmq.com/Permission
- rabbitmq.com/Policy
- rabbitmq.com/Queue
- rabbitmq.com/Shovel
- rabbitmq.com/User
- rabbitmq.com/Vhost
더 알아보기 (Learn more)
- 이 문서의 원문: v3.0 to 3.1
- Argo CD 공식 문서: https://argo-cd.readthedocs.io