v2.6에서 v2.7로 업그레이드
v2.6에서 v2.7로 업그레이드 (v2.6 to 2.7)
v2.7에서는 Proxy Extensions 기능과 새 extensions RBAC 리소스가 도입되고, 진입점(entrypoint)이 tini로 바뀌며 Deep Links 템플릿 문법이 업데이트됐어요. 또 --redis 플래그 사용이 중단되어 설치 매니페스트가 바뀌었어요.
출처: 문서
본문
새 extensions 리소스에 맞춰 RBAC 구성
2.7은 새 extensions RBAC 리소스를 가진 새 Proxy Extensions 기능을 도입해요.
2.7로 업그레이드하면 resource 필드에 *가 있고 action 필드에 *가 있는 RBAC 정책은 자동으로 extensions 권한을 부여해요.
Proxy Extension 기능은 기본적으로 비활성화되어 있지만, 최소 필요한 권한을 적용하려면 RBAC 구성을 확인하는 것이 좋아요.
예시
이전:
p, role:org-admin, *, *, *, allow
새로:
p, role:org-admin, clusters, create, my-proj/*, allow
p, role:org-admin, projects, create, my-proj/*, allow
p, role:org-admin, applications, create, my-proj/*, allow
p, role:org-admin, repositories, create, my-proj/*, allow
p, role:org-admin, certificates, create, my-proj/*, allow
p, role:org-admin, accounts, create, my-proj/*, allow
p, role:org-admin, gpgkeys, create, my-proj/*, allow
# If you don't want to grant the new permission, don't include the following line
p, role:org-admin, extensions, invoke, my-proj/*, allow
Helm 버전 업그레이드
번들로 제공되는 Helm 버전이 3.10.3에서 3.11.2로 업그레이드됐어요.
Kustomize 버전 업그레이드
번들로 제공되는 Kustomize 버전이 4.5.7에서 5.0.1로 업그레이드됐어요.
Notifications: Sprig의 semver 함수에서 ^ 동작 변경
Argo CD 2.7은 특히 Argo CD notifications 내의 Sprig 템플릿을 v3으로 업그레이드해요. 이 업그레이드에는 Masterminds/semver의 v3 업그레이드가 포함돼요.
Masterminds/semver v3는 시맨틱 버전 제약에서 ^ 접두사의 동작을 변경했어요. Sprig의 semver 함수를 참조하고 ^ 접두사를 사용하는 sprig 템플릿 함수를 notifications 템플릿에서 사용한다면, Masterminds/semver 체인지로그를 읽고 notifications의 동작이 어떻게 달라질 수 있는지 이해하세요.
Tini를 진입점으로 사용
매니페스트는 이제 entrypoint.sh 대신 진입점으로 tini를 사용해요. 2.8까지는 업그레이드 호환성을 위해 entrypoint.sh가 유지돼요. 즉, 배포 매니페스트는 2.7로 업그레이드한 후, 나중에 2.8로 업그레이드하기 전에 업데이트해야 해요. 2.8로 이동하기 전에 매니페스트를 업데이트하지 않으면 컨테이너가 시작되지 못해요.
Deep Links 템플릿 업데이트
Deep Links는 이제 특정 링크 범주에 대해 url 및 조건 템플릿에서 cluster, project, application, resource 같은 다른 값에 접근할 수 있게 해줘요. 템플릿 문법도 접근하려는 리소스 유형의 접두사가 붙도록 업데이트됐어요. 예를 들어 이전에 resource.links 구성이 있었다면:
resource.links: |
- url: https://mycompany.splunk.com?search={{.metadata.name}}
title: Splunk
if: kind == "Pod" || kind == "Deployment"
이렇게 바뀌어요:
resource.links: |
- url: https://mycompany.splunk.com?search={{.resource.metadata.name}}&env={{.project.metadata.label.env}}
title: Splunk
if: resource.kind == "Pod" || resource.kind == "Deployment"
각 범주의 링크에서 접근할 수 있는 모든 값 조합을 보려면 전체 문서를 읽어 보세요.
helm.sh/resource-policy 어노테이션 지원
Argo CD는 이제 리소스 삭제를 제어하기 위해 helm.sh/resource-policy 어노테이션을 지원해요. 동작은 argocd.argoproj.io/sync-options: Delete=false 어노테이션과 동일해요: 어노테이션이 존재하고 keep로 설정되면 애플리케이션이 삭제될 때 리소스가 삭제되지 않아요.
Kustomize 패치에서 --redis 변경 확인
Argo CD 2.7부터 설치 매니페스트는 더 이상 --redis로 Redis 서버 이름을 전달하지 않아요.
환경에서 Kustomize JSON 패치로 Redis 서버 이름을 수정하고 있다면, 2.7 매니페스트로 업그레이드할 때 패치가 깨질 수 있어요. 그렇다면 패치를 제거하고 대신 argocd-cmd-params-cm ConfigMap의 redis.server 필드로 Redis 서버 이름을 설정하면 돼요. 그 값은 valueFrom 환경 변수를 통해 필요한 컴포넌트에 전달돼요.
list 생성기가 있는 ApplicationSet의 argocd applicationset CLI 비호환성
서버 측에서 Argo CD v2.7.0-2.7.2를 실행 중이라면, 그 범위 밖의 CLI 버전은 list 생성기를 잘못 처리해요. 그 버전들의 gRPC 인터페이스가 새 elementsYaml 필드에 elements 필드 번호를 사용했기 때문이에요.
서버 측 버전이 v2.7.3 이상인데 Argo CD CLI 버전 v2.7.0-2.7.2를 실행 중이라면, CLI가 elements 필드 내용을 서버로 보내고 서버는 이를 elementsYaml 필드로 해석해요. 이로 인해 ApplicationSet이 런타임에 다음과 유사한 오류로 실패해요:
error unmarshling decoded ElementsYaml error converting YAML to JSON: yaml: control characters are not allowed
CLI 버전 v2.7.3 이상을 서버 측 버전 v2.7.3 이상과 함께 사용하세요.
더 알아보기 (Learn more)
- 이 문서의 원문: v2.6 to 2.7
- Argo CD 공식 문서: https://argo-cd.readthedocs.io