Overview
ZCP v2의 가장 중요한 기능은 Multi Cluster 지원입니다. ZCP v1 에서는 각 클러스터 별로 ZCP 가 설치되어 해당 클러스터에만 어플리케이션을 배포하고, 로그를 수집하고, 모니터링 메트릭을 수집할 수 있었습니다. ZCP v2는 Control Plane 클러스터를 중심으로 여러 Data Plane 클러스터를 관리하고, 어플리케이션을 배포하고, 데이터를 수집하는 중앙 집중형으로 구성이 되어있습니다.
ZCP v2 의 Application (이하 ZCP Application. 일반적으로 말하는 Application 과 용어 구분하기 위함) 과 Deployment Group 은 단일 클러스터가 아닌 멀티 클러스터에 대한 CI/CD 를 위한 개념입니다. CI/CD란 결국 어플리케이션을 빌드하고, 자신이 원하는 환경에 빌드한 어플리케이션을 배포하는 과정을 지속적으로 수행할 수 있도록 자동화한 것입니다. 단일 클러스터를 대상으로 CI/CD 를 수행 할 경우 빌드 → 배포로 이어지는 프로세스가 한 번씩만 수행되어도 큰 문제가 없습니다. 하지만, 멀티 클러스터가 대상인 경우(배포 할 타겟 환경이 여러 곳인 경우) 빌드는 한번만 수행되고, 배포를 타겟만 바꿔가며 여러 번 실행할 수 있는 구성이 가능해야 합니다. ZCP v2 에서는 어플리케이션 빌드를 위한 ZCP Application과 원하는 클러스터에 배포를 하기 위한 Deployment Group 이란 개념을 만들어서 빌드와 배포의 과정을 분리했습니다.
Deployment Group 은 어플리케이션이 배포 될 대상 환경을 그룹핑 한 개념입니다. 배포 환경은 Kubernetes 클러스터를 대상으로 하며 AKS, EKS, IKS, Native Kubernetes 등 다양한 Kubernetes 를 서비스를 지원하며 특정 CSP(Azure, AWS, IBM 등)에 종속적이지 않습니다. Deployment Group 에는 하나 이상의 Kubernetes 클러스터와 하나의 Namespace 를 지정할 수 있습니다. Deployment Group 을 통해 배포를 수행하면 Deployment Group 에 지정 된 모든 클러스터의 Namespace 에 동일한 어플리케이션이 배포가 됩니다.
Deployment Group 에는 하나 이상의 ZCP Application 을 배포할 수 있으며, 각 ZCP Application 별로 배포 형태(Kubernetes deployment) 를 설정할 수 있습니다. 배포 수행 시 UI 를 통해 지정한 배포 형태는 Kubernetes Deployment yaml 로 만들어지며 자동으로 Git server 에 저장이 됩니다. 저장 된 yaml 파일들은 ArgoCD 를 통해 배포 대상 클러스터에 적용이 됩니다.
Deployment Groups 목록 조회 화면입니다.
등록되어 있는 Deployment Group의 목록이 조회됩니다.
(1) 페이징 기능: 우측의 페이징 기능을 통해 목록의 갯수를 10개, 20개, 30개, 50개, 100개 단위로 지정하여 화면에서 볼 수 있습니다.
(2) Deployment Group 목록: Deployment Group 목록입니다. Deployment Group 명, 설명, Namespace, Cluster 갯수, Application 갯수 정보가 표시됩니다.
(3) Deployment Group 명: Name 항목을 클릭하면 상세 화면으로 이동합니다.
(4) 기능 버튼: 각 Deployment Group에 대한 여러 동작을 수행합니다. 버튼을 클릭하여 상세 화면으로 이동하거나 삭제 기능을 수행합니다.
Deployment Group 생성
새로운 Deployment Group을 생성합니다.
Deployment Group 화면에서 좌측 상단의 Create Deployment Group 버튼을 클릭합니다.
Deployment Group 생성 화면입니다.
다음은 화면 내의 입력 항목에 대한 설명입니다.
Name : Deployment Group 명으로 필수 입력 값입니다. 동일한 realm과 project 내에서 고유한 값입니다.
Display Name : Deployment Group의 표시 명입니다.
Description : Deployment Group의 상세 설명입니다.
Namespace : Deployment Group이 배치될 kubernetes의 네임스페이스 명입니다. Namespace 는 모든 프로젝트에서 유니크해야 합니다.
각 항목에 대한 올바른 값을 입력하면 Save 버튼이 활성화됩니다. Save 버튼을 클릭하면 Deployment Group이 생성되고, 생성된 Deployment Group의 편집 화면으로 자동으로 이동합니다.
Deployment Group 편집
Deployment Group을 편집합니다. 편집 화면은 Overview, Basic Info, Clusters, Resources, Applications, Ingress 탭으로 구성되어 있습니다.
Dashboard 사용
Cluster 추가/편집
Deployment Group을 배포할 cluster 목록을 관리합니다.
화면 상단의 Clusters 탭을 클릭합니다.
목록의 항목에 대한 설명입니다.
Cluster Name: Cluster 명입니다.
Provider: Cloud platform provider입니다.
Type: Cluster의 타입입니다.
Status: Cluster의 가동 상태로 Ready/Stop/Unknown 값으로 표시됩니다.
Health: Cluster의 Health 상태로 green/yellow/red 색으로 표시됩니다.
CPU Request: Cluster 내 Deployment Group의 CPU Request 사용 백분율 값입니다.
CPU Limit: Cluster 내 Deployment Group의 CPU Limit 사용 백분율 값입니다.
Mem Request: Cluster 내 Deployment Group의 Mem Request 사용 백분율 값입니다.
Mem Limit: Cluster 내 Deployment Group의 Mem Limit 사용 백분율 값입니다.
Actions: 기능 버튼 모음으로 왼쪽부터 순서대로 다음과 같은 기능을 담당합니다.
Configuration: Cluster Configuration 설정
Delete: Cluster 삭제
Cluster 추가
Cluster를 추가하기 위해 화면 왼쪽 상단의 Add Cluster 버튼을 클릭합니다. Cluster 추가 팝업 화면이 열리고 추가할 수 있는 cluster 목록이 조회됩니다.
추가할 cluster의 체크 박스를 선택하고 Add Cluster 버튼을 클릭합니다. Cluster 추가 팝업 화면이 닫히고 목록에 추가한 cluster가 조회됩니다. Cluster 가 추가되면 Deployment Group 생성 시 설정한 namespace 가 해당 Cluster 에 자동으로 생성됩니다.
Cluster Configuration 설정
Cluster의 Actions 항목 내에 있는 Configuration 버튼을 클릭합니다.
Cluster Configuration 팝업 화면이 열립니다. Configuration 화면은 Resource Quota, Limit Range, Labels 탭으로 구성되어 있습니다. 기존에 저장된 Configuration이 있을 경우 조회가 완료된 상태로 팝업 화면이 열립니다.
Cluster의 Resource Quota를 설정합니다.
Resource Quota 탭을 클릭합니다.
설정할 항목에 값을 입력하고 화면 하단의 Save 버튼을 클릭하면 저장이 완료됩니다.
화면 하단의 Delete 버튼을 클릭하면 설정한 Resource Quota를 삭제할 수 있습니다.
Cluster의 Limit Range를 설정합니다.
Limit Range 탭을 클릭합니다.
설정할 항목에 값을 입력하고 화면 하단의 Save 버튼을 클릭하면 저장이 완료됩니다.
화면 하단의 Delete 버튼을 클릭하면 설정한 Limit Range를 삭제할 수 있습니다.
Cluster의 라벨을 설정합니다.
Labels 탭을 클릭합니다.
Labels 항목에 값을 입력하고 화면 하단의 Save 버튼을 클릭하면 저장이 완료됩니다.
화면 하단의 Delete 버튼을 클릭하면 설정한 라벨을 삭제할 수 있습니다.
Cluster 삭제
Deployment Group 에서 제거 할 cluster의 Actions 항목 내에 있는 Delete 버튼을 클릭합니다. 실제 Cluster가 삭제되는 것이 아니라 Deployment Group 의 멤버에서 빠지는 것입니다. Deployment Group 에 추가 될때 생성되었던 Namespace 가 삭제되고 그 안에 배포되었던 모든 리소스가 삭제되니 주의하시기 바랍니다.
Resource 추가/편집
Cluster에 배포될 kubernetes 리소스(Persistent Volume Claims, ConfigMaps, Secrets)를 관리합니다.
화면 상단의 Resources 탭을 클릭합니다. Resources 화면은 다음과 같이 구성되어 있습니다.
(1) Deploy 버튼과 cluster 별 리소스 메뉴: Clusters 탭에 등록된 cluster명이 메뉴 형태로 조회됩니다. 각 cluster명은 하위 메뉴로 Persistent Volume Claims, ConfigMaps, Secrets 메뉴를 가집니다.
(2) 리소스 편집: Cluster에 리소스를 생성하거나 편집합니다.
(3) 리소스 목록: Cluster에 등록되어 있는 리소스의 목록을 조회합니다.
Persistent Volume Claim 설정
Resources 화면의 왼쪽 메뉴에서 cluster를 선택하고 cluster의 하위 메뉴 중 Persistent Volume Claims 메뉴를 선택합니다.