ApplicationSet Web UI
ApplicationSet Web UI
Argo CD 웹 UI는 ApplicationSet 리소스를 조회·미리보기(preview)할 수 있어요. UI는 ApplicationSetService API, ApplicationSet CR, 그리고 API 서버의 RBAC 강제라는 세 계층으로 ApplicationSet과 통합돼요. UI에서 실제 쓰는 API 엔드포인트와 RBAC 동작 방식을 설명해요.
출처: 문서
본문
UI 자체의 최종 사용자 문서는 Web UI에서 ApplicationSet 관리를 참고하세요.
Web UI는 세 계층을 통해 ApplicationSet과 통합돼요.
ApplicationSetServiceAPI — Argo CD API 서버가 노출하는 API(server/applicationset/applicationset.proto에 정의).- ApplicationSet CR — 이 엔드포인트들을 통해 읽음. UI는 spec과 status 양쪽의 필드를 렌더링해요 —
spec.template,status.conditions,status.resources,status.health. - RBAC 강제 — API 서버가 모든 요청에 대해 CLI가 사용하는 것과 같은
applicationsets리소스와 액션을 사용해 수행.
API 엔드포인트
Web UI는 다음 엔드포인트를 사용해요. 모든 호출에 RBAC가 강제되며, 세 번째 열은 검사되는 액션을 보여줘요.
| 엔드포인트 | UI 사용처 | 강제되는 RBAC 액션 |
|---|---|---|
GET /api/v1/applicationsets |
목록 페이지(/applicationsets) |
applicationsets, get (항목별) |
GET /api/v1/applicationsets/{name} |
상세 페이지 헤더와 슬라이드아웃 요약 | applicationsets, get |
GET /api/v1/applicationsets/{name}/resource-tree |
리소스 트리 시각화 | applicationsets, get |
GET /api/v1/applicationsets/{name}/events |
슬라이드아웃 패널의 Events 탭 | applicationsets, get |
GET /api/v1/stream/applicationsets |
목록·상세 페이지의 실시간 업데이트 | applicationsets, get (이벤트별) |
POST /api/v1/applicationsets/generate |
Preview 탭 | applicationsets, create |
RBAC
ApplicationSet RBAC 객체는 템플릿의 대상 Application 프로젝트 — 즉 Spec.Template.Spec.Project — 와 ApplicationSet의 네임스페이스·이름으로 스코프가 지정돼요. 이는 CLI와 직접 API 클라이언트가 보는 것과 같은 스코핑이며, UI는 이를 그대로 상속해요.
읽기 경로 (Read paths)
위에 나열된 모든 읽기 엔드포인트(Get, List, ResourceTree, ListResourceEvents, Watch)는 각 ApplicationSet을 반환하기 전에 applicationsets, get을 검사해요. List와 Watch는 결과 집합을 항목별로 필터링하므로, 사용자는 get 권한이 있는 ApplicationSet만 볼 수 있어요.
사용자가 어떤 ApplicationSet에 get 권한이 있으면, UI의 모든 읽기 뷰(목록 페이지, 상세 페이지, 리소스 트리, 이벤트 탭, 실시간 watch 스트림)에서 그것을 볼 수 있어요.
미리보기 (Preview)
Preview 탭은 get보다 더 많은 권한을 요구하는 유일한 작업이에요. 이것은 Generate를 호출하며, 서버 측에서 (사용자가 편집했을 수도 있는) ApplicationSet 스펙으로부터 후보 Application들을 렌더링해요. 미리보기 렌더링은 컨트롤러가 Application을 만들 때 수행하는 것과 같은 연산이므로, API 서버는 템플릿의 프로젝트에 대해 applicationsets, create 를 강제해요 — 이는 렌더링된 Application을 실제로 생성하는 데 필요한 것과 같은 권한이에요.
ApplicationSet을 볼 수 있지만 프로젝트 템플릿에 create 권한이 없는 사용자는 Preview 탭에서 권한 거부(permission-denied) 응답을 보게 돼요.
ApplicationSet RBAC 모델 전체는 Security를 참고하세요.
ApplicationSet CR의 status.health
ApplicationSet 컨트롤러는 각 ApplicationSet에 status.health 필드(status와 message 포함)를 작성하며, 이는 ApplicationSet의 status.conditions에서 계산돼요. UI는 이 필드를 일반적인 Get, List, Watch 엔드포인트를 통해 읽으며, 별도의 health 평가 API 호출은 없어요.
컨트롤러가 적용하는 규칙은 순서대로 다음과 같아요.
status.conditions가 비어 있으면 → Unknown ("No status conditions found for ApplicationSet").ErrorOccurred조건이status: True이면 → Degraded, 그 조건의 메시지 포함.- 그렇지 않고
RolloutProgressing조건이status: True이면 → Progressing, 그 조건의 메시지 포함. - 그렇지 않고
ResourcesUpToDate조건이status: True이면 → Healthy, 그 조건의 메시지 포함. - 그 외 → Unknown (
"Waiting for health status to be determined").
더 알아보기 (Learn more)
- Security — ApplicationSet RBAC 모델 전체.
- Web UI에서 ApplicationSet 관리 — UI 최종 사용자 문서.