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 메뉴를 선택합니다.
Persistent Volume Claim(이하 PVC)을 생성할 수 있는 화면과 cluster에 등록되어 있는 PVC 목록이 조회됩니다.
PVC 생성 화면입니다.
각 항목에 대한 올바른 값을 입력하면 Save 버튼이 활성화됩니다. Save 버튼을 클릭하면 PVC가 생성되고 화면 하단의 목록에 자동으로 추가됩니다.
목록의 항목에 대한 설명입니다.
Name: PVC 명입니다.
Bound: kubernetes에서 PVC의 Status 값입니다.
Volume: kubernetes에서 PVC의 VolumeName 값입니다.
Capacity: Storage Size입니다.
Access Mode: Access Mode입니다.
Storage Class: Storage Class 명입니다.
Age: kubernetes에서 PVC의 Age 값입니다.
Status: CREATED/DEPLOYED/UPDATED/UNKNOWN 중 하나의 값으로 표시됩니다.
Actions: 기능 버튼 모음으로 삭제 기능을 하는 Delete 버튼이 존재합니다.
PVC 목록에서 Actions 항목에 있는 Delete 버튼을 클릭하면 해당 PVC를 cluster에서 삭제할 수 있습니다. 추가 또는 삭제된 PVC는 cluster에 즉시 반영되지 않고 Deploy 기능을 통해 반영됩니다.
ConfigMap 설정
Resources 화면의 왼쪽 메뉴에서 cluster를 선택하고 cluster의 하위 메뉴 중 ConfigMaps 메뉴를 선택합니다.
ConfigMap을 생성할 수 있는 화면과 cluster에 등록되어 있는 ConfigMap 목록이 조회됩니다.
ConfigMap 생성 화면입니다.
각 항목에 대한 올바른 값을 입력하면 Save 버튼이 활성화됩니다. Save 버튼을 클릭하면 ConfigMap이 생성되고 화면 하단의 목록에 자동으로 추가됩니다.
목록의 항목에 대한 설명입니다.
Name: ConfigMap 명입니다.
Data: ConfigMap 내의 Data 갯수입니다.
Age: kubernetes에서 ConfigMap의 Age 값입니다.
Status: CREATED/DEPLOYED/UPDATED/UNKNOWN 중 하나의 값으로 표시됩니다.
Actions: 기능 버튼 모음으로 삭제 기능을 하는 Delete 버튼이 존재합니다.
ConfigMap 목록에서 Name 항목을 클릭하면 해당 ConfigMap의 내용이 입력 화면에 조회되고, 편집한 내용은 Save 버튼을 클릭하여 저장할 수 있습니다.
ConfigMap 목록에서 Actions 항목에 있는 Delete 버튼을 클릭하면 해당 ConfigMap을 cluster에서 삭제할 수 있습니다. 추가 또는 삭제된 ConfigMap은 cluster에 즉시 반영되지 않고 Deploy 기능을 통해 반영됩니다.
Secret 설정
Resources 화면의 왼쪽 메뉴에서 cluster를 선택하고 cluster의 하위 메뉴 중 Secrets 메뉴를 선택합니다.
Secret을 생성할 수 있는 화면과 cluster에 등록되어 있는 Secret 목록이 조회됩니다.
Secret 생성 화면입니다.
각 항목에 대한 올바른 값을 입력하면 Save 버튼이 활성화됩니다. Save 버튼을 클릭하면 Secret이 생성되고 화면 하단의 목록에 자동으로 추가됩니다.
목록의 항목에 대한 설명입니다.
Name: Secret 명입니다.
Type: Secret의 Type입니다.
Data: Secret 내의 Data 갯수입니다.
Age: kubernetes에서 Secret의 Age 값입니다.
Status: CREATED/DEPLOYED/UPDATED/UNKNOWN 중 하나의 값으로 표시됩니다.
Actions: 기능 버튼 모음으로 삭제 기능을 하는 Delete 버튼이 존재합니다.
Secret 목록에서 Name 항목을 클릭하면 해당 Secret의 내용이 입력 화면에 조회되고, 편집한 내용은 Save 버튼을 클릭하여 저장할 수 있습니다.
Secret 목록에서 Actions 항목에 있는 Delete 버튼을 클릭하면 해당 Secret을 cluster에서 삭제할 수 있습니다. 추가 또는 삭제된 Secret은 cluster에 즉시 반영되지 않고 Deploy 기능을 통해 반영됩니다.
Resource Deploy
생성/편집/삭제된 Persistant Volume Claims, ConfigMaps, Secrets 리소스를 cluster에 반영합니다.
Resources 화면의 왼쪽 메뉴에서 cluster를 선택 후 상단의 Deploy 버튼을 클릭합니다.
Application 추가/편집
Deployment Group에 포함할 Application 목록을 관리합니다.
화면 상단의 Applications 탭을 클릭합니다.
목록의 항목에 대한 설명입니다.
Name: Application 명입니다.
Description: Application 설명입니다.
Ref Pipelines: Deployment Group에 포함된 Application의 pipeline 목록입니다.
Source Repo.: Application의 source 레파지토리 주소입니다.
Image Registry: Application의 빌드 이미지 주소입니다.
Last Build Status: Application의 마지막 빌드 상태입니다.
Actions: 기능 버튼 모음으로 왼쪽부터 순서대로 다음과 같은 기능을 담당합니다.
Detail: Application 편집
History: Application Deploy History 조회
Configuration: Application Configuration 설정
Deploy: Application Deploy
Delete: Application 삭제
Application 추가
Application을 추가하기 위해 화면 왼쪽 상단의 Add Application 버튼을 클릭합니다.
Application 추가 팝업 화면이 조회됩니다.
화면 상단의 Choose Application 항목에서 추가할 Application을 선택합니다.
조회된 Application의 pipeline 목록에서 추가할 pipeline의 체크 박스를 선택하고, Auto Deploy 여부를 설정합니다. Auto Deploy 가 활성화 되면 해당 pipeline 의 빌드가 성공할때마다 자동으로 배포가 수행됩니다.
화면 상단의 Yaml Generation Policy를 선택합니다. Yaml Generation Policy 가 Always 인 경우 배포를 수행할때마다 Deployment, Service yaml 을 전체 재생성하며 Git server 에 저장 된 값을 모두 덮어씁니다. Image Only 로 설정하면 Deployment yaml 의 첫 번째 컨테이너의 이미지 경로만 변경해서 저장합니다.
화면 상단의 History Count에서 보관 할 배포 이력 개수를 지정합니다.
Application의 pipeline 선택이 완료되면 화면 하단의 Add Applications 버튼을 클릭합니다. Application 추가 팝업 화면이 닫히고 목록에 추가한 Application이 조회됩니다.
Application 편집
등록된 Application의 pipeline을 편집합니다.
Application의 Actions 항목에 있는 Detail 버튼을 클릭합니다. Application 편집 팝업 화면이 열리고 Application의 상세 내용이 조회됩니다.
화면의 상세 내용은 Application 추가 화면을 참고하시기 바랍니다.
Application Configuration 설정
Application의 Configuration을 설정합니다.
Application의 Actions 항목에 있는 Configuration 버튼을 클릭하면 Configuration 설정이 팝업 화면으로 조회됩니다. Configuration은 cluster 별로 설정하기 때문에 화면은 cluster 별 Deployment Spec과 Advanced(Health Check, Environments, Volumes, Tolerations, Affinities) 설정으로 구성되어 있습니다. 기존에 저장된 Configuration이 있을 경우 조회가 완료된 상태로 팝업 화면이 열립니다.
Application의 Deployment Spec을 설정합니다.
화면 상단의 탭에서 cluster를 선택합니다.
Deployment Spec의 화면에서 값을 입력하고 화면 하단의 Save 버튼을 클릭하면 저장이 완료됩니다.
Application의 Advanced 항목을 설정합니다. 다음은 Environments 항목의 예시입니다.
Advanced 탭에서 Environments 혹은 Env References를 선택합니다.
Environments 탭에서는 ConfigMap, Secret에서 훤하는 값을 환경변수로 지정할 수 있습니다.Env References 탭에서는 ConfigMap, Secret을 통째로 envFrom으로 설정할 수 있습니다.
값을 입력하고 화면 하단의 Save 버튼을 클릭하면 저장이 완료됩니다.
Application Deploy
Application을 cluster에 디플로이합니다.
Application의 Actions 항목에 있는 Deploy 버튼을 클릭합니다. Application의 빌드 이력이 팝업 화면으로 조회됩니다.
디플로이할 pipeline의 Build No를 선택 후 화면 하단의 Deploy 버튼을 클릭합니다.
Deploy 결과는 Application Deploy History 조회 화면에서 확인할 수 있습니다.
디플로이할 Application의 Configuration이 설정되지 않았을 경우 다음과 같은 에러 메세지를 출력합니다.
Application Deploy History 조회
Application의 디플로이 이력을 조회합니다.
Application의 Actions 항목에 있는 History 버튼을 클릭합니다. Deploy History 목록이 화면의 우측에서 열립니다.
Application 배포 History Count에 지정한 갯수만큼의 Deploy History 목록을 확인할 수 있습니다.
History 화면의 목록에서 Deploy Log 버튼을 클릭하면 cluster 별 디플로이 결과를 조회할 수 있습니다.
Application 삭제
Deployment Group에 포함된 Application을 삭제합니다.
Application의 Actions 항목에 있는 Delete 버튼을 클릭합니다. 이 때 Cluster 에 실제 배포된 Deployment, Service 도 같이 삭제됩니다.
Ingress 설정
Cluster에 배포될 Ingress를 관리합니다.
화면 상단의 Ingress 탭을 클릭합니다. Ingress 화면은 다음과 같이 구성되어 있습니다.
(1) Deploy 버튼과 cluster 목록: Clusters 탭에 등록된 cluster명이 리스트 형태로 조회됩니다.
(2) Ingress 편집: Cluster에 Ingress를 생성하거나 편집합니다.
(3) Ingress 목록: Cluster에 등록되어 있는 Ingress의 목록을 조회합니다.
Ingress 설정
Ingress 화면의 왼쪽 메뉴에서 cluster를 선택합니다.
Ingress을 생성할 수 있는 화면과 cluster에 등록되어 있는 Ingress 목록이 조회됩니다.
Ingress 생성 화면입니다.
각 항목에 대한 올바른 값을 입력하면 Save 버튼이 활성화됩니다. Save 버튼을 클릭하면 Ingress가 생성되고 화면 하단의 목록에 자동으로 추가됩니다.
목록의 항목에 대한 설명입니다.
Name: Secret 명입니다.
Domain: Secret의 Domain입니다.
Tls Secret: Secret의 Tls Secret입니다.
Age: kubernetes에서 Ingress의 Age 값입니다.
Status: CREATED/DEPLOYED/UPDATED/UNKNOWN 중 하나의 값으로 표시됩니다.
Actions: 기능 버튼 모음으로 삭제 기능을 하는 Delete 버튼이 존재합니다.
Ingress 목록에서 Name 항목을 클릭하면 해당 Ingress의 내용이 입력 화면에 조회되고, 편집한 내용은 Save 버튼을 클릭하여 저장할 수 있습니다.
Ingress 목록에서 Actions 항목에 있는 Delete 버튼을 클릭하면 해당 Ingress를 cluster에서 삭제할 수 있습니다. 추가 또는 삭제된 Ingress는 cluster에 즉시 반영되지 않고 Deploy 기능을 통해 반영됩니다.
Ingress Deploy
생성/편집/삭제된 Ingress를 cluster에 반영합니다.
Resources 화면의 왼쪽 메뉴에서 cluster를 선택 후 상단의 Deploy 버튼을 클릭합니다.