4. 주요 기능

본 장에서는 BXCP ADM 메뉴를 기준으로 보다 상세한 사용법을 위주로 설명한다. BXCP ADM은 메뉴, 역할, 권한 설정에 의해서 사용자가 이용할 수 있는 메뉴가 각각 다르기 때문에 각각에 절에서 언급하는 메뉴와 다를 수 있으니 이를 감안한다.

여기서 설명하는 BXCP ADM 메뉴의 구성은 Administrator 및 Developer Workbench 두 가지로 설정된 상태이며 본 절에 내용에서는 Administrator Workbench를 선택한 상태의 메뉴는 (Administrator)로 시작하도록 표기하고, Developer Workbench를 선택한 상태의 메뉴는 (Developer)로 시작하도록 표기를 하였다.

언급하는 순서는 Administrator, Developer 순서로 메뉴를 설명하며 경우에 따라서는 3rd Party 오픈소스 솔루션, 컨테이너 레지스트리, 쉘스크립트 커맨드라인, 쿠버네티스 공식 문서 등 다양한 내용을 포함한다.

4.1 Administrator - 대시보드

(Administrator) [대시보드] 메뉴를 클릭하면 다른 일반적인 메뉴와는 다르게 모니터링을 위한 다양한 대시보드를 선택할 수 있는 팝업 화면이 나타나게 된다. 아래 그림은 [대시보드] 메뉴를 클릭하여 나온 팝업 화면의 예시이다.

[그림 4.1] 대시보드 팝업

대시보드 팝업


참고

대시보드 화면은 3rd Party 오픈소스와 연계되는 화면으로 Grafana, Prometheus에 대한 기반 지식을 요구한다.

팝업 화면이 나타나면 알 수 있듯이 클러스터를 기준으로 사전 정의된 대시보드에 간략한 설명과 함께 선택할 수 있는 대시보드 정보가 보인다. 현재 제공하는 대시보드는 3가지 종류의 대시보드를 제공하고 있으며 원하는 대시보드가 없을 때에는 사용자가 직접 Grafana 대시보드를 만들거나 https://grafana.com/grafana/dashboards/ 링크로 이동해서 대시보드를 검색하고 가져올 수 있다.

위에서 언급한 가져오고 싶은 대시보드를 찾았고 그것을 Grafana에 import 처리를 완료했다면 4.2.3절. “컴포넌트 설정” 내용에 나오는 설명을 보고 새로운 대시보드를 추가할 수 있다.

대시보드 팝업 화면에서 특정 대시보드를 선택하면 6.1.8절. “bxcr.common.dashboard.popup” 기준에 의해서 메뉴 우측의 화면에서 대시보드를 열거나 브라우저 새 탭에서 대시보드를 열어주는 처리를 조작할 수 있으며 아래 그림은 설정 값에 따라서 대시보드가 열리는 유형을 보여준다.

[그림 4.2] K8s Cluster Summary - 팝업(새탭) 스타일

K8s Cluster Summary - 팝업(새탭) 스타일


[그림 4.3] K8s Cluster Summary - 내장 화면 스타일

K8s Cluster Summary - 내장 화면 스타일


4.1.1 K8s Cluster Summary

전체적인 클러스터의 메트릭 현황을 제공하는 대시보드이다.

[그림 4.4] K8s Cluster Summary

K8s Cluster Summary


4.1.2 Node Export Info

프로메테우스의 Node Exporter에서 제공하는 하드웨어의 상태와 커널과 관련한 메트릭 정보를 제공하는 대시보드이다.

[그림 4.5] Node Export Info

Node Export Info


4.1.3 K8s All in One

클러스터 기준에 각각의 노드의 메트릭 정보를 제공하는 대시보드이다.

[그림 4.6] K8s All in One

K8s All in One


4.2 클러스터

(Administrator) [클러스터] 메뉴를 사용해서 화면으로 진입하면 BXCP ADM에서 관리하는 클러스터의 목록을 보여주는 화면에(아래 그림) 진입할 수 있다.

[그림 4.7] 클러스터

클러스터


아래 그림은 BXCP ADM에서 관리하는 클러스터 목록을 확대해서 보여주고 있는데, "BXCP ADM에서 클러스터는 쿠버네티스의 클러스터와 정확히 일치하는 단위"로 보면 된다.

[그림 4.8] 클러스터 - 목록

클러스터 - 목록


클러스터 목록을 보여주는 화면에서는 시스템 구분, 상태, 클라우드 프로바이더 유형, 쿠버네티스 클러스터 버전 정도가 주요 정보이다.

선택할 수 있는 시스템 구분은 총 3개가 있는데 Development(CI/CD 파이프라인), Staging, Production이 있으며 여기서 Development와 Staging, Production은 애플리케이션 릴리즈(배포) 처리에 관여하는 값이다.

참고

클러스터 정보에는 시스템 구분 항목이 있는데 워크스페이스 단위에도 이 시스템 구분 항목이 있다.

위에 그림처럼 호스트 역할의 클러스터가 있는 상태에서 새로운 쿠버네티스 클러스터를 BXCP ADM에서 추가하면 kubefed를 통한 클러스터 Join 처리가 자동으로 이루어진다.

[그림 4.9] kubefedctl 클러스터 Join 예시

$ kubefedctl join new-member --cluster-context new-member-context


클러스터에 상태가 Ready가 아니면 이후에 살펴 볼 애플리케이션의 가용 클러스터를 선택하는 곳에서도 선택하지 않아야 한다. 만약에 상태가 올바르지 않은 클러스터를 가용 클러스터로 선택했다면 릴리즈(배포) 처리가 이루어지는 과정에서 오류가 발생한다. 아래 그림은 올바르지 않은 상태에 클러스터를 가용 클러스터 설정 탭 화면에서 선택하고 저장 시 발생하는 오류의 예시이다.

[그림 4.10] 애플리케이션 스펙 유효성 검증 오류

애플리케이션 스펙 유효성 검증 오류


4.2.1 기본 설정

[클러스터 조회/변경] > [기본 설정]에서는 시스템 구분 항목의 값이 주요한 정보로 주로 애플리케이션 배포 프로세스에 관여한다. 설정에 따라서 미세하게 다른 동작을 하겠지만 일반적으로 Development 시스템 구분은 Gitlab에 웹훅을 통하여 젠킨스의 CI/CD 파이프라인이 실행되어서 BXCP ADM에서 제공하는 배포 REST API가 호출이 되며, Staging(또는 Production) 시스템 구분은 BXCP ADM의 배포 REST API 호출을 BXCP ADM에서 자체적으로 호출이 이루어진다.

[그림 4.11] 클러스터 조회/변경 - 기본 설정

클러스터 조회/변경 - 기본 설정


4.2.2 KUBECONFIG 설정

아래 그림은 [클러스터 조회/변경] > [KUBECONFIG 설정] 탭 화면으로 쿠버네티스 클러스터에 연결을 하기 위한 환경설정을 지정하는 화면이다. 관리자 권한으로 쿠버네티스 연결이 필요한 다른 사용자가 쿠버네티스 설정이 필요하면 이 화면에서 제공하는 값을 사용해서 kubectl 커맨드를 사용할 수 있다.

참고

일반적으로 kubectl 커맨드가 읽는 설정의 위치는 $HOME/.kube/config 이다. 또는 KUBECONFIG 환경변수를 사용해서 사용자 정의 설정 파일 위치를 지정할 수 있다. 구체적인 내용은 https://kubernetes.io/ko/docs/tasks/access-application-cluster/configure-access-multiple-clusters/ 링크를 참고한다.

[그림 4.12] 클러스터 조회/변경 - KUBECONFIG 설정

클러스터 조회/변경 - KUBECONFIG 설정


쿠버네티스 클러스터와 상호작용 하는 BXCP ADM에서 쿠버네티스 연결 설정이 필요하기 때문에 관리자는 다음과 같이 해당 클러스터에 kubectl 커맨드를 사용하는 환경에서 연결 설정을 확인하여 입력한다.

$ kubectl config view --raw=true
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvakNDQWVhZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXS
	mwKY201bGRHVnpNQjRYRFRJeU1URXdPREF4TWpnMU5sb1hEVE15TVRFd05UQXhNamcxTmxvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSX
	dEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBSzcrCnJQaHhiUkZ2NnRMaXlGSUFpS0FpM1RIQ0RsTGxLUy9pajM3dnVxNHpRSkM2TzR2V0d
	henRZQ1JETlI0SU00RHgKQ05qMnhZaXNkazB0MUNwQnh0MSttSzVWWkZUbHJSMStNTXJWY3VPcUNsZWxBNHg3S29JbDRhc1R4WXQ0bHdvOQpXSDM0c3pjSE10
	VXhZUzhycXIvRThpL3FPWlRYdFRCNEV0RGNzU0pQZHFHVjdFamVnQXRRbDFJMmt6bWprTVVFClV1UmsxeEVUd2tKODh4bnFuWGZpNWxHMWR3aTFiaHJqdStTK
	2lPLzZoVWJPaUVDRE04cnV0NlFSa0RmSFEyM3UKSHVES3JpT0JaMDZIOEJsUGF2NDM0SGRLUlBuK0thcU50aHhabkxWNmVPVHhPQzZPZ1MzcFlkNFR5ak5ENT
	B2QwpaeGpnNjVpRUIvMEF3VFhaWHdFQ0F3RUFBYU5aTUZjd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJ
	ZRUZQNEMybnllcVFsbThmc25jOWdHWkwrQlJqRi9NQlVHQTFVZEVRUU8KTUF5Q0NtdDFZbVZ5Ym1WMFpYTXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBRlFD
	enBpakllSEtGZ3dBdFRRSQp3WTdSRTU2K1o1RTNxbnBQRlRFWnhwNWxJd3g4bUIzNElNU1dqZzY4SVFoT0wwQ3ZtUDFENDdQbGNlZjB0allaCllGbUVKMjA1c
	lBpcWZQbU40SXNIYzBDY2VzL3NueUVrTU0xQWtmZS8zQUN1VktBc0hkS2pjTjBzQ0s3Uk5GcEEKK1doa2hvK0puTnF6S1JxalhaRkNVdTV5cUprU1NqNGFRel
	VwMmx1ZUNXRk1DMEVLZkxiMGlzOFZVWW5yRy9SZApNY2psZ0o3TXRIVzRHdjVXaWxsYzZTaHlsSGFmWXRzTWpBeE9rSnY4RFI3K1NwNzJoMm5oV2lXV2ZxbHp
	XOUYyCjRZSjcyeUY3QmdqcytXNU5hc2pBVGgxYVhHcmh1RHhtcHgyUGZjUzY1UEp3VTcvSHVlQ1dvUVo4V0xvRDNrNkoKc2w4PQotLS0tLUVORCBDRVJUSUZJ
	Q0FURS0tLS0tCg==
    server: https://tf-k8s-lb-host-host-eb247e47fda94245.elb.ap-northeast-2.amazonaws.com:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURJVENDQWdtZ0F3SUJBZ0lJQU9JaEg5R1hQUWN3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExV
	UUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TWpFeE1EZ3dNVEk0TlRaYUZ3MHlNekV4TURnd01USTROVGhhTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcH
	RZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXp
	vOEhETWlEWjRSWnAvR2oKcjVBcXEzbnB1cXF5aHl5M1F6clVYTkQyRnBBSXBwVm5KV0Q2VjJnT0wybVI4MDlNQ29IMERQSHhkcDJ0b2pUNQpzYXpCbFFzeHAv
	U2NQQ2xuRWN5SHpIaW1jVDdEelczVW5TbExrclpsRGU1RHpWWVlRbzA2MVZtbnJoTmo1V1FpCjJmYWtkZDRNNm9uakh1NENheDFTVkl2QUdtdkFwcVFRV0lwT
	nNMOEwxTkJlWDdITm13RlRNQ1k2QW9MR2FiQ2MKRDNVcXpKYlp3c0RIUnRrSStaNmFUTUpvMzdtSDdIUWdGRnlSRklwcG82ZThvQkJGK2xNemtiR2FSODZOaW
	VXUQpjY0hZYmtyUTZ4c3A3Q0dkY1N2eHlKS3lKcnNiNHZla0pIQmxVS3RjL0tzaG9Cc1BRckZUNDA5My8xSDVKSmdPClpTeUNad0lEQVFBQm8xWXdWREFPQmd
	OVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RBWURWUjBUQVFIL0JBSXdBREFmQmdOVkhTTUVHREFXZ0JUK0F0cDhucWtK
	WnZIN0ozUFlCbVMvZ1VZeApmekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBRlltNm92eEhiTHpmdHdBNTF0THhYVVBURkZiTXFyVnIvZDZBCkF4S3pqU2g4d
	zRVTCt6WUNnNHQ2V0R6eU9ydVVFTHppYm9IRFBxQzN0SnY0c29DODE4RFJZZ3F5Wk5JVDRjUlcKcmhibDFNNXQ2WEN4cEMxRmlUVTRyRDVyczUzRTFxcFYxaV
	NJQzBVdjdkUjBzemlHK3YxL0FvRzNxcWdHNktGawozWE9Mb01zNUg2NGlxSlJiTGVvRmRMRk9wSHMvc3F0OWN0WkJsWEZWdmVoUnVEampBTkdZci9DU1R1U0F
	SRE5tClZFSklXYXFoeUhRVllib01iMmVvU25MMFZlOGVDVFFRRTBzcloxVm9zQ3BWK3FqNVBocmlIdGcwWkdpK2pzdS8KSUNPanR3NG1mbDYvYlRsZHJ4VVFa
	M0xnSkFZQTJRWVo5RjBDNU4wdTI1c2lLcVNWbkE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBem84SERNaURaNFJacC9HanI1QXFxM25wdXFxeWh5eTNRenJVWE5EMkZwQ
	UlwcFZuCkpXRDZWMmdPTDJtUjgwOU1Db0gwRFBIeGRwMnRvalQ1c2F6QmxRc3hwL1NjUENsbkVjeUh6SGltY1Q3RHpXM1UKblNsTGtyWmxEZTVEelZZWVFvMD
	YxVm1ucmhOajVXUWkyZmFrZGQ0TTZvbmpIdTRDYXgxU1ZJdkFHbXZBcHFRUQpXSXBOc0w4TDFOQmVYN0hObXdGVE1DWTZBb0xHYWJDY0QzVXF6SmJad3NESFJ
	0a0krWjZhVE1KbzM3bUg3SFFnCkZGeVJGSXBwbzZlOG9CQkYrbE16a2JHYVI4Nk5pZVdRY2NIWWJrclE2eHNwN0NHZGNTdnh5Skt5SnJzYjR2ZWsKSkhCbFVL
	dGMvS3Nob0JzUFFyRlQ0MDkzLzFINUpKZ09aU3lDWndJREFRQUJBb0lCQVFDd1RzN2lyMmZSL05zVwpDYUFBbzVwNFFSZ3FkN2Jvd0Zjd3NFOUJaaThXOVJ3Z
	ExGc2RRWmlNOE1saTJNWjJHcEk2U2RBSkdKNVU4Nk9ZClY0VmxqYUt5V0JxclZKUGltaWhhdmV5UHI4L0p5NXdQaFphOEN0cHh3UE9pbjJRS0tWbU52TVNpQk
	9PbUp2RFcKaE5GbW9DcWlYTVZEa0N4bll4cDNXVkREejRGS1NuTzZDOVY1VXo4bnpaNHI5dzBXK1ZJMTQ4amZyeWJjU1BFdQoxdzRlV3lFdWpPUExWMHRDWG5
	jMnc5cHdBNVk4clhBRVZvbThveDY2R3BQZXJja1RjZVdkT2RCQWhiZWlZcjVpCk52VkV5akFXZFVIM0dka04ybnFCTnRpOE9Tdis2ZjRSemg2YnAraW1rSFZS
	OTJPbUJDK0d2UzhhVzg2TlpGMEgKRm9VbmYxMWhBb0dCQU5sdk56WGhZVy9iSGlaWTcxQzg0TXFQZHdqaUpoQXdsc1F5eHR1VUgzTmV1ZmhHR3ZnbgpvejUwc
	1RpMzkxd1ZnM2FvbmlMS0xDNHlsOU42U1lSMnFwdEYzWWpiOG1IRG40cTlZdW9iUmZCaDNSM2M1UUxYCloraFloWGVkMTFmQmpFRmRoRE52MUltNUpGN2FhOV
	BjYTJyVEZpYkdvazBRalJNb21mQUoyZnl4QW9HQkFQTXgKL1kxNG5jQWlJaWx6TzdZMmNNWU40MDZodjdjL1c4eVVkb3AxdkpzR1dta0dob1dmSmt3WmJueEd
	xMG5iT1NUcApuU3NXK1pyY092THR6R2I1Q0tIMFNoeGxTekxsWW9yYkdBUmhORmRPcnlyc2d2MXNXUHFMZGpYRFVJR3U4TzRqCkFKUmNncStrZHQ3YlM3K3hQ
	bkUza3VsMDEybTVpV09zYVMvdlJWYVhBb0dBTXlqVDJMMmE2M0ttK1diYmlDZW8KeklCTkJhNFFQcWJ3RW1IUUlFSU4xRnRwYmwwd1kwc1FRZFc3RFJsYi9qS
	2hwLzJzbDRyeU1qeDlOS2tGTzBHZwppc0E1aThZVWxhUXRtYnROMXI5c0NVODljNVZSM1FWSjBZVmlnZTZGaUlSbHQ4dUZHNFVvZ084cSs1Wnc0SHh3CldjWW
	81QjdBZVZsM21CWnBnZTBQZVVFQ2dZQnF0alBRNE8wdmdvckU3Mmh6SXQ1SE9ZN1ZVUXBEeVV4cHIzZDQKZUFNamJ4MDYybjhxb05QNExteVpvWlRGbXFrdmR
	rYmR3bjRTSXJMSEorczUvK3AyemkrNjJBT3dPSkVONXVkWgovS0V2OGpuUXR1a2ZkR3h5dThGS0JBTU9kSW9KcEZnN3dZQWl2Q0xnMVE4ZTlSSTJNYkdJT1Ju
	UXJYWUl3MzJBCmFCaGZ6d0tCZ0VEQ0t1cDJJa0JmUDdMdXVHMXBZYkM4YjZKR0dUVGludzJoOUFkTEVhb3R5QUp4L1RzQUtSVkEKcUkxUGNVbHJPYm5odmpwQ
	mlIbmJaWUdzdi9URDdtZVdaRjhWUU05WThZNTBCNnVWVkFEc3cydy9LL3JsajVxcwo4NHIrWEFCdGpGMXNEZ0hvOFN0VGh0WTc3aGtQSVI4MFplZVFjRS9KQl
	RrN3BKK1B6T3FNCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==

참고

위에 쿠버네티스 설정 정보는 임의로 생성한 예시이며 아래 그림에 있는 형태처럼 certificate-authority-data, client-certificate-data, client-key-data 속성에 값은 실제로는 줄 바꿈 되지 않은 상태의 한 줄로 이루어진 데이터이다.

경고

화면에서 설정 값을 변경 할 수 있기 때문에 수정을 완료하면 [저장] 버튼을 누르기 전에 반드시 [설정 정보 검증] 버튼으로 올바르게 수정하였는지 검증한다. 아래 2개 그림은 설정 검증의 성공과 실패의 예시를 보여준다.

[그림 4.13] 클러스터 조회/변경 - KUBECONFIG 설정 - 검증 성공

클러스터 조회/변경 - KUBECONFIG 설정 - 검증 성공


[그림 4.14] 클러스터 조회/변경 - KUBECONFIG 설정 - 검증 실패

클러스터 조회/변경 - KUBECONFIG 설정 - 검증 실패


4.2.3 컴포넌트 설정

아래 그림은 [클러스터 조회/변경] > [컴포넌트 설정] 탭 화면으로 이 화면에서는 BXCP ADM과 연동하여 동작하는 3rd Party 컴포넌트의 주소나 값을 설정하는 화면이다.

컴포넌트 설정에서는 연동하는 다른 시스템에 문제가 있거나 혹은 컴포넌트를 호스팅하는 서버를 변경하는 등의 다양한 상황에서 연결 정보를 조정하는 기능이 제공된다. 이 화면에 설정에 오타나 해당 3rd Party 컴포넌트에 문제가 있으면 BXCP ADM에서 일부 기능에 문제가 발생할 수 있다.

[그림 4.15] 클러스터 조회/변경 - 컴포넌트 설정

클러스터 조회/변경 - 컴포넌트 설정


위 그림에 나온 번호를 보면 해당 설정이 어떤 메뉴에 영향이 있는지 표시한 것이다.

1. Grafana URL

[대시보드] 메뉴를 클릭하면 보이는 사전 정의된 Grafana 대시보드에 연결하는 Base URL 정보이며 아래 그림과 같이 보인다.

[그림 4.16] 대시보드 선택 팝업

대시보드 선택 팝업


참고

Grafana URL 정보를 추가해서 위 그림처럼 보이지 않으며, 하단에서 언급할 [클러스터 조회/변경] > [DASHBOARD 설정] 탭 화면에서 추가 설정이 필요하다.

2. Jaeger, Kiali, Kibana URL

[모니터링] 메뉴를 클릭하면 보이는 사전 정의된 모니터링에 관련된 오픈소스 컴포넌트에 연결하는 Base URL 정보이며 아래 그림이 메뉴 클릭 시 보이는 팝업이다.

[그림 4.17] 모니터링 선택 팝업

모니터링 선택 팝업


4.2.4 컨테이너 레지스터 재정의

아래 그림은 [클러스터 조회/변경] > [컨테이너 레지스터 재정의] 탭 화면으로 컨테이너 이미지 저장소 주소를 재정의 할 수 있는 화면이며, 현재 BXCP ADM에서는 Harbor Registry를 사용하고 있다.

클러스터를 기준으로 재정의 값을 설정하면 클러스터가 포함하는 모든 프로젝트는 이 정보를 사용하게 된다. 의존성이 강한 정보이기 때문에 유의한다.

[그림 4.18] 클러스터 조회/변경 - 컨테이너 레지스터 재정의

클러스터 조회/변경 - 컨테이너 레지스터 재정의


참고

특정 클러스터에서 애플리케이션의 컨테이너 이미지를 이관하기 위해 사용하는 이미지 저장소 주소 및 인증 정보이다.

4.2.5 DASHBOARD 설정

아래 그림은 [클러스터 조회/변경] > [DASHBOARD 설정] 탭 화면으로 이 화면에서는 클러스터를 기준으로 사용할 Grafana 대시보드를 설정하는 역할을 한다.

[그림 4.19] 클러스터 조회/변경 - DASHBOARD 설정

클러스터 조회/변경 - DASHBOARD 설정


경고

위에 그림에서 보이는 값들은 단순 정보성 값이다. [수정] 버튼을() 클릭하면 팝업이 열리는데 이 팝업 화면에서 중요한 정보를 제공한다.

참고

Grafana에서 모니터링 할 대시보드를 구성해서 저장된 상태여야 한다.

아래 그림은 설정된 대시보드의 상세 정보를 볼 수 있는데 이 팝업에서 중요한 설정은 대시보드 URL 항목에 값이다.

[그림 4.20] 설정된 대시보드 목록

설정된 대시보드 목록


위 그림을 기준으로 대시보드 URL 값을 보면 중간에 잘린 형태의(URI에서 Path 부분을 의미) URL 값이 설정된 것을 알 수 있다. 위에서 "Grafana에서 모니터링 할 대시보드를 구성해서 저장된 상태여야 한다."라고 언급한대로 대시보드 URL 값 설정을 위해서는 아래 그림처럼 브라우저에서 Grafana로 접속하여 원하는 대시보드로 이동해야 한다.

[그림 4.21] 설정된 Grafana 대시보드 접속

설정된 Grafana 대시보드 접속


참고

위에 그림에는 일부 패널이 오류가 발생했다고 표시가 되어 있는데 아래 그림은 오류가 발생한 패널을 확대한 그림이다. 이렇게 오류가 발생한 패널은 사용자가(관리자) 확인하고 올바르게 동작하도록 패널에 설정을 수정해야 한다.

[그림 4.22] PromQL 오류

PromQL 오류


설정하고 싶은 Grafana 대시보드에 접속을 했다면 아래 그림처럼 HTTP 주소창에서 URL 경로 기준으로 grafana(빨간 화살표) 다음에 나오는 URL 경로를('/'부터) 복사해서 대시보드 URL 항목에 값으로 설정한다.

[그림 4.23] 설정된 Grafana 대시보드 접속 URL

설정된 Grafana 대시보드 접속 URL


4.3 워크스페이스

(Administrator) [워크스페이스] 메뉴를 사용해서 화면으로 진입하면 선택한 BXCP ADM에서 관리하는 논리적 단위인 워크스페이스의 목록을 보여주는 화면에 진입할 수 있다.

[그림 4.24] 워크스페이스

워크스페이스


아래 그림은 BXCP ADM에서 관리하는 워크스페이스 목록을 보여주고 있는데, 쿠버네티스에서 관리하는 단위는 아니기 때문에 쿠버네티스에서는 워크스페이스 정보를 조회하는 방법은 없다.

[그림 4.25] 워크스페이스 - 목록

워크스페이스 - 목록


이 워크스페이스의 핵심은 복수의 클러스터, 프로젝트, 사용자 정보를 1개 워크스페이스로 묶어서 논리적 작업 공간으로써 관리하는 것이다.

그렇기 때문에 위 그림에 조회된 예시에 워크스페이스마다 1개 또는 2개 클러스터가 연결된 것을 볼 수 있다.(물론 설정하기에 따라서 그 이상에 클러스터를 연결할 수 있다) 그리고 이 워크스페이스는 1개 이상의 프로젝트 정보가 연결이 된다.

여러 클러스터를 1개 논리적 단위로 묶어주는 단위이기 때문에 파편화된 쿠버네티스 클러스터에 동일한 애플리케이션을 배포하거나 컴퓨팅 파워가 한정된 환경에서 효율적으로 리소스를 사용할 수 있게 도움을 준다. 예를 들면 사내 소규모 프로젝트가 만들어지는 경우나, 일정한 스펙을 가지지 않는 여러 대의 서버에서 효율적으로 리소스를 이용하고 싶은 경우가 있다.

4.3.1 사용자 설정

현재 워크스페이스를 기준으로 BXCP ADM 사용자를 조회하여 이용자를 검색할 수 있다. 아래는 필터를 따로 사용하지 않고 조회한 워크스페이스에 속한 모든 사용자 정보 예시이다.

[그림 4.26] 사용자 설정 - 필터

사용자 설정 - 필터


특정 사용자가 해당 워크스페이스에 속하는지 아래 그림처럼 필터를 통해 조건에 맞는 사용자를 조회할 수 있다. 필터는 사용자 ID, 사용자 명, 부서, 역할을 선택할 수 있다.

참고

하단에 페이지 개수 필터링 컨트롤러를 조정하여 한 번에 조회 할 사용자 데이터 개수를 변경할 수 있다.

[그림 4.27] 워크스페이스 조회/변경 - 사용자 설정 - 필터(부서)

워크스페이스 조회/변경 - 사용자 설정 - 필터(부서)


아래 그림처럼 [변경] 버튼을 눌러서 사용자 검색 팝업 화면에서 워크스페이스에 사용자를 추가하거나, 제외시키는 처리가 가능하다.

[그림 4.28] 워크스페이스 조회/변경 - 사용자 설정 - 변경

워크스페이스 조회/변경 - 사용자 설정 - 변경


참고

체크박스를 사용해서 해당 사용자를 워크스페이스에서 추가() 또는 제외() 처리를 할 수 있다.

경고

마지막에 [저장] 버튼까지 클릭해야 추가한(또는 제외) 사용자 정보를 워크스페이스에 반영한다.

4.3.2 릴리즈 시스템 재정의

아래 그림은 릴리즈 시스템 재정의 탭 화면인데 이 화면에서는 릴리즈 처리 과정에서 사용하는 중요한 설정을 할 수 있는 화면이다.

[그림 4.29] 워크스페이스 조회/변경 - 릴리즈 시스템 재정의

워크스페이스 조회/변경 - 릴리즈 시스템 재정의


BXCP ADM에서 배포는 크게 두 가지 방식이 있는데 결과적으로는 모두 BXCP ADM의 배포 REST API를 호출하게 된다. 릴리즈 시스템 재정의 탭 화면에서는 릴리즈 이관 처리 과정에 관련된 값의 재정의를 할 수 있다.

아래 그림은 릴리즈 포탈에 대한 정보를 재정의 할 수 있는 항목이다. 이 릴리즈 포탈 정보는(릴리즈 Portal URL, 릴리즈 Portal Token) 이관 처리 시 사용하는 정보로 가져올 애플리케이션 정보가 같은(같은 URL 주소) BXCP ADM 환경에 있지 않고 원격지에서(다른 서버 주소) 가져올 때 이 정보를 재정의 해서 이용하게 된다.

참고

이관이란? 릴리즈 참조 프로젝트 ID 정보가 지정된 프로젝트에서 새로운 애플리케이션을 생성 시 릴리즈 참조 프로젝트에서 조회하여 가져오게 되는데 이러한 처리를 BXCP ADM에서는 이관이라 칭한다. 또는 릴리즈 등록 처리를 완료한 상태에서 다른 워크스페이스에서 등록한 릴리즈를 가져오는 행위인 릴리즈 이관도 이관이라 칭한다.

[그림 4.30] 워크스페이스 조회/변경 - 릴리즈 포탈 정보

워크스페이스 조회/변경 - 릴리즈 포탈 정보


참고

위에 그림에서는 같은 BXCP ADM 환경에서 이관을 위해 접속하는 URL 정보로 설정이 되어있다. 같은 환경이기 때문에 토큰은 설정되지 않았다.

그리고 아래 그림은 온라인 애플리케이션을 생성 시 이관을 통해만 생성이 가능한 워크스페이스 환경에서(Staging 또는 Production 시스템 구분으로 설정된 상태) [온라인 애플리케이션] > [Create Application] 클릭하여서 조회된 이관할 수 있는 애플리케이션 목록 팝업이다. 예를 들어 아래 그림에 빨간 표시한 ratings 행을 클릭하면 이관이 진행된다.

[그림 4.31] Create Application - 이관 대상 애플리케이션 조회

Create Application - 이관 대상 애플리케이션 조회


참고

만약 Development 시스템 구분을 가지는 워크스페이스에서는 위와 같은 팝업이 아니고 스펙을 저장하기 위한 팝업이 나오게 된다.

아래 그림에 표시된 항목은 릴리즈 Harbor 관련 정보를 표시하고 있다. 설정할 속성에 이름을 보면 Harbor를 포함하기 때문에 컨테이너 이미지 처리에 대한 설정임을 알 수 있다. 즉 이 릴리즈 Harbor 정보는 [릴리즈] > [릴리즈 조회] > [릴리즈 이관] 버튼을 클릭하여 "배포를 위한 컨테이너 이미지를 가져올 때 이용하게 된다."

[그림 4.32] 워크스페이스 조회/변경 - 릴리즈 Harbor 정보

워크스페이스 조회/변경 - 릴리즈 Harbor 정보


참고

릴리즈 이관이란? 위에서 설명한 이관 처리와 유사하게 동작하는 릴리즈 이관은 이관 처리의 대상이 컨테이너 이미지를 대상으로 한다. 즉 BXCP ADM에서 이관 처리는 애플리케이션 이관과 릴리즈 이관 두 가지의 방식이 있다.

릴리즈 Harbor URL 속성의 값은 컨테이너 이미지를 가져올 Harbor Registry 서버 URL을 여기서 설정할 수 있다. 그리고 그 아래에 ID, Password 정보는 컨테이너 이미지를 pull 처리 시 인증을 요구할 때 이용하는 값이다.

릴리즈 Harbor 관련 재정의 속성을 지정하지 않으면 [환경설정] > [설정 관리] 화면의 값을 기준으로 작동하며 아래는 속성별 맵핑이다.

  • 릴리즈 Harbor URL 미설정 시

    bxcr.workspaces.default.harbor.url 키로 저장된 값으로 처리

  • 릴리즈 Harbor Admin ID 미설정 시

    bxcr.workspaces.default.harbor.id 키로 저장된 값으로 처리

  • 릴리즈 Harbor Admin Password 미설정 시

    bxcr.workspaces.default.harbor.password 키로 저장된 값으로 처리

4.3.3 가용 클러스터 설정

워크스페이스는 1개 이상의 클러스터를 하나의 논리적 작업영역으로 묶어주는 역할을 하기 때문에 아래 그림처럼 클러스터를 포함시키거나() 제외시키는() 처리를 가용 클러스터 설정 탭 화면에서 할 수 있다.

[그림 4.33] 가용 클러스터 설정

가용 클러스터 설정


워크스페이스에서 가용 클러스터를 지정하여 워크스페이스가 포함하는 클러스터를 선택할 수 있고 이후에 설명하는 애플리케이션 스펙에서도 가용 클러스터를 상태에 맞게 설정을 할 수 있다.

4.4 프로젝트

(Administrator) [프로젝트] 메뉴를 사용해서 화면으로 진입하면 아래 그림과 같이 BXCP ADM에서 관리하는 논리적 단위인 프로젝트의 목록을 보여주는 화면에 진입할 수 있다.

[그림 4.34] 프로젝트

프로젝트


참고

BXCP ADM에서 프로젝트는 논리적 단위이지만 실질적으로는 쿠버네티스 네임스페이스와 같다고 보면 된다.

프로젝트 화면에 진입 시 눈에 띄는 정보가 있는데 그것이 시스템 구분이며 이 시스템 구분은 실제로 워크스페이스에 저장된 시스템 구분을 보여주고 있는 것이다. 즉 프로젝트에서는 시스템 구분 값을 변경할 수 없다.

프로젝트는 일반적으로 BXCP ADM에서 유일한 프로젝트(Multi Cluster 활성화 상태로 저장된) ID로 저장되기 때문에 BXCP ADM이 관리하는 여러 개의 쿠버네티스 클러스터에서도(가용 클러스터 설정 탭 화면에서 선택된) 유일하다. 아래 그림은 kubectl 커맨드를 사용해서 BXCP ADM의 프로젝트와 1:1 매칭되는 쿠버네티스 Namespace 리소스와 FederatedNamespace 리소스를 각각 조회한 예시이다.

[그림 4.35] kubectl 커맨드로 Namespace 리소스 조회결과

kubectl 커맨드로 Namespace 리소스 조회결과


[그림 4.36] kubectl 커맨드로 FederatedNamespace 리소스 조회결과

kubectl 커맨드로 FederatedNamespace 리소스 조회결과


즉, BXCP ADM에서 프로젝트를 생성하면 선택한 클러스터에(가용 클러스터 설정 탭 화면에서 선택한) 프로젝트 ID 값으로 네임스페이스가 만들어진다. 아래 그림을 보면 BXCP ADM에서 프로젝트 생성에 의해서 만들어진 쿠버네티스 네임스페이스 리소스인 bookinfo에 대한 예시를 볼 수 있는데, bankwareglobal.io/workspace, kubefed.io/managed, istio-injection 레이블이 설정되는 것이 특징이다.

[그림 4.37] BXCP ADM에서 프로젝트 생성 시 만들어진 쿠버네티스 네임스페이스

BXCP ADM에서 프로젝트 생성 시 만들어진 쿠버네티스 네임스페이스


4.4.1 릴리즈 참조 프로젝트 ID

프로젝트는 릴리즈 참조 프로젝트 ID 항목에 값을 설정할 수 있다. 아래 그림을 보면 이 정보를 설정한 프로젝트에서 애플리케이션을 생성하기 위해서 [온라인 애플리케이션] > [Create Application] 버튼을 사용 했을때 릴리즈 참조 프로젝트 ID 값을 설정한 프로젝트에서 이관을 하기 위한 애플리케이션을 조회하여 제공한다.

[그림 4.38] 이관 대상 애플리케이션 조회 결과

이관 대상 애플리케이션 조회 결과


참고

위 그림은 bxcp-sta 프로젝트 설정에서 릴리즈 참조 프로젝트 ID 값을 bookinfo 프로젝트로 설정한 상태에서 [Create Application] 버튼을 클릭한 결과 화면이다.

릴리즈 참조 프로젝트 항목에 값을 지정하지 않으면 필터링 되지 않고 이관을 할 수 있는 애플리케이션을 모두 조회하여 제공하게 된다.

[그림 4.39] 프로젝트 조회/변경 - 기본 설정

프로젝트 조회/변경 - 기본 설정


참고

릴리즈 참조 프로젝트 ID 항목에 값은 이관에 필요한 설정이기 때문에 위 그림 예시처럼 시스템 구분이 Staging과 Production에서만 동작한다. 그리고 시스템 구분은 워크스페이스의 값이기 때문에 변경할 수 있는 값이 아니다.

4.4.2 가용 클러스터 설정

BXCP ADM에 프로젝트는 워크스페이스에 포함되는 논리적 단위이기 때문에 가용 클러스터 정보는 아래 그림처럼 일반적으로 워크스페이스에 설정된 기준으로 보이게 된다. 이 화면에서 워크스페이스에 설정된 기준을 재정의를 할 수 있는데 프로젝트에 클러스터를 포함하거나() 제외시키는() 재정의를 할 수 있다.

[그림 4.40] 프로젝트 조회/변경 - 가용 클러스터 설정

프로젝트 조회/변경 - 가용 클러스터 설정


경고

위 그림에 Multi Cluster 여부는 반드시 활성화 상태로 설정하고 프로젝트 정보를 저장한다. 비활성화 상태로 저장을 하면 BXCP ADM에서 제공하는 배포 기능이 동작하지 않는다.

BXCP ADM에 프로젝트는 실질적으로 쿠버네티스 네임스페이스 리소스와 동일하다고 언급했는데, 이 가용 클러스터 설정 탭 화면에서 Resource Quota 버튼을 활성화 시켜서 값을 입력할 수 있고 [저장] 버튼을 누르면 쿠버네티스 환경에 ResourceQuota 리소스가 적용된다. 아래는 Resource Quota 정보를 입력하는 예시이다.

[그림 4.41] 프로젝트 조회/변경 - 가용 클러스터 설정 - Resource Quota

프로젝트 조회/변경 - 가용 클러스터 설정 - Resource Quota


위에 그림에 표시된 부분에 원하는 값을 넣고 저장하게 되면 아래 그림처럼 ResourceQuota 리소스가 만들어지게 된다.

[그림 4.42] 설정되는 쿠버네티스 ResourceQuota 리소스 예시

---
apiVersion: v1
kind: ResourceQuota
metadata:
  labels:
    kubefed.io/managed: "true"
  name: bookinfo-sta
  namespace: bookinfo-sta
spec:
  hard:
    limits.cpu: "1"
    limits.memory: 1000Mi
    requests.cpu: 100m
    requests.memory: 10Mi


참고

BXCP ADM에서는 kubefed를 통해서 멀티 클러스터 환경의 쿠버네티스 리소스를 관리하므로 kubefed.io/managed: "true"

레이블이 설정된 것을 볼 수 있으며 yaml 스펙은 단지 예시이다.

그리고 가용 클러스터 설정에는 Limit Range 설정을 하는 항목이 있는데 아래 그림이 Limit Range 입력을 활성화한 상태를 보여준다. Limit Range 설정은 쿠버네티스의 LimitRange 리소스를 화면에 입력한 기준으로 생성한다.

[그림 4.43] 프로젝트 조회/변경 - 가용 클러스터 설정 - Limit Range

프로젝트 조회/변경 - 가용 클러스터 설정 - Limit Range


이 화면을 통해서 Limit Range 설정을 하면 다음과 같은 형태의 제약이 설정되는데 이것은 쿠버네티스 LimitRange 리소스의 기능이다.

  • 네임스페이스에서 파드 또는 컨테이너별 최소 및 최대 컴퓨팅 리소스 사용량을 지정한다.

  • 네임스페이스에서 스토리지클래스별 최소 및 최대 스토리지 요청을 지정한다.(BXCP ADM 미지원)

  • 네임스페이스에서 리소스에 대한 요청과 제한 사이의 비율을 지정한다.(BXCP ADM 미지원)

  • 네임스페이스에서 컴퓨팅 리소스에 대한 기본 요청/제한을 설정하고 런타임에 있는 컨테이너에 자동으로 설정한다.

4.5 빌드팩

(Administrator) [빌드팩] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 BXCP ADM에서 관리하는 빌드팩의 목록을 보여주는 화면에 진입할 수 있다.

[그림 4.44] 빌드팩

빌드팩


BXCP ADM에서 빌드팩은 CI/CD 파이프라인 프로세스에 핵심이 되는 설정이다. 쿠버네티스 환경에서 실행되는 애플리케이션은 다양한 프로그래밍 언어를 사용하는 빌드 방식이 있기 때문에 이런 다양한 유형에 알맞은 빌드팩을 구성하고 운영하는 것은 BXCP ADM에서 중요한 관리 포인트 중에 하나이다.

빌드팩을 관리하는 사용자는 BXCP ADM의 빌드팩을 관리하기 위해서 다양한 기술(예: Docker, Harbor, Gradle), 오픈소스(예: Jenkins, K8s, Tomcat, Node.js), 프로그래밍 언어(예: Java, Python, Shellscript, Jenkins Pipeline Script, Handlebars, Javascript) 등에 대한 광범위한 지식이 요구된다.

[그림 4.45] 빌드팩 - 목록

빌드팩 - 목록


4.5.1 기본 설정

빌드팩 정보를 설정 시 기본 설정 탭 화면에서는 애플리케이션 유형, 배포 유형 값을 지정하는 것이 핵심이다.

[그림 4.46] 빌드팩 조회/변경 - 기본 설정

빌드팩 조회/변경 - 기본 설정


애플리케이션 유형에는 Deployment, Job, Statefulset, Legacy를 선택 할 수 있는데 Statefulset 유형은 아직 배포 처리에서는 지원하지 않지만 저장은 가능하며, Deployment 유형은 온라인 애플리케이션, Job 유형은 배치 애플리케이션, Legacy 유형은 레거시 애플리케이션에 일치하는 유형이다.

배포 유형에는 아래 그림처럼 애플리케이션 스펙을 설정 시 선택하는 배포 리소스 유형과 일치하는 유형이다.

[그림 4.47] 애플리케이션에 배포 리소스 유형

애플리케이션에 배포 리소스 유형


4.5.2 버전 정보

[버전 정보] 탭 화면은 빌드팩이 실제로 어떤 동작이 이루어지는지에 대한 설정을 버전별로 관리하는 탭 화면이다. 즉 CI/CD 파이프라인 처리 과정에서 어떤 문제가 있을 때에는 이 탭 화면을 통해서 설정 정보를 확인해야 한다. 아래 그림이 버전 정보 탭 화면인데 이 빌드팩은 현재 3개의 버전이 저장되어 있다.

[그림 4.48] 빌드팩 조회/변경 - 버전 정보

빌드팩 조회/변경 - 버전 정보


위에 그림에서 3개의 버전으로 저장된 빌드팩 예시를 보여주는데 이 빌드팩 버전은 애플리케이션 수정(생성) 팝업 화면에서 아래 그림처럼 보여지고 선택할 수 있다. 다른 사용자를 위해서 빌드팩에 설명은 쉬운 말로 구체적으로 작성하는 것을 권장한다.

[그림 4.49] 온라인 애플리케이션 - 애플리케이션 수정(생성)

온라인 애플리케이션 - 애플리케이션 수정(생성)


이런 빌드팩 버전 목록 화면에서 행이나 [추가] 버튼을 클릭하면 구체적인 설정을 하는 팝업을 열 수 있다. 아래 그림은 저장된 빌드팩의 버전 데이터이다.

[그림 4.50] 빌드팩 조회/변경 - 빌드팩 버전 조회/변경 - 기본 설정

빌드팩 조회/변경 - 빌드팩 버전 조회/변경 - 기본 설정


참고

위에서 언급했지만 강조하는 차원에서 BXCP ADM에서 빌드팩은 설정해야 하는 값이 많기 때문에 위 그림에 설명 항목은 다른 사용자가 이해하기 쉬운 말과 함께 구체적으로 작성할 것을 권장한다.

빌드팩에서는 컨테이너 이미지를 빌드하기 위해서 도커파일의(Dockerfile) 내용을 설정할 수 있는 입력창을 제공하고 있다. 아래 그림에서는 이미 작성된 도커파일 설정이 보이는데 [추가] 버튼을 통해서 처음 만든다면, 텅빈 상태로 보여진다.

[그림 4.51] 빌드팩 조회/변경 - 빌드팩 버전 조회/변경 - 도커파일

빌드팩 조회/변경 - 빌드팩 버전 조회/변경 - 도커파일


경고

도커파일 작성 시 FROM 키워드에서 사용하는 이미지는 BXCP ADM 환경에서 CI/CD 파이프라인 처리에서 이용하는 젠킨스 환경에서 접근이 가능해야 한다. 아래와 같이 docker pull 커맨드를 실행해서 확인을 하거나 젠킨스 환경에서 도커파일을 만들어서 docker build 커맨드를 실행하여 반드시 확인한다.

$ docker pull python:3.7.7-slim

가급적이면 도커 파일의 내용은 다른 텍스트 에디터를 이용해 만들고 테스트를 미리 로컬환경이나 테스트를 할 수 있는 환경에서 완료하고 도커파일 탭 화면의 입력창에 내용을 입력한다. 만약 개발팀에서(혹은 개발자) 내용을 전달해준다면 그것을 이용하여 입력창에 붙여넣기 하면되고 Dockerfile에 대한 자세한 문법은 https://docs.docker.com/engine/reference/builder/ 링크를 참고해서 작성하길 권장한다.

아래 그림은 CI/CD 파이프라인 탭 화면인데 젠킨스 CI/CD 파이프라인을 정의하는 화면이다. 예시에서는 완성된 CI/CD 파이프라인 설정을 보여주고 있지만 신규로 작성 시 템플릿을 제공하고 있다. CI/CD 파이프라인 설정 입력창이 협소하기 때문에 화면을 확장하는 버튼을() 이용해서 사용한다.

[그림 4.52] 빌드팩 조회/변경 - 빌드팩 버전 조회/변경 - CI/CD 파이프라인

빌드팩 조회/변경 - 빌드팩 버전 조회/변경 - CI/CD 파이프라인


위에 언급처럼 템플릿을 제공한다고 했는데 그 젠킨스 CI/CD 파이프라인 템플릿은 아래와 같다. 여기에 작성된 내용은 https://www.jenkins.io/doc/book/pipeline/ 문서를 기준으로 작성이 되었고 자세한 내용은 해당 링크로 이동하여 찾아보길 권장하며 여기서는 주요 키워드나 문법을 간략히 설명한다.

// for Gitlab with online

pipeline {
    environment {                                                                                                      (1)
        DOMAIN_ID = "${application.domain_id}"
        APP_ID = "${application.app_id}"
        WORKSPACE_ID = "${application.workspace_id}"
        BUILDPACKVERSION_UUID = "${buildpack.version.uuid}"
        SYSTEM_URL = "${bxcr.system.url}"
        BXCP_TOKEN = "${bxcr.system.auth.token}"
        EXECUTE = "./execute.sh"
    }
    parameters {                                                                                                       (2)
        // [변경 불가]    
        // 소스를 받을 Gitlab에 필요한 변수
        string(name: 'COMMIT_ID', defaultValue: 'git commit id', description: 'Git Commit ID')
        string(name: 'SOURCE_ID', defaultValue: 'root', description: 'Gitlab ID')
        string(name: 'SOURCE_PW', defaultValue: 'password', description: 'Gitlab PW')
        string(name: 'PROTOCOL', defaultValue: 'https', description: 'Gitlab TLS')
        string(name: 'GIT_HOST_URL', defaultValue: 'gitlab.bxcp.lab', description: 'Gitlab Host URL')
        string(name: 'GIT_SUB_URL', defaultValue: '/bookinfo/ratings', description: 'Gitlab SUB URL')
        string(name: 'GIT_PORT', defaultValue: '8443', description: '8443')
        string(name: 'BRANCH', defaultValue: 'master', description: 'git branch name')

        // 포탈 사용에 필요한 변수
        string(name: 'HARBOR_URL', defaultValue: 'https://registry.bxcp.lab', description: 'Harbor URL')
        string(name: 'HARBOR_ID', defaultValue: 'admin', description: 'Harbor ID')
        string(name: 'HARBOR_PW', defaultValue: 'password', description: 'Harbor PW')        
        string(name: 'BUILD_DESC', defaultValue: 'application patch', description: 'build description')
        string(name: 'DEPLOY_RES_TYPE', defaultValue: 'GITLAB', description: 'build description')
        
    }

    agent none
    stages {                                                                                                           (3)
        stage('# Initialization') {                                                                                    (4)
            agent {
                docker {
                    image 'alpine/curl:latest'
                }
            }
            steps {
                cleanWs()
                script {currentBuild.displayName = "${BUILD_NUMBER}||${params.BUILD_DESC}||${params.COMMIT_ID}"}
                sh '''
                    set '\053'x
                    echo "curl -X GET ${SYSTEM_URL}/buildpack/get/buildpackversions/${BUILDPACKVERSION_UUID}/templates/download?type=SCRIPT -H accept: */* -H Authorization: Bearer <...> -o /tmp/tmp.sh"
                    curl -s -k -X GET "${SYSTEM_URL}/buildpack/get/buildpackversions/${BUILDPACKVERSION_UUID}/templates/download?type=SCRIPT" -H "accept: */*" -H "Authorization: Bearer ${BXCP_TOKEN}" -o /tmp/tmp.sh
                    tr -d '\015' < /tmp/tmp.sh > ${EXECUTE}
                    chmod 755 ${EXECUTE}
                    set '\055'x
                '''
            }
        }

        stage('# Git Clone') {                                                                                         (5)
            agent {
                docker { image 'bitnami/git:latest' }
            }
            steps {
                sh "${EXECUTE} gitClone"
            }
        }

        stage('# Application Build') {                                                                                 (6)
            agent {
                docker { image 'gradle:latest' }
            }
            steps {
                sh "${EXECUTE} appBuild"
            }
        }

        stage('# Application Test') {                                                                                  (7)
            agent {
                docker { image 'bash:latest' }
            }
            steps {
                sh "${EXECUTE} appTest"
            }
        }

        stage('# Image Build & Push') {                                                                                (8)
            agent {
                docker {
                    image 'bwginfra/bookinfo_base:latest'
                    args '-v /etc/hosts:/etc/hosts'
                }
            }
            steps {
                sh "${EXECUTE} imageDelivery"
            }
        }

        stage('# Application Delivery') {                                                                              (9)
            agent {
                docker { image 'cfmanteiga/alpine-bash-curl-jq:latest' }
            }
            steps {
                sh "${EXECUTE} appDelivery"
            }
        }
    }

    post {                                                                                                             (10)
        always { 
            echo '### on always!'
        }

        failure { 
            echo '### on failure!'
        }

        success { 
            echo '### on success!'
        }
    }
}

1

환경변수

파이프라인 처리에서 사용할 환경변수를 정의한다. 여기서 bxcr.system 접두사를 가지는 변수의 값은 [환경설정] > [설정 관리] 에서 찾을 수 있으며 설정 관리에 키-값 정보가 궁금하다면 6.1절. “시스템 환경변수” 참고한다.

2

파라미터

CI/CD 파이프라인을 호출하는 시스템이 전달해주는 정보를 파라미터로 정의한 것이고, 기본값이 정의되지 않은 파라미터는 그 파라미터 이름으로 값을 전달받지 못하면 오류가 발생한다.

3

단계 목록

CI/CD 파이프라인은 다양한 처리를 단계라는(Stage) 단위로 나누어서 정의를 하는데 이 키워드는 각각의 단계를 정의하기 위한 키워드이다.

4

초기화

빌드를 위한 초기화 작업을 진행하는 단계이다. 주요 목적은 빌드팩 정보를 빌드하는 환경으로 가져오는 처리를 한다.

5

저장소 Clone

빌드 할 소스를 git 저장소에서 clone 한다.

6

애플리케이션 빌드

clone 받은 소스를 각각의 프로그래밍 언어, 프레임워크 등에 따라 빌드 처리한다.

7

애플리케이션 테스트

clone 받은 소스를 기준으로 테스트를 실행한다.

8

컨테이너 이미지 빌드 및 푸시

애플리케이션을 쿠버네티스 환경에서 실행할 수 있도록 컨테이너 이미지를 빌드하고 쿠버네티스에서 Pull 할 수 있는 저장소에 이미지를 푸시한다.

9

애플리케이션 배포

BXCP ADM의 배포 REST API 호출을 통해서 완성된 컨테이너 이미지를 배포 처리한다.

10

후처리

위에 정의된 모든 단계가 종료되면 상태에 따라서 후처리 이루어진다. 예시에서는 always, failure, success 3개 상태를 보여주는데 먼저 always 상태는 완료 상태에 관계없이 실행하고 싶을 때 사용한다. failure 상태는 파이프라인이나 각 단계의 실행이 일반적으로 젠킨스 웹 UI에서 빨간색으로 표시되는 "실패" 상태가 발생할 때 처리할 내용이 있으면 사용한다. success 상태는 일반적으로 젠킨스 웹 UI에서 초록색으로 표시되는 "성공" 상태가 발생할 때 처리할 내용이 있으면 사용한다.

참고

사용자가 젠킨스 파이프라인 스크립트를 작성할 때에 젠킨스에서 개발 도구를 제공하고 있다. 브라우저로 https://www.jenkins.io/doc/book/pipeline/development/#linter 주소로 이동하면 다양한 도구를 이용할 수 있다.

이러한 젠킨스 파이프라인 스크립트를 작성 시 사용자의 네트워크 환경이 외부 접근을 할 수 없을 때에는 BXCP ADM 환경을 구성 시 같이 설치된 젠킨스에서 파이프라인 스크립트 작성에 사용할 수 있는 도구가 있다. 아래 그림은 해당 도구를 사용하기 위한 이동 순서를 나열한 그림이다.

[그림 4.53] 순서 1. 젠킨스 홈 화면 - 새로운 Item

순서 1. 젠킨스 홈 화면 - 새로운 Item


[그림 4.54] 순서 2. 젠킨스 Item 정보 입력

순서 2. 젠킨스 Item 정보 입력


[그림 4.55] 순서 3. Pipeline Syntax

순서 3. Pipeline Syntax


참고

파이프라인 스크립트 작성에 도움을 주는 도구를 사용하는 목적이기 때문에 새로운 Item 정보로 저장을 할 필요는 없다.

아래 그림은 파이프라인 스크립트 웹 도구의 첫 화면인데 표시된 메뉴의 경우에는 인터넷 사용이 허용된 환경에서만 이동할 수 있다.

[그림 4.56] 인터넷 사용이 가능할 때 이용 가능한 메뉴

인터넷 사용이 가능할 때 이용 가능한 메뉴


아래 그림은 [Snippet Generator] 메뉴의 화면인데 여기서는 다양한 Step을 정의하고 싶을 때 관련 코드 조각을 생성해서 사용자에게 제공할 수 있다. 그림에서는 "offline"이라는 Stage 스탭의 코드 조각을 생성한 결과를 보여주고 있다.

[그림 4.57] Snippet Generator

Snippet Generator


아래 그림을 보면 Snippet Generator 화면에서 선택할 수 있는 Step의 목록을 볼 수 있다. 다양한 형태에 Step이 있기 때문에 Step 선택 콤보에서 간략하게 설명이 있다. 하지만 요약된 설명으로는 해당 Step이 어떤 역할로 동작을 하는지를 이해하기에는 한계가 있으니 https://www.jenkins.io/doc/pipeline/steps/ 링크에서 참고할 필요가 있다.

[그림 4.58] 선택할 수 있는 Step 목록

선택할 수 있는 Step 목록


아래 그림은 [Declarative Directive Generator] 메뉴의 화면인데 젠킨스 파이프라인 스크립트의 지시자를 기준으로 코드 조각을 생성하여 사용자에게 제공하는 화면이다. 예시에서는 agent 지시자에서 도커 이미지를 사용하는 샘플 코드 조각을 만들어 보는 예시이다.

[그림 4.59] Declarative Directive Generator

Declarative Directive Generator


참고

위 그림에 agent 지시자 이외에도 다양한 지시자를 젠킨스 파이프라인 스크립트에서 제공하고 있다. https://www.jenkins.io/doc/book/pipeline/syntax/#declarative-directives 링크에서 구체적인 정보를 확인할 수 있다.

위에서 설명한 CI/CD 파이프라인 스크립트는 아래 그림처럼 젠킨스 파이프라인 실행 결과에서 보이는 형태의 순서로 처리가 되는 템플릿이다.

[그림 4.60] 젠킨스 파이프라인 실행결과 화면

젠킨스 파이프라인 실행결과 화면


그리고 이런 CI/CD 파이프라인 처리 현황은 [빌드] > [빌드 상세] 팝업 화면에서도 열람할 수 있다.

[그림 4.61] [빌드] > [빌드 상세]

[빌드] > [빌드 상세]


빌드팩 버전 조회/변경 화면에서는 아래 그림처럼 배포에 사용하는 쿠버네티스 Deployment 리소스의 스펙을 재정의할 수 있도록 템플릿을 수정하는 화면을 제공한다.

[그림 4.62] 빌드팩 조회/변경 - 빌드팩 버전 조회/변경 - 쿠버네티스 리소스

빌드팩 조회/변경 - 빌드팩 버전 조회/변경 - 쿠버네티스 리소스


위에 그림에 기본값으로 보여주는 템플릿은 아래 그림처럼 데이터베이스에 정의된 기본값으로 사용을 하고 있다. 데이터베이스에 있는 정보의 수정은 지양하며 빌드팩에서 재정의 하는 형태를(버전을 새롭게 만들어서 재정의) 권장한다. 그리고 이 쿠버네티스 리소스에 사용된 템플릿 값은 Handlebars 템플릿 언어를 기준으로 만들어져 있다. 애플리케이션의 스펙과 템플릿에서 사용하는 변수 등이 정교하게 만들어져 있기 때문에 가급적 수정을 지양하며 템플릿에 대한 문법은 https://handlebarsjs.com/guide/expressions.html#expressions 링크를 참고한다.

[그림 4.63] 데이터베이스 - 쿠버네티스 리소스

데이터베이스 - 쿠버네티스 리소스


경고

위 그림과 같이 데이터베이스에 저장된 템플릿 정보를 수정하면 이 템플릿을 사용하는 모든 곳에서 영향을 미치게 된다.

빌드팩 버전 조회/변경 화면에서는 CI/CD 파이프라인 처리에 사용하는 쉘스크립트 설정하는 탭 화면을 제공한다. 이 화면에서는 쉘스크립트를 재정의 할 수 있는데 bash 쉘 기준으로 작성한다.

[그림 4.64] 빌드팩 조회/변경 - 빌드팩 버전 조회/변경 - 쉘스크립트

빌드팩 조회/변경 - 빌드팩 버전 조회/변경 - 쉘스크립트


위 그림에 나오는 쉘스크립트는 CI/CD 파이프라인 탭 화면에서 설정하는 젠킨스 파이프라인 스크립트와 더불어 가장 중요한 설정 중에 하나이다. 아래 코드조각은 위에서 설명했던 CI/CD 파이프라인 스크립트의 코드 조각인데 쉘스크립트가 어디에서 쓰이는지 보여주는 예시이다. 아래에서 sh "${EXECUTE} appBuild" 스크립트로 작성된 부분에서 쉘스크립트를 사용한 부분이다.

stage('# Application Build') {
	agent {
		docker { image 'gradle:latest' }
	}
	steps {
		sh "${EXECUTE} appBuild"
	}
}			

위에 그림에 기본값으로 보여주는 쉘스크립트의 템플릿은 이전에 언급한 쿠버네티스 리소스와 같이 아래 그림처럼 데이터베이스에 정의된 기본값으로 사용하고 있다. 데이터베이스에 있는 정보의 수정은 지양하며 빌드팩에서 재정의 하는 형태를 권장한다.

[그림 4.65] 데이터베이스 - 쉘스크립트

데이터베이스 - 쉘스크립트


4.6 시스템 컴포넌트

시스템 컴포넌트 화면은 헬름관리 화면에서(메뉴: (Administrator) [구성관리] > [헬름 관리]) 등록한 헬름 차트를 기준으로 부가적인 처리를 위한 화면이다. 헬름 차트를 기준으로 설치 시 이를 시스템 컴포넌트 1개로 이해해도 된다.

아래 그림은 (Administrator) [시스템 컴포넌트] 메뉴를 통해서 진입한 화면인데 예시에서는 Nginx나 Tomcat 헬름차트를 사용하고 있는데, 추가로 필요한 헬름 차트가 있다면 관리자는 헬름 차트를 반입하여 시스템 컴포넌트 화면에서 다른 사용자들이 이용할 수 있게 구성할 수 있다. 예를 들면 카프카, Redis, MongoDB 등의 솔루션에 헬름 차트들이 있다.

[그림 4.66] 시스템 컴포넌트 화면

시스템 컴포넌트 화면


4.6.1 시스템 컴포넌트 생성

헬름 관리 화면에서 이미 헬름 차트를 추가했다는 가정하에 시스템 컴포넌트에서 [컴포넌트 추가] 버튼을 클릭하면 신규 컴포넌트를 추가할 수 있다. 아래는 신규로 컴포넌트를 추가 시 열리는 팝업이다.

[그림 4.67] 헬름 리스트 선택 화면

헬름 리스트 선택 화면


위에 그림과 같이 헬름관리를 통해서 등록된 헬름차트 목록에서 1개를 선택하면 아래와 같이 SUMMARY, VALUES 탭에서 내용을 확인할 수 있다. VALUES는 헬름 차트에 설치 과정에서 사용하는 기본값을 보여주고 있다. 설치 버튼을 누르면 컴포넌트 추가를 하는 팝업으로 전환된다.

[그림 4.68] 헬름 리스트 선택 - SUMMARY

헬름 리스트 선택 - SUMMARY


[그림 4.69] 헬름 리스트 선택 - VALUES

헬름 리스트 선택 - VALUES


아래 그림은 위에서 설치 버튼을 누르면 전환되는 팝업 화면으로 헬름 차트를 설치하기 위한 정보를 직접 입력하는 화면이다.

[그림 4.70] 컴포넌트 추가 - 기본 설정

컴포넌트 추가 - 기본 설정


입력하는 항목마다 다음 의미를 가진다.

  • 컴포넌트 ID

    헬름 차트에 의해서 생성되는 쿠버네티스 리소스에 이름에 사용된다.

  • 컴포넌트 명

    설치하는 컴포넌트에 이름으로 식별을 용이하게 하는 용도이다.

  • 클러스터

    설치할 컴포넌트를 어느 클러스터에 설치할지 정할수 있다.

  • 네임스페이스

    지정한 클러스터 기준으로 설치할 네임스페이스를 선택할 수 있다.

  • 컴포넌트 설명

    설치하는 컴포넌트에 대한 설명이다.

기본 설정 탭에서 정보를 입력하고 아래 그림과 같이 VALUES 탭으로 이동하면 헬름 차트에 정보를 추가로 설정할 수 있다.

[그림 4.71] 컴포넌트 추가 - VALUES

컴포넌트 추가 - VALUES


VALUES 탭에서 정보를 아래와 같이 수정할 수 있다. 예시에서는 간단하게 레이블 정보를 추가했다.

[그림 4.72] 컴포넌트 추가 - VALUES - 레이블 추가

컴포넌트 추가 - VALUES - 레이블 추가


그리고 새롭게 추가한 정보를 Diff 버튼을 눌러서 기본값과 비교할 수 있다. 아래 그림은 버튼을 누른 결과 팝업창이다.

[그림 4.73] 컴포넌트 추가 - VALUES - 레이블 추가 - Diff

컴포넌트 추가 - VALUES - 레이블 추가 - Diff


비교를 하고 이상이 없으면 비교창을 닫고 설치 버튼을 누르면 해당 헬름 차트를 쿠버네티스 클러스터에 설치가 진행된다. 아래는 설치 버튼을 누른 직후에 시스템 컴포넌트 목록 화면이다.

[그림 4.74] 시스템 컴포넌트 화면 - Installing

시스템 컴포넌트 화면 - Installing


일정 시간이 지나면 아래 그림과 같이 Phase는 Succeeded로 Status는 deployed로 변경된 것을 확인할 수 있다.

[그림 4.75] 시스템 컴포넌트 화면 - Succeeded

시스템 컴포넌트 화면 - Succeeded


예시로 사용된 헬름 차트는 디플로이먼트 리소스로 쿠버네티스 환경에 설치를 하기 때문에 아래 그림처럼 [워크로드 리소스] > [디플로이먼트] 메뉴에서 실제로 처리된 리소스를 확인할 수 있다.

아래 그림에서 알 수 있듯이 컴포넌트 ID, VALUES 탭에서 추가한 레이블 정보가 설정된 것을 알 수 있다.

[그림 4.76] 워크로드 리소스 - 디플로이먼트 - 시스템 컴포넌트 확인

워크로드 리소스 - 디플로이먼트 - 시스템 컴포넌트 확인


[그림 4.77] 워크로드 리소스 - 디플로이먼트 - 레이블 - 시스템 컴포넌트 확인

워크로드 리소스 - 디플로이먼트 - 레이블 - 시스템 컴포넌트 확인


4.6.2 시스템 컴포넌트 변경

위에서 신규로 추가한 시스템 컴포넌트는 메뉴를 통해서 수정하거나 조회된 목록에 1개의 컴포넌트를 선택하면 아래와 같은 컴포넌트 조회/변경 팝업을 열 수 있다.

[그림 4.78] 컴포넌트 조회/변경

컴포넌트 조회/변경


아래와 같이 설치한 컴포넌트에 추가로 레이블을 아래와 같이 입력을 했다.

[그림 4.79] 컴포넌트 조회/변경 - 레이블 추가

컴포넌트 조회/변경 - 레이블 추가


신규로 컴포넌트를 추가하는 과정과 동일하게 아래 그림처럼 Diff 버튼을 통해서 비교를 할 수 있다.

[그림 4.80] 컴포넌트 조회/변경 - Diff

컴포넌트 조회/변경 - Diff


비교 결과 창을 닫고 [업그레이드] 버튼을 누르면 업그레이드를 처리한다. 아래 그림을 보면 기대하는 결과와 다르게 오류가 발생한 것을 알 수 있다.

[그림 4.81] 시스템 컴포넌트 화면 - Failed

시스템 컴포넌트 화면 - Failed


경고

위와 같은 경우는 헬름 차트마다 발생하는 문제가 다르기 때문에 일관된 조치 방식이 있는 것은 아니기 때문에 본인이 설치를 원하는 헬름 차트에 대한 설치 방법을 참고해야만 한다.

문제의 내용을 확인하기 위해 이벤트 리소스 화면으로 이동하고 내용을 훑어보면 HelmRelease 유형에 이벤트가 아래 그림과 같이 보인다. 내용을 보면 업그레이드 처리를 위해서는 비밀번호를 조회해서 설정해야 한다는 의미로 보인다.

[그림 4.82] 이벤트 리소스

이벤트 리소스


이벤트 메세지에 나온 내용을 기준으로 아래와 같이 커맨드를 사용해서 비밀번호를 획득한다. 여기서는 시크릿 리소스에 지정된 비밀번호를 확인하는 과정에 kubectl 커맨드를 이용했지만 [컨피그 리소스] > [시크릿] 메뉴를 통해서 제공하는 쿠버네티스 시크릿 리소스를 더욱 간편하게 내용을 확인할 수 있다.

[그림 4.83] kubectl secret 리소스 조회

kubectl secret 리소스 조회


위에서 알아낸 비밀번호를 복사해서 아래 그림과 같이 팝업을 열고 VALUES 탭에서 비밀번호를 변경한다.

[그림 4.84] VALUES 비밀번호 입력

VALUES 비밀번호 입력


위에 그림에서 비밀번호를 채워 넣고 업그레이드를 하면 아래 그림처럼 더 이상 문제가 되는 값이 없기 때문에 Phase가 Upgrading 상태로 보인다. 일정 시간이 지나고 새로고침하면 Succeeded 상태로 변경된 것을 알 수 있다.

[그림 4.85] 시스템 컴포넌트 업그레이드 Phase - Upgrading

시스템 컴포넌트 업그레이드 Phase - Upgrading


[그림 4.86] 시스템 컴포넌트 업그레이드 Phase - Succeeded

시스템 컴포넌트 업그레이드 Phase - Succeeded


4.7 워크로드 리소스 - 요약 정보

(Administrator) [워크로드 리소스] > [요약 정보] 메뉴를 사용해서 화면으로 진입하면 선택한 클러스터의 메트릭 요약 정보를 보여준다.

화면에 나타내는 정보는 클러스터에 CPU, MEMORY, DISK, POD 정보를 상단 영역에 보여주고 하단 영역에는 주요 워크로드 리소스인 Pod, ReplicaSets, StatefulSets, DaemonSets 정보를 보여주기 때문에 간편하게 클러스터 모니터링을 할 수 있다.

[그림 4.87] 워크로드 리소스 - 요약 정보 - 클러스터 메트릭

워크로드 리소스 - 요약 정보 - 클러스터 메트릭


아래 그림은 host 클러스터에 정보를 보여주고 있다. 쿠버네티스 버전, 클라우드 프로바이더, 메트릭 차트 정보를 제공한다.

[그림 4.88] 워크로드 리소스 - 요약 정보 - 클러스터 메트릭 차트

워크로드 리소스 - 요약 정보 - 클러스터 메트릭 차트


아래 그림을 보면 위에서 봤던 메트릭 차트에서 나타낸 정보를 수치로 표현하고 있다. Core, Disk size, POD 갯수, Memory size 정보에 대한 총 데이터와 사용하는 데이터를 제공하는 것을 알 수 있다.

[그림 4.89] 워크로드 리소스 - 요약 정보 - 클러스터 메트릭 수치

워크로드 리소스 - 요약 정보 - 클러스터 메트릭 수치


참고

관리자는 이러한 메트릭 정보를 확인하여 가용 리소스가 충분하지 않을 때 다양한(퍼시스턴트 볼륨, 노드) 리소스를 추가하여 관리할 수 있다.

그리고 아래 그림은 쿠버네티스 환경에서 주요 워크로드 리소스에 유형별(Kind) 갯수를 차트 및 상태별 갯수로 표현하고 있다. 이 정보 또한 관리자가 클러스터를 관리할 때 유용한 정보가 된다. 그리고 그래프 영역을 클릭하면 해당하는 유형에 워크로드 리소스 화면으로 이동할 수 있다.

[그림 4.90] 워크로드 리소스 - 요약 정보 - 주요 워크로드 리소스 현황

워크로드 리소스 - 요약 정보 - 주요 워크로드 리소스 현황


다른 클러스터에 요약 정보를 보고 싶다면 아래 그림처럼 클러스터 선택 콤보를 이용할 수 있다.

[그림 4.91] 워크로드 리소스 - 요약 정보 - 클러스터 선택 콤보

워크로드 리소스 - 요약 정보 - 클러스터 선택 콤보


이런 [요약 정보] 화면을 포함하여 BXCP ADM에서 메트릭 정보를 제공하는 다양한 화면에서는 모니터링 목적으로 일정한 인터벌로 조회를 원할 때 아래 그림처럼 반복 조회 시간을 조정한다.

[그림 4.92] 워크로드 리소스 - 요약 정보 - 반복 조회 선택 콤보

워크로드 리소스 - 요약 정보 - 반복 조회 선택 콤보


4.8 파드

(Administrator) [워크로드 리소스] > [파드] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 선택한 클러스터, 네임스페이스를 기준으로 쿠버네티스 파드 리소스에 목록을 보여준다.

쿠버네티스 환경에서 파드는 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위이다. 파드 리소스는 하나 이상의 컨테이너 그룹이며, 이 그룹에 포함되는 컨테이너들은 스토리지, 네트워크 공유할 수 있다.

[그림 4.93] 워크로드 리소스 - 파드

워크로드 리소스 - 파드


파드 리소스는 쿠버네티스에서 가장 중요한 리소스로 아래 그림처럼 파드 목록 화면에서는 최대한 많은 정보를 사용자에게 보여주도록 구성되어 있다. 마치 kubectl CLI를 사용한 결과와 유사하게 구성되어 있다.

[그림 4.94] kubectl get pods 예시

kubectl get pods 예시


[그림 4.95] 워크로드 리소스 - 파드 - 목록

워크로드 리소스 - 파드 - 목록


파드 목록 화면에서 새로운 파드를 생성할 수 있도록 기능을 제공하는데, [Create Pod] 버튼을 사용하면 아래 그림처럼 스펙을 입력할 수 있는 팝업창이 열리게 된다. 기본적인 템플릿은 제공이 되는 것을 알 수 있으며 사용자에 편의를 위해 [Download] 버튼을 제공한다.

[그림 4.96] Create Pod 팝업

Create Pod 팝업


4.8.1 Details

파드 목록에서 1개 행을 클릭하면 파드 리소스에 상세 정보를 열람할 수 있는 팝업이 열린다. 아래 그림은 Details 탭에 대한 화면이다. 파드 리소스 스펙에서 사용자가 참고해야 하는 주요 속성을 선정하여 표현하는 탭 화면이다.

[그림 4.97] 팝업 - Details - 상단

팝업 - Details - 상단


[그림 4.98] 팝업 - Details - 하단

팝업 - Details - 하단


애플리케이션의 스펙에서 Ingress 유형이 Service Mesh 유형으로 설정된 상태로 배포되면 아래 그림처럼 istio에서 설정하는 사이드카 컨테이너가 자동으로 주입되어서 배포된다.

[그림 4.99] Istio Sidecar

Istio Sidecar


4.8.2 YAML

앞에서 언급한 Details 탭에서 볼 수 없는 정보를 YAML 탭에서 열람할 수 있다. 아래 그림은 파드 리소스 스펙을 yaml 포맷으로 제공하는 탭을 볼 수 있다. 이 화면에서는 단순히 yaml 포맷으로 열람만 하는 화면이 아니고 스펙의 수정, 다운로드, 새로고침 등에 기능을 제공하고 있다.

[그림 4.100] 팝업 - YAML

팝업 - YAML


참고

파드를 직접 생성하면 이 화면에 기능을 통해서 스펙 수정이 가능하지만 주요 워크로드 리소스를(디플로이먼트, 데몬셋, 스테이트풀셋, 레플리카셋) 생성해서 파생되어 만들어진 파드는 수정을 해도 반영이 되지 않는다. 이러한 파드 리소스는 위에 그림의 빨간색 표시처럼 ownerReferences 속성이 설정된 것이 특징이다.

4.8.3 Log

파드 리소스에는 컨테이너가 하나 이상 동작하고 있는데, Log 탭에서는 컨테이너에 대한 로그를 스트리밍 방식으로 열람할 수 있다.

아래는 쿠버네티스 환경에 로그를 열람하는 커맨드 예시이고, 그 밑에 그림은 샘플 파드 리소스에 대한 Log 탭 화면이다.

$ kubectl logs -f -n bookinfo ratings-23e76-76bd7499b8-w7f9b -c ratings

[그림 4.101] 팝업 - Log - 예시 1

팝업 - Log - 예시 1


2개 이상의 컨테이너가 있는 파드에 경우는 아래 그림처럼 로그를 열람하고 싶은 컨테이너를 선택하여 다른 로그를 볼 수 있다.

[그림 4.102] 팝업 - Log - 컨테이너 선택

팝업 - Log - 컨테이너 선택


참고

위에 그림처럼 사용자가 선택해서 로그를 열람하는 행위는 아래와 같이 kubectl 커맨드를 사용한 것과 동일한 처리이다.

$ kubectl logs -f -n bookinfo ratings-23e76-76bd7499b8-w7f9b -c istio-proxy

그리고 Log 탭에서는 로그 열람을 위해서 다양한 기능을 제공하고 있다.

[그림 4.103] 팝업 - Log - 예시 2

팝업 - Log - 예시 2


  • 로그 스트리밍 버튼

    실시간으로 로그를 출력할 수 있고 이 기능을 활성화 또는 비활성화 처리하는 버튼이 제공된다.

  • 컨테이너 선택 콤보 박스

    열람하고 싶은 컨테이너를 콤보 박스를 통해서 선택할 수 있도록 기능을 제공한다.

  • Word Wrap

    로그를 자동 줄 바꿈 하는 기능을 제공한다.

  • Previous

    활성화 하면 현재 컨테이너가 아닌 이전에 종료된 컨테이너의 로그를 출력한다. 단 이전에 종료된 컨테이너가 쿠버네티스 환경에 존재할 때만 가능하다.

  • Download 버튼

    로그 내용을 파일로 다운로드 한다.

4.8.4 Events

Events 탭에서는 해당 파드에 대한 이벤트만을 스트리밍 방식으로 열람할 수 있는 탭 화면이다. 아래 그림은 BXCP ADM에서 온라인 애플리케이션에 대한 파드 갯수를 +1 처리한 이후에 발생한 이벤트 예시를 보여주고 있다.

[그림 4.104] 팝업 - Events

팝업 - Events


참고

쿠버네티스 이벤트 리소스는 영구적으로 저장되는 데이터가 아니다. 일정 시간이 지나게 되면 조회할 수 없기 때문에 필요한 정보에 경우에는 따로 옮겨놔야 한다.

4.8.5 Terminal

아래는 터미널 환경에서 쿠버네티스 파드 컨테이너로 접속하는 커맨드 예시인데, 이런 기능을 제공하는게 Terminal 탭이다. 이 Terminal 탭 화면은 6.1.22절. “bxcr.common.terminal.allow” 값에 의해서 허용 여부를 조절할 수 있다. 터미널로 접속하는 목적은 주로 애플리케이션을 배포하기 위해서 초반에 리서치를(어떠한 환경변수를 사용할지, 환경변수를 어떻게 사용되는지, 어떤 디렉토리를 기준으로 애플리케이션 소스를 위치시킬지 등) 할 때나 배포된 이후에 애플리케이션의 문제에 대한 디버깅에 주로 사용된다.

[그림 4.105] kubectl 커맨드 사용 예시

kubectl 커맨드 사용 예시


Terminal 탭 화면진입 했을 때 보여지는 화면의 예시이다.

[그림 4.106] 팝업 - Terminal

팝업 - Terminal


아래 그림은 다양한 커맨드를 Terminal 탭에서 입력한 예시를 보여준다.

[그림 4.107] 팝업 - Terminal - 명령어 사용 예시

팝업 - Terminal - 명령어 사용 예시


참고

사용의 편의를 위해서 복사(Ctrl + Insert)붙여넣기(Shift + Insert) 기능을 제공하고 있다.

4.8.6 Metrics

파드 팝업의 마지막 탭은 Metrics탭인데 파드 리소스 기준에 다양한 메트릭 정보를 사용자에게 제공하는 탭 화면이다. 아래 그림을 보면 CPU, MEMORY, NETWORK, WAITING REASON, TERMINATED REASON, RESTART 항목들에 대한 메트릭 정보를 제공하는 것을 알 수 있다.

[그림 4.108] 팝업 - Metrics

팝업 - Metrics


kubectl 커맨드를 사용해서 관련 내용을 조회할 수 있지만 메트릭 정보의 경우에는 UI를 통한 열람이 훨씬 직관적으로 내용을 파악할 수 있기 때문에 kubectl 커맨드를 사용하는 것보다는 UI를 통해 보는 것을 권장한다.

4.9 디플로이먼트

(Administrator) [워크로드 리소스] > [디플로이먼트] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 선택한 클러스터, 네임스페이스를 기준으로 쿠버네티스 디플로이먼트 리소스에 목록을 보여준다.

디플로이먼트 리소스는 주로 MSA 환경에서 사용하는 리소스인데 배포 처리 시 해당 애플리케이션이 컨테이너 내부에서 상태를 가지지 않을때 사용되는데 즉 다른 리소스에 대한 의존성이 낮을 때(이런 성격의 애플리케이션은 Stateless 애플리케이션이라고도 한다) 사용된다. 쿠버네티스 디플로이먼트 리소스의 스펙은 간단하지만 디플로이먼트 스펙이 클러스터에 적용되면 내부적으로는 디플로이먼트, 레플리카셋, 파드 리소스가 반영된다.

쿠버네티스 디플로이먼트 리소스는 공식 문서에서 다음에 일반적인 유스케이스를 가진다고 언급한다.

  • 레플리카셋을 롤아웃 처리하는 디플로이먼트 리소스 생성하면 레플리카셋은 백그라운드에서 파드를 생성한다. 롤아웃 상태를 체크해서 성공 여부를 확인한다.

  • 디플로이먼트의 PodTemplateSpec을 업데이트해서 파드의 새로운 상태를 선언해서 반영하면 새로운 레플리카셋이 만들어진다. 디플로이먼트는 파드를 기존 레플리카셋에서 새로운 레플리카셋으로 트래픽을 제어하며 이동하는 것을 관리한다. 각각의 새로운 레플리카셋은 디플로이먼트의 수정 버전에 따라 업데이트한다.

  • 만약 디플로이먼트의 현재 상태가 안정적이지 않은 경우 디플로이먼트의 이전 버전으로 롤백할 수 있다. 각각에 롤백은 디플로이먼트의 수정 버전에 따라 업데이트 한다.

  • 더 많은 트래픽을 허용하기 위해서 디플로이먼트 리소스에 scale up 처리를 할 수 있다.

  • 디플로이먼트 롤아웃 처리를 일시 중지해서 PodTemplateSpec에 여러 수정 사항을 적용하고, 일시중지 했던 롤아웃을 재개하여 새로운 롤아웃을 시작할 수 있다.

[그림 4.109] 워크로드 리소스 - 디플로이먼트

워크로드 리소스 - 디플로이먼트


참고

BXCP ADM에서 온라인 애플리케이션을 배포 시 디플로이먼트 리소스를 사용해서 처리된다.

디플로이먼트 리소스는 실질적으로 레플리카셋과 파드를 포함하는 리소스이기 때문에 사용자에게 제공할 정보의 양이 아주 많다. 그렇기 때문에 화면에서 이러한 정보를 모두 제공하기에는 한계가 있다. 아래 그림은 디플로이먼트 목록 화면 예시이다.

[그림 4.110] 워크로드 리소스 - 디플로이먼트 - 목록

워크로드 리소스 - 디플로이먼트 - 목록


아래 그림에서 kubectl 커맨드를 사용하여 목록을 열람한 예시인데 위에 그림과 거의 유사한 형태의 결과를 제공한다.

[그림 4.111] kubectl 디플로이먼트 조회

kubectl 디플로이먼트 조회


파드 목록 화면과 동일하게 디플로이먼트 목록 화면에서도 새로운 디플로이먼트 리소스를 생성할 수 있다. [Create Deployment] 버튼을 사용하면 아래 그림처럼 스펙을 입력할 수 있는 팝업창이 열리게 된다. 기본적인 템플릿은 제공이 되는 것을 알 수 있으며 사용자에 편의를 위해 [Download] 버튼을 제공한다. BXCP ADM에서 제공하는 CI/CD 파이프라인을 사용하지 않고 디플로이먼트 리소스를 생성하려면 이 팝업을 사용하여 리소스를 적용할 수 있다.

[그림 4.112] Create Deployment 팝업

Create Deployment 팝업


참고

만약 디플로이먼트 리소스가 BXCP ADM에서 배포한 리소스이면 [디플로이먼트] 메뉴에서 제공하는 화면이나 또는 그 하위 팝업 화면에서 스펙을 수정하는 행위를 해도 그 수정 사항은 적용되지 않는 것을 숙지하고 있어야 한다.

4.9.1 Details

아래 그림 2개는 디플로이먼트 목록 화면에서 1개 리소스를 클릭하여 열리는 Details 탭 화면이다. 예시에 리소스는 BXCP ADM 온라인 애플리케이션으로 배포가 처리되었기 때문에 Name 항목에 해시값이 포함되어 있는 것을 알 수 있다.

디플로이먼트 리소스는 레플리카셋, 파드 리소스를 만들기 때문에 Details 탭에서는 파드 갯수를 조정하는 버튼이 배치된 것이 특징이다.

[그림 4.113] 팝업 - Details - 상단

팝업 - Details - 상단


[그림 4.114] 팝업 - Details - 하단

팝업 - Details - 하단


위 그림 예시의 쿠버네티스 디플로이먼트 리소스 스펙을 보면 kubefed.io/managed: true 레이블이 설정되어 있는데, 이것이 설정된 쿠버네티스 리소스는 스펙을 변경해도 그 변경 사항이 반영되지 않는다.

4.9.2 YAML

YAML 탭은 적용된 디플로이먼트 리소스의 스펙을 YAML 포맷으로 보여주는 탭 화면이다. 스펙을 수정하여 저장하거나 파일로 다운로드 하는 기능을 제공하고 있다.

[그림 4.115] 팝업 - YAML

팝업 - YAML


4.9.3 Replica Sets

Replica Sets 탭은 디플로이먼트 리소스가 생성 시키는 레플리카셋 리소스를 열람할 수 있는 탭 화면이다. 이 화면은 [워크로드 리소스] > [레플리카셋] 메뉴의 화면과 동일한 화면을 사용한다. 조회된 레플리카셋을 클릭하면 레플리카셋 팝업을 열어서 리소스의 상세 현황을 열람할 수 있다.

[그림 4.116] 팝업 - Replica Sets

팝업 - Replica Sets


레플리카셋 리소스는 파드를 관리하기 때문에 아래 그림처럼 파드 갯수를 조정하는 버튼을 제공하고 있는 것을 알 수 있다.

[그림 4.117] 팝업 - Replica Sets - 상세 - 상단

팝업 - Replica Sets - 상세 - 상단


[그림 4.118] 팝업 - Replica Sets - 상세 - 하단

팝업 - Replica Sets - 상세 - 하단


4.9.4 Pods

Pods 탭 화면은 디플로이먼트 리소스가 생성 시키는 파드 리소스를 열람하는 탭 화면이다. 이 화면은 위에서 설명했던 [워크로드 리소스] > [파드] 메뉴의 화면과 동일한 화면이다. 이 Pods 탭 화면도 위에 Replica Sets 탭 화면과 동일하게 조회된 파드를 클릭하면 파드 팝업을 열어서 리소스의 상세 현황을 열람할 수 있다.

[그림 4.119] 팝업 - Pods

팝업 - Pods


4.9.5 Events

Events 탭 화면은 디플로이먼트 리소스를 기준으로 발생하는 쿠버네티스 이벤트 리소스를 스트리밍 방식으로 보여주는 탭 화면이다. 아래 그림은 레플리카 갯수의 조정을 통해서 발생한 이벤트 리소스가 조회된 예시이다.

[그림 4.120] 팝업 - Events

팝업 - Events


4.9.6 Metrics

Metrics 탭 화면은 디플로이먼트 리소스를 기준으로 메트릭 정보를 사용자에게 제공하는 탭 화면이다. 파드 리소스의 메트릭 탭 화면과 유사하지만 레플리카 갯수가 추가로 보이는 것이 다른 점이다.

[그림 4.121] 팝업 - Metrics

팝업 - Metrics


4.10 레플리카셋

(Administrator) [워크로드 리소스] > [레플리카셋] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 선택한 클러스터, 네임스페이스를 기준으로 쿠버네티스 레플리카셋 리소스에 목록을 보여준다.

[그림 4.122] 워크로드 리소스 - 레플리카셋

워크로드 리소스 - 레플리카셋


쿠버네티스 레플리카셋 리소스는 지정된 수의 파드 레플리카가 항상 실행되도록 하는 기능에 리소스인데 관리할 파드를 선정하는 방법은 명시된 셀렉터를 통해서 하게된다. 하지만 레플리카셋 리소스는 일반적으로 직접 생성하는 성격에 리소스가 아니며 주로 디플로이먼트 리소스를 생성하여 쿠버네티스에 의해서 만들어지는 형태가 더 일반적인 사용 사례이다. 아래 그림은 레플리카셋 목록 화면이다.

[그림 4.123] 워크로드 리소스 - 레플리카셋 목록

워크로드 리소스 - 레플리카셋 목록


레플리카셋 목록 화면에서도 새로운 레플리카셋 리소스를 생성할 수 있다. [Create Replica Set] 버튼을 사용하면 아래 그림처럼 스펙을 입력할 수 있는 팝업창이 열리게 된다. 기본적인 템플릿은 제공이 되는 것을 알 수 있으며 사용자에 편의를 위해 [Download] 버튼을 제공한다.

[그림 4.124] Create Replica Set 팝업

Create Replica Set 팝업


4.10.1 Details

레플리카셋 목록 화면에서 1개 리소스를 클릭하면 상세 현황을 제공하는 팝업이 열리는데 아래 그림 2개 예시와 같다. 레플리카셋 리소스는 파드 리소스를 관리하는 소유자 성격이 특징이다. 그래서 아래 그림에 상단에는 파드 리소스 갯수를 조정하는 버튼이 제공되는 것을 알 수 있다.

[그림 4.125] 팝업 - Details - 상단

팝업 - Details - 상단


[그림 4.126] 팝업 - Details - 하단

팝업 - Details - 하단


참고

위에 그림을 보면 레플리카셋 리소스는 디플로이먼트 리소스를 기준으로 쿠버네티스가 생성한 리소스인 것을 알 수 있다.

4.10.2 YAML

앞에서 언급한 Details 탭에서 볼 수 없는 정보를 YAML 탭에서 열람할 수 있다. 아래 그림은 레플리카셋 리소스 스펙을 yaml 포맷으로 제공하는 탭을 볼 수 있다. 이 화면에서는 단순히 yaml 포맷으로 열람만 하는 화면이 아니고 스펙의 수정, 다운로드, 새로고침 등에 기능을 제공하고 있다.

[그림 4.127] 팝업 - YAML

팝업 - YAML


4.10.3 Pods

Pods 탭 화면은 레플리카 리소스가 생성 시키는 파드 리소스를 열람하는 탭 화면이다. 이 화면은 위에서 설명했던 [워크로드 리소스] > [파드] 메뉴의 화면과 동일한 화면이다. 이 Pods 탭 화면도 조회된 파드를 클릭하면 파드 팝업을 열어서 리소스의 상세 현황을 열람할 수 있다.

[그림 4.128] 팝업 - Pods

팝업 - Pods


4.10.4 Events

Events 탭 화면은 레플리카셋 리소스를 기준으로 발생하는 쿠버네티스 이벤트 리소스를 스트리밍 방식으로 보여주는 탭 화면이다. 아래 그림은 레플리카 갯수의 조정을 통해서 발생한 이벤트 리소스가 조회된 예시이다.

[그림 4.129] 팝업 - Events

팝업 - Events


4.10.5 Metrics

Metrics 탭 화면은 레플리카셋 리소스를 기준으로 메트릭 정보를 사용자에게 제공하는 탭 화면이다. 파드 리소스의 메트릭 탭 화면과 유사하지만 레플리카 갯수가 추가로 보이는 것이 다른 점이다.

[그림 4.130] 팝업 - Metrics

팝업 - Metrics


4.11 스테이트풀셋

(Administrator) [워크로드 리소스] > [스테이트풀셋] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 선택한 클러스터, 네임스페이스를 기준으로 쿠버네티스 스테이트풀셋 리소스에 목록을 보여준다.

[그림 4.131] 워크로드 리소스 - 스테이트풀셋

워크로드 리소스 - 스테이트풀셋


스테이트풀셋 리소스는 주로 애플리케이션의 상태를 관리할 때 사용되는 워크로드 리소스이다. 스케일링을 관리하며, 파드들의 순서 및 고유성을 보장한다. 디플로이먼트와 유사하게, 스테이트풀셋은 동일한 컨테이너 스펙을 기반으로 둔 파드들을 관리한다.

하지만 디플로이먼트와는 다르게, 스테이트풀셋은 각 파드의 독자성을 유지한다. 이 파드들은 동일한 스펙으로 생성되었지만, 서로 교체는 불가능하다. 다시 말해, 각각은 재스케줄링 간에도 지속적으로 유지되는 식별자를 가진다.

그래서 스테이트풀셋 리소스는 다음 중 하나 또는 그 이상이 필요한 애플리케이션에 적합하다.

  • 안정된, 고유한 네트워크 식별자

  • 안정된, 지속성을 갖는 스토리지

  • 순차적인, 정상 배포(graceful deployment)와 스케일링

  • 순차적인, 자동 롤링 업데이트

아래 그림은 레플리카셋 목록 화면이다.

[그림 4.132] 워크로드 리소스 - 레플리카셋 목록

워크로드 리소스 - 레플리카셋 목록


스테이트풀셋 목록 화면에서도 새로운 스테이트풀셋 리소스를 생성할 수 있다. [Create Stateful Set] 버튼을 사용하면 아래 그림처럼 스펙을 입력할 수 있는 팝업창이 열리게 된다. 기본적인 템플릿은 제공이 되는 것을 알 수 있으며 사용자에 편의를 위해 [Download] 버튼을 제공한다.

[그림 4.133] Create Stateful Set 팝업

Create Stateful Set 팝업


4.11.1 Details

스테이트풀셋 목록 화면에서 1개 리소스를 클릭하면 상세 현황을 제공하는 팝업이 열리는데 아래 그림 2개 예시와 같다. 스테이트풀셋 리소스 또한 파드 리소스를 관리하는 소유자 성격이 특징이다. 그래서 아래 그림에 상단에는 파드 리소스 갯수를 조정하는 버튼이 제공되는 것을 알 수 있다.

[그림 4.134] 팝업 - Details - 상단

팝업 - Details - 상단


[그림 4.135] 팝업 - Details - 하단

팝업 - Details - 하단


4.11.2 YAML

앞에서 언급한 Details 탭에서 볼 수 없는 정보를 YAML 탭에서 열람할 수 있다. 아래 그림은 스테이트풀셋 리소스 스펙을 yaml 포맷으로 제공하는 탭을 볼 수 있다. 이 화면에서는 단순히 yaml 포맷으로 열람만 하는 화면이 아니고 스펙의 수정, 다운로드, 새로고침 등에 기능을 제공하고 있다.

[그림 4.136] 팝업 - YAML

팝업 - YAML


4.11.3 Pods

Pods 탭 화면은 스테이트풀셋 리소스가 생성 시키는 파드 리소스를 열람하는 탭 화면이다. 이 화면은 위에서 설명했던 [워크로드 리소스] > [파드] 메뉴의 화면과 동일한 화면이다. 이 Pods 탭 화면도 조회된 파드를 클릭하면 파드 팝업을 열어서 리소스의 상세 현황을 열람할 수 있다.

[그림 4.137] 팝업 - Pods

팝업 - Pods


아래 그림 2개를 기준으로 스테이트풀셋 리소스에 의해서 만들어진 파드 리소스에 이름을 보면 기존에 봤던 형태와는 다르게 비교적 읽기 쉬운 형태로 생성된 것을 알 수 있다. 앞에서 언급했듯이 안정된 고유한 네트워크 식별자, 순차적 정상 배포(graceful deployment)와 스케일링 등의 적합성에 알맞다는 의미에 부합한다.

[그림 4.138] 팝업 - Pods - bxcp-ela-elasticsearch-master-0

팝업 - Pods - bxcp-ela-elasticsearch-master-0


[그림 4.139] 팝업 - Pods - bxcp-ela-elasticsearch-master-1

팝업 - Pods - bxcp-ela-elasticsearch-master-1


4.11.4 Events

Events 탭 화면은 스테이트풀셋 리소스를 기준으로 발생하는 쿠버네티스 이벤트 리소스를 스트리밍 방식으로 보여주는 탭 화면이다. 아래 그림은 레플리카 갯수의 조정을 통해서 발생한 이벤트 리소스가 조회된 예시이다.

[그림 4.140] 팝업 - Events

팝업 - Events


4.11.5 Metrics

Metrics 탭 화면은 스테이트풀셋 리소스를 기준으로 메트릭 정보를 사용자에게 제공하는 탭 화면이다.

[그림 4.141] 팝업 - Metrics

팝업 - Metrics


4.12 데몬셋

(Administrator) [워크로드 리소스] > [데몬셋] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 선택한 클러스터, 네임스페이스를 기준으로 쿠버네티스 스테이트풀셋 리소스에 목록을 보여준다.

[그림 4.142] 워크로드 리소스 - 데몬셋

워크로드 리소스 - 데몬셋


데몬셋은 모든(또는 일부) 노드가 파드의 사본을 실행하도록 한다. 노드가 클러스터에 추가되면 파드도 추가된다. 노드가 클러스터에서 제거되면 해당 파드는 가비지(garbage)로 수집된다. 데몬셋을 삭제하면 데몬셋이 생성한 파드들이 정리된다.

데몬셋의 대표적인 용도는 다음과 같다.

  • 모든 노드에서 클러스터 스토리지 데몬 실행

  • 모든 노드에서 로그 수집 데몬 실행

  • 모든 노드에서 노드 모니터링 데몬 실행

아래 그림은 데몬셋 목록 화면이다.

[그림 4.143] 워크로드 리소스 - 데몬셋 목록

워크로드 리소스 - 데몬셋 목록


데몬셋 목록 화면에서도 새로운 데몬셋 리소스를 생성할 수 있다. [Create Daemon Set] 버튼을 사용하면 아래 그림처럼 스펙을 입력할 수 있는 팝업창이 열리게 된다. 기본적인 템플릿은 제공이 되는 것을 알 수 있으며 사용자에 편의를 위해 [Download] 버튼을 제공한다.

[그림 4.144] Create Daemon Set 팝업

Create Daemon Set 팝업


4.12.1 Details

데몬셋 목록 화면에서 1개 리소스를 클릭하면 상세 현황을 제공하는 팝업이 열리는데 아래 그림 2개 예시와 같다. 데몬셋 리소스는 노드 당 1개 파드가 스케줄 되는 특성이 있기 때문에 앞에서 살펴봤던 디플로이먼트나 스테이트풀셋 리소스와는 다르게 파드 갯수 조정을 할 수 없다.

[그림 4.145] 팝업 - Details - 상단

팝업 - Details - 상단


[그림 4.146] 팝업 - Details - 하단

팝업 - Details - 하단


4.12.2 YAML

앞에서 언급한 Details 탭에서 볼 수 없는 정보를 YAML 탭에서 열람할 수 있다. 아래 그림은 데몬셋 리소스 스펙을 yaml 포맷으로 제공하는 탭을 볼 수 있다. 이 화면에서는 단순히 yaml 포맷으로 열람만 하는 화면이 아니고 스펙의 수정, 다운로드, 새로고침 등에 기능을 제공하고 있다.

[그림 4.147] 팝업 - YAML

팝업 - YAML


4.12.3 Pods

Pods 탭 화면은 데몬셋 리소스가 생성 시키는 파드 리소스를 열람하는 탭 화면이다. 이 화면은 위에서 설명했던 [워크로드 리소스] > [파드] 메뉴의 화면과 동일한 화면이다. 이 Pods 탭 화면도 조회된 파드를 클릭하면 파드 팝업을 열어서 리소스의 상세 현황을 열람할 수 있다.

[그림 4.148] 팝업 - Pods

팝업 - Pods


4.12.4 Events

Events 탭 화면은 데몬셋 리소스를 기준으로 발생하는 쿠버네티스 이벤트 리소스를 스트리밍 방식으로 보여주는 탭 화면이다. 아래 그림은 샘플 데몬셋 리소스를 restart 커맨드를 사용하여 발생한 이벤트 리소스가 조회된 예시이다.

$ kubectl rollout restart ds -n bookinfo example

[그림 4.149] 팝업 - Events

팝업 - Events


4.12.5 Metrics

Metrics 탭 화면은 데몬셋 리소스를 기준으로 메트릭 정보를 사용자에게 제공하는 탭 화면이다.

[그림 4.150] 팝업 - Metrics

팝업 - Metrics


4.13 잡

(Administrator) [워크로드 리소스] > [잡] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 선택한 클러스터, 네임스페이스를 기준으로 쿠버네티스 잡 리소스에 목록을 보여준다.

[그림 4.151] 워크로드 리소스 - 잡

워크로드 리소스 - 잡


쿠버네티스 잡 리소스는 하나 이상의 파드를 생성하고 지정된 수의 파드가 성공적으로 종료될 때까지 계속해서 파드의 실행을 재시도 하는 리소스이다.

잡 리소스에 의해서 생성된 파드가 성공적으로 완료되면, 잡 리소스는 성공적으로 완료된 상태가 된다. 그리고 잡 리소스를 삭제하면 잡이 생성한 파드가 정리되며 작업을 일시 중지하면 작업이 다시 재개될 때까지 파드는 삭제된다.

또한 잡 리소스는 원하는 작업을 수행하는 파드를 여러 파드로 나누어 병렬로 실행할 수 있다.

아래 그림은 잡 목록 화면이다.

[그림 4.152] 워크로드 리소스 - 잡 목록

워크로드 리소스 - 잡 목록


아래 yaml 스펙 예시는 잡 리소스를 핸들링 하는 주요 속성에 대한 설명이다.

apiVersion: batch/v1
kind: Job
metadata:
  name: pi-with-ttl
spec:
  ttlSecondsAfterFinished: 100                                                                                         (1)
  suspend: true                                                                                                        (2)
  template:
    spec:
      containers:
      - name: pi
        image: perl:5.34.0
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never

1

ttlSecondsAfterFinished

pi-with-ttl 잡이 완료(Complete 또는 Failed) 상태가 되면 100초 뒤에 자동으로 잡 및 파드 모두 정리된다.(쿠버네티스 1.23 버전부터 stable)

2

suspend

pi-with-ttl 잡을 일시적으로 중지를 원하면 suspend 속성에 true 값으로 업데이트 처리하면 일시중지 된다.

잡 목록 화면에서도 새로운 잡 리소스를 생성할 수 있다. [Create Job] 버튼을 사용하면 아래 그림처럼 스펙을 입력할 수 있는 팝업창이 열리게 된다. 기본적인 템플릿은 제공이 되는 것을 알 수 있으며 사용자에 편의를 위해 [Download] 버튼을 제공한다.

[그림 4.153] Create Job 팝업

Create Job 팝업


4.13.1 YAML

아래 그림은 잡 리소스 스펙을 yaml 포맷으로 제공하는 탭을 볼 수 있다. 이 화면에서는 단순히 yaml 포맷으로 열람만 하는 화면이 아니고 스펙의 수정, 다운로드, 새로고침 등에 기능을 제공하고 있다.

[그림 4.154] 팝업 - YAML

팝업 - YAML


4.13.2 Pods

Pods 탭 화면은 잡 리소스가 생성 시키는 파드 리소스를 열람하는 탭 화면이다. 이 화면은 위에서 설명했던 [워크로드 리소스] > [파드] 메뉴의 화면과 동일한 화면이다. 이 Pods 탭 화면도 조회된 파드를 클릭하면 파드 팝업을 열어서 리소스의 상세 현황을 열람할 수 있다.

[그림 4.155] 팝업 - Pods

팝업 - Pods


4.13.3 Events

Events 탭 화면은 잡 리소스를 기준으로 발생하는 쿠버네티스 이벤트 리소스를 스트리밍 방식으로 보여주는 탭 화면이다. 아래 그림은 샘플 잡 리소스를 생성하자마자 발생한 이벤트 리소스가 조회된 예시이다.

[그림 4.156] 팝업 - Events

팝업 - Events


잡 리소스는 스케줄링을 통해서 실행하는 방법이 없다.(물론 잡 리소스가 실행하는 파드에서 실행하는 컨테이너가 그런 기능이 있으면 가능하다) 그래서 잡 리소스를 스케줄링을 통해서 실행하려면 잡 리소스를 사용하지 말고 크론잡 리소스를 사용해야 한다. 크론잡 리소스에 대한 자세한 설명은 https://kubernetes.io/ko/docs/concepts/workloads/controllers/cron-jobs/ 링크를 참고하여 생성한다.

4.14 서비스

(Administrator) [네트워킹 리소스] > [서비스] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 선택한 클러스터, 네임스페이스를 기준으로 쿠버네티스 서비스 리소스에 목록을 보여준다.

[그림 4.157] 네트워킹 리소스 - 서비스

네트워킹 리소스 - 서비스


쿠버네티스 서비스는 파드 집합에서 실행 중인 애플리케이션을 네트워크 서비스로 노출하는 추상화 리소스이다.

서비스 리소스를 사용하면 서비스 디스커버리 메커니즘을 사용하기 위해 애플리케이션을 수정할 필요가 없다. 쿠버네티스는 파드에게 고유한 IP 주소와 파드 집합에 대한 단일 DNS 명을 부여하고, 그것들 간에 로드밸런스를 수행할 수 있다.

아래 그림은 서비스 목록 화면이다.

[그림 4.158] 네트워킹 리소스 - 서비스 목록

네트워킹 리소스 - 서비스 목록


아래 그림처럼 목록에 레이블 정보를 모두 확인할 수 있는 버튼을(more, less) 제공하고 있다.

[그림 4.159] 네트워킹 리소스 - 서비스 목록 - more, less

네트워킹 리소스 - 서비스 목록 - more, less


쿠버네티스 서비스 리소스의 주요한 역할이 쿠버네티스 네트워크 환경에서 애플리케이션을 서비스를 이용하여 노출하는 기능인데, 일반적인 사용 사례 이외에 아래는 일반적이지 않은 예시이다.

  • 프로덕션 환경에서는 외부 데이터베이스 클러스터를 사용하려고 하지만, 테스트 환경에서는 자체 데이터베이스를 사용한다.

  • 한 서비스에서 다른 네임스페이스 또는 다른 클러스터의 서비스를 지정하려고 한다.

  • 워크로드를 쿠버네티스로 마이그레이션하고 있다. 해당 방식을 평가하는 동안, 쿠버네티스에서는 백엔드의 일부만 실행한다.

참고

위에서 언급한 예시는 셀렉터가 없는 서비스를 생성해야 하는데 셀렉터가 없는 서비스는 트래픽을 전달해야 하는 주소를 모르기 때문에 추가로 엔드포인트 리소스를 생성해서 구체적인 주소를 지정해야만 한다.

서비스 목록 화면에서도 새로운 서비스 리소스를 생성할 수 있다. [Create Service] 버튼을 사용하면 아래 그림처럼 스펙을 입력할 수 있는 팝업창이 열리게 된다. 기본적인 템플릿은 제공이 되는 것을 알 수 있으며 사용자에 편의를 위해 [Download] 버튼을 제공한다.

[그림 4.160] Create Service 팝업

Create Service 팝업


4.14.1 Details

서비스 목록 화면에서 1개 리소스를 클릭하면 상세 현황을 제공하는 팝업이 열리는데 아래 그림과 같다. 서비스 리소스의 핵심 역할은 보통 파드 리소스에 요청을 열결하기 위한 서비스 디스커버리 역할을 하기 때문에 상세 현황의 내용을 보면 그에 대한 정보를 볼 수 있다.

[그림 4.161] 팝업 - Details

팝업 - Details


위에 그림을 기준으로 보면 서비스에 접근하는 포트는 9080으로 접근이 필요하고 이 포트 번호로 외부에서 트래픽이 유입되면 20.0.192.19 혹은 20.0.192.47 주소에 9080 포트번호의 파드로 트래픽이 전달되는 형태가 된다.

4.14.2 YAML

아래 그림은 서비스 리소스 스펙을 yaml 포맷으로 제공하는 탭을 볼 수 있다. 이 화면에서는 단순히 yaml 포맷으로 열람만 하는 화면이 아니고 스펙의 수정, 다운로드, 새로고침 등에 기능을 제공하고 있다.

이미 서비스를 제공하고 있는 쿠버네티스 서비스 리소스의 스펙을 수정하는 행위는 각별히 유의해서 처리한다.

[그림 4.162] 팝업 - YAML

팝업 - YAML


4.14.3 Pods

Pods 탭 화면은 서비스 리소스가 받은 트래픽을 전달하기 위한 파드 리소스를 열람하는 탭 화면이다. 이 화면은 위에서 설명했던 [워크로드 리소스] > [파드] 메뉴의 화면과 동일한 화면이다. 이 Pods 탭 화면도 조회된 파드를 클릭하면 파드 팝업을 열어서 리소스의 상세 현황을 열람할 수 있다.

[그림 4.163] 팝업 - Pods

팝업 - Pods


4.14.4 Events

Events 탭 화면은 서비스 리소스 기준의 이벤트 리소스를 조회하는 화면이다. 하지만 서비스 리소스의 이벤트가 발생한 적이 없기 때문에 그림 예시는 없다.

4.15 스토리지 클래스

(Administrator) [스토리지 리소스] > [스토리지 클래스] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 선택한 클러스터를 기준으로 쿠버네티스 스토리지 클래스 리소스에 목록을 보여준다.

[그림 4.164] 스토리지 리소스 - 스토리지 클래스

스토리지 리소스 - 스토리지 클래스


스토리지 클래스는 관리자가 제공하는 스토리지 클래스를 설명할 수 있는 방법을 제공한다. 풀어서 설명하면 쿠버네티스에서 볼륨을 제공하는 방법을 알고 있는 리소스가 스토리지 클래스이다.

즉 쿠버네티스 퍼시스턴트볼륨 리소스를 동적으로 배분해주는 처리를 한다. 이 리소스가 생성이 되면 업데이트를 할 수 없는 것이 특징이다. 스토리지 클래스는 provisioner 속성을 설정하게 되는데 이 정보를 기준으로 볼륨을 제공하는 처리 방법과 주최가 달라지게 된다. AWS, Azure, vSphere, GCP 등에서 구현한 provisioner가 있으며 쿠버네티스에서 제공하는 라이브러리를 기준으로 구현하면 필요시 구현도 가능하다.

쿠버네티스 클러스터가 베어메탈 환경에서 구성되었다면 NFS 스토리지클래스를 구성해야 하는데 NFS Ganesha server and external provisionerKubernetes NFS Subdir External Provisioner 참고하여 NFS를 활용한 동적 바인딩을 위한 스토리지클래스를 구성할 수 있다.

참고

kubernetes-sigs/sig-storage-lib-external-provisioner 저장소는 외부 프로비저너를 작성하기 위한 라이브러리가 있다. 원하는 프로비저너가 없다면 위에 언급처럼 직접 구현이 필요할 수 있다.

아래 그림은 스토리지 클래스 리소스의 목록이다.

[그림 4.165] 스토리지 리소스 - 스토리지 클래스 목록

스토리지 리소스 - 스토리지 클래스 목록


경고

스토리지 클래스를 정의할 때 이 스토리지 클래스를 사용하는 쿠버네티스 리소스의 스펙에 Affinity 나 Anti-Affinity 설정을 했다면 스토리지 클래스 스펙에 volumeBindingMode 속성의 기본값이 Immediate 값이기 때문에 여러 파드가 동일한 노드에 볼륨을 바인드 하는 문제가 발생 할 수 있으므로 volumeBindingMode 속성은 WaitForFirstConsumer 값으로 설정을 한다.

스토리지 클래스 목록 화면에서도 새로운 스토리지 클래스 리소스를 생성할 수 있다. [Create Storage Class] 버튼을 사용하면 아래 그림처럼 스펙을 입력할 수 있는 팝업창이 열리게 된다. 기본적인 템플릿은 제공이 되는 것을 알 수 있으며 사용자에 편의를 위해 [Download] 버튼을 제공한다.

[그림 4.166] Create Storage Class 팝업

Create Storage Class 팝업


4.15.1 Details

스토리지 클래스 목록 화면에서 1개 리소스를 클릭하면 상세 현황을 제공하는 팝업이 열리는데 아래 그림과 같다. 스토리지 클래스 리소스는 지정한 프로비즈너를 기준으로 동적인 스토리지 할당이 되기 때문에 프로비즈너 속성과 볼륨을 바인딩 하는 유형 속성이 눈여겨 볼 내용이다.

[그림 4.167] 팝업 - Details

팝업 - Details


참고

위에서 언급한 기본 스토리지 클래스를 지정하려면 쿠버네티스 어노테이션을 사용해야 한다. 위에 그림에 예시를 기준으로 보면 default 스토리지 클래스는 기본 스토리지 클래스로 설정되었다. 그 어노테이션은 storageclass.kubernetes.io/is-default-class: 'true' 키-값으로 설정되었다.

4.15.2 YAML

아래 그림은 스토리지 클래스 리소스 스펙을 yaml 포맷으로 제공하는 탭을 볼 수 있다. 이 화면에서는 단순히 yaml 포맷으로 열람만 하는 화면이 아니고 스펙의 수정, 다운로드, 새로고침 등에 기능을 제공하고 있다.

[그림 4.168] 팝업 - YAML

팝업 - YAML


4.16 퍼시스턴트 볼륨

(Administrator) [스토리지 리소스] > [퍼시스턴트 볼륨] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 선택한 클러스터를 기준으로 쿠버네티스 퍼시스턴트 볼륨 리소스에 목록을 보여준다.

[그림 4.169] 스토리지 리소스 - 퍼시스턴트 볼륨

스토리지 리소스 - 퍼시스턴트 볼륨


아래 그림은 퍼시스턴트 볼륨 리소스의 목록이다.

[그림 4.170] 스토리지 리소스 - 퍼시스턴트 볼륨 목록

스토리지 리소스 - 퍼시스턴트 볼륨 목록


참고

퍼시스턴트 볼륨 리소스는 네임스페이스 범위의 리소스가 아닌 클러스터 범위 리소스이기 때문에 스펙에 네임스페이스가 없다.

퍼시스턴트 볼륨 목록 화면에서는 이름, 상태, 용량 항목이 중요한 정보로 볼수 있는데 여기서 상태의 경우에는 여러 종류를 가지게 되며 아래는 그에 대한 설명이다.

  • Available

    아직 클레임에 바인딩되지 않은 사용할 수 있는 리소스

  • Bound

    볼륨이 클레임에 바인딩됨

  • Released

    클레임이 삭제되었지만 클러스터에서 아직 리소스를 반환하지 않음

  • Failed

    볼륨이 자동 반환에 실패함

[그림 4.171] 스토리지 리소스 - 퍼시스턴트 볼륨 목록 - Bound 상태

스토리지 리소스 - 퍼시스턴트 볼륨 목록 - Bound 상태


퍼시스턴트 볼륨 목록 화면에서도 새로운 퍼시스턴트 볼륨 리소스를 생성할 수 있다. [Create Persistent Volume] 버튼을 사용하면 아래 그림처럼 스펙을 입력할 수 있는 팝업창이 열리게 된다. 기본적인 템플릿은 제공이 되는 것을 알 수 있으며 사용자에 편의를 위해 [Download] 버튼을 제공한다.

[그림 4.172] Create Persistent Volume 팝업

Create Persistent Volume 팝업


4.16.1 Details

퍼시스턴트 볼륨 목록 화면에서 1개 리소스를 클릭하면 상세 현황을 제공하는 팝업이 열리는데 아래 그림과 같다. 퍼시스턴트 볼륨 리소스는 용량이 제한된 상태로 파드에서 이용이 가능하지만 리소스에 특성상 클러스터 전체 장애를 일으킬 가능성이 있는 민감한 리소스이다.

[그림 4.173] 팝업 - Details

팝업 - Details


참고

퍼시스턴트 볼륨은 아주 다양한 유형에 스토리지를 사용할 수 있기 때문에 너무 많은 정보를 표현할 수 없는 제약으로 위에 그림에 Details 탭 화면에서는 표시하지 않고 있다. 구체적인 스토리지에 스펙에 열람은 다음에 소개하는 YAML 탭 화면을 이용할 것을 권고한다.

4.16.2 YAML

아래 그림은 퍼시스턴트 볼륨 리소스 스펙을 yaml 포맷으로 제공하는 탭을 볼 수 있다. 이 화면에서는 단순히 yaml 포맷으로 열람만 하는 화면이 아니고 스펙의 수정, 다운로드, 새로고침 등에 기능을 제공하고 있다.

[그림 4.174] 팝업 - YAML

팝업 - YAML


위에 그림을 기준으로 스펙을 살펴보면 다음과 같다.

apiVersion: v1
kind: PersistentVolume
metadata:
  finalizers:
    - kubernetes.io/pv-protection                                                                                      (1)
  labels:
    bankwareglobal.io/storage: bwg-temp-vol
  name: bwg-temp-vol-0
  resourceVersion: '37008512'
spec:
  accessModes:
    - ReadWriteOnce                                                                                                    (2)
  capacity:
    storage: 10Gi                                                                                                      (3)
  claimRef:
    apiVersion: v1
    kind: PersistentVolumeClaim
    name: volume-claim-example-0                                                                                       (4)
    namespace: bookinfo                                                                                                (5)
    resourceVersion: '37000312'
    uid: f1959dea-fae0-4178-a0dd-caefb92d1187
  hostPath:
    path: /tmp/bwg_temp_vol                                                                                            (6)
    type: ''
  persistentVolumeReclaimPolicy: Delete                                                                                (7)
  storageClassName: manual                                                                                             (8)
  volumeMode: Filesystem                                                                                               (9)
status:
  phase: Bound

1

kubernetes.io/pv-protection

쿠버네티스 리소스에는 finalizers 속성이 있는데 리소스를 삭제에 관여하는 정보이다. kubernetes.io/pvc-protection 값이 설정된 리소스는 우발적으로 삭제되는 상황을 막을 수 있다.

2

ReadWriteOnce

하나의 노드에서 해당 볼륨이 읽기-쓰기로 마운트 될 수 있다. ReadWriteOnce 접근 모드에서도 파드가 동일 노드에서 구동되는 경우에는 복수의 파드에서 볼륨에 접근할 수 있다.

3

storage: 10Gi

일반적으로 PV는 특정 저장 용량을 가지는데, 이것은 capacity 속성을 사용하여 설정된다. 스토리지 용량 크기는 설정하거나 요청할 수 있는 유일한 리소스이다. 향후 속성에 IOPS, 처리량 등이 포함될 수 있다.

4

volume-claim-example-0

퍼시스턴트 볼륨 클레임의 이름을 의미한다. 즉 해당 이름으로 퍼시스턴트 볼륨 클레임 리소스가 생성이 필요하다.

5

bookinfo

퍼시스턴트 볼륨 클레임의 네임스페이스를 의미한다.

6

/tmp/bwg_temp_vol

hostPath 속성을 사용해서 노드의 스토리지를 사용한다.

7

Delete

반환 정책을 Delete로 설정했기 때문에 반환 시 삭제된다. 정책은 Delete 이외에 Retain(보존), Recycle(재활용) 등이 있다.

8

manual

manual 스토리지 클래스 이름을 설정한 것은 정적 바인딩을 통해 볼륨 할당을 한다는 의미로 스토리지 클래스 리소스로 어떤 처리를 하지 않겠다는 것이다.

9

Filesystem

Filesystem 모드로 설정 시 볼륨이 파드의 디렉터리에 마운트 된다. 볼륨이 장치에 의해 지원되고 그 장치가 비어 있으면 쿠버네티스는 장치를 처음 마운트하기 전에 장치에 파일시스템을 만든다. 그 외에 Block 모드가 있는데 파일시스템이 없는 블록 장치로 파드에 제공된다. 이 Block 모드는 파드와 볼륨 사이에 파일시스템 계층 없이도 볼륨에 액세스하는 가장 빠른 방법을 파드에 제공하는 데 유용하다. 반면에 파드에서 실행되는 애플리케이션은 원시 블록 장치를 처리하는 방법을 알아야 한다.

참고

반환 정책 중에서 Recycle(재활용)은 더 이상 사용하지 않는다고 쿠버네티스에서 권고하고 있다. 과거 버전의 쿠버네티스에서는 이용할 수 있지만 Recycle 정책 보다는 스토리지 클래스를 통한 동적 바인딩을 사용한다.

4.17 퍼시스턴트 볼륨 클레임

(Administrator) [스토리지 리소스] > [퍼시스턴트 볼륨 클레임] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 선택한 클러스터를 기준으로 쿠버네티스 퍼시스턴트 볼륨 클레임 리소스에 목록을 보여준다.

[그림 4.175] 스토리지 리소스 - 퍼시스턴트 볼륨 클레임

스토리지 리소스 - 퍼시스턴트 볼륨 클레임


아래 그림은 퍼시스턴트 볼륨 클레임 리소스의 목록이다.

[그림 4.176] 스토리지 리소스 - 퍼시스턴트 볼륨 클레임 목록

스토리지 리소스 - 퍼시스턴트 볼륨 클레임 목록


퍼시스턴트 볼륨 목록 화면에서도 새로운 퍼시스턴트 볼륨 클레임 리소스를 생성할 수 있다. [Create Persistent Volume Claim] 버튼을 사용하면 아래 그림처럼 스펙을 입력할 수 있는 팝업창이 열리게 된다. 기본적인 템플릿은 제공이 되는 것을 알 수 있으며 사용자에 편의를 위해 [Download] 버튼을 제공한다.

[그림 4.177] Create Persistent Volume Claim 팝업

Create Persistent Volume Claim 팝업


4.17.1 Details

퍼시스턴트 볼륨 클레임 목록 화면에서 1개 리소스를 클릭하면 상세 현황을 제공하는 팝업이 열리는데 아래 그림과 같다. 퍼시스턴트 볼륨 리소스와 유사한 속성들로 구성된 것을 알 수 있다.

[그림 4.178] 팝업 - Details

팝업 - Details


참고

퍼시스턴트 볼륨 클레임은 볼륨을 요구하는 리소스로 정적인 방식과 동적인 방식으로 나눌 수 있다. 동적인 방식으로 스토리지를 요청한 클레임은 상세 현황에 보이는 Persistent Volume 이름이 무작위 해시값으로 설정된 것이 특징이다.

4.17.2 YAML

아래 그림은 퍼시스턴트 볼륨 클레임 리소스 스펙을 yaml 포맷으로 제공하는 탭을 볼 수 있다. 이 화면에서는 단순히 yaml 포맷으로 열람만 하는 화면이 아니고 스펙의 수정, 다운로드, 새로고침 등에 기능을 제공하고 있다.

[그림 4.179] 팝업 - YAML

팝업 - YAML


YAML 탭 화면은 일관되게 수정, 다운로드, 새로고침 기능을 제공하지만 퍼시스턴트 볼륨 클레임 리소스가 Bound 상태로 변경되고 이 리소스의 수정하여 저장하면 오류가 발생하게 된다. 아래 그림은 스토리지 용량을 변경하고 싶은 어떠한 사용자가 1Gi에서 5Gi 사이즈로 변경후 [Save] 버튼을 눌러 오류가 발생한 예시를 보여준다.

[그림 4.180] 팝업 - YAML - 오류

팝업 - YAML - 오류


4.18 컨피그맵

(Administrator) [컨피그 리소스] > [컨피그맵] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 선택한 클러스터를 기준으로 쿠버네티스 컨피그맵 리소스에 목록을 보여준다.

[그림 4.181] 컨피그 리소스 - 컨피그맵

컨피그 리소스 - 컨피그맵


아래 그림은 컨피그맵 리소스의 목록이다.

[그림 4.182] 컨피그 리소스 - 컨피그맵 목록

컨피그 리소스 - 컨피그맵 목록


애플리케이션 코드와 별도로 구성 데이터를 설정하려면 컨피그맵을 사용하는데 컨피그맵은 키-값 쌍으로 보안을 요구하지 않는 데이터를 저장하는데 사용하는 API 오브젝트이다. 파드는 볼륨에서 환경 변수, 커맨드-라인 인수 또는 구성 파일로 컨피그맵을 사용할 수 있다. 컨피그맵을 사용하면 컨테이너 이미지에서 환경별 구성을 분리하여, 애플리케이션을 쉽게 이식할 수 있다.

컨피그맵의 스펙은 아주 간단한 형태로 구성이 되며 이 컨피그맵 리소스는 광범위하게 사용되기 때문에 위와 같은 상황에서는 사용하길 권장한다.

컨피그맵 목록 화면에서도 새로운 컨피그맵 리소스를 생성할 수 있다. [Create Config Map] 버튼을 사용하면 아래 그림처럼 스펙을 입력할 수 있는 팝업창이 열리게 된다. 기본적인 템플릿은 제공이 되는 것을 알 수 있으며 사용자에 편의를 위해 [Download] 버튼을 제공한다.

[그림 4.183] Create Config Map 팝업

Create Config Map 팝업


4.18.1 Details

컨피그맵 목록 화면에서 1개 리소스를 클릭하면 상세 현황을 제공하는 팝업이 열리는데 아래 그림은 파일명을 키로 정하고 값을 선언한 컨피그맵 리소스에 상세 현황이다.

[그림 4.184] 팝업 - Details - 파일명 키

팝업 - Details - 파일명 키


그리고 아래 그림은 일반적인 키-값 데이터와 파일명-파일내용 데이터 2개를 선언한 예시를 보여준다.

[그림 4.185] 팝업 - Details - 파일명 키, 키-값

팝업 - Details - 파일명 키, 키-값


4.18.2 YAML

아래 그림은 컨피그맵 리소스 스펙을 yaml 포맷으로 제공하는 탭을 볼 수 있다. 이 화면에서는 단순히 yaml 포맷으로 열람만 하는 화면이 아니고 스펙의 수정, 다운로드, 새로고침 등에 기능을 제공하고 있다.

[그림 4.186] 팝업 - YAML

팝업 - YAML


컨피그맵 정보가 변경이 발생하면 사용자는 이 변경된 정보를 다시 읽기 위해서는 해당 컨피그맵을 사용하는 리소스를 재시작 해야한다. 재시작을 하기 위해서는 kubectl 커맨드를 사용하는 방법을 이용하면 되는데 아래 커맨드라인 예시와 같은 형태로 재시작을 할 수 있다.

[그림 4.187] 리소스 유형마다 kubectl 커맨드 예시

# ConfigMap 리소스를 사용하는 Deployment 리소스 재시작
$ kubectl rollout restart deployment -n bookinfo my-deployment

# ConfigMap 리소스를 사용하는 Daemonset 리소스 재시작
$ kubectl rollout restart daemonset -n bookinfo my-daemonset

# ConfigMap 리소스를 사용하는 Statefulset 리소스 재시작
$ kubectl rollout restart statefulset -n bookinfo my-statefulset

# ConfigMap 리소스를 사용하는 Pod 리소스 재시작
$ kubectl rollout restart pod -n bookinfo my-pod


4.19 시크릿

(Administrator) [컨피그 리소스] > [시크릿] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 선택한 클러스터를 기준으로 쿠버네티스 시크릿 리소스에 목록을 보여준다.

[그림 4.188] 컨피그 리소스 - 시크릿

컨피그 리소스 - 시크릿


시크릿은 암호, 토큰 또는 키와 같은 소량의 중요한 데이터를 포함하는 오브젝트이다. 시크릿을 사용하지 않으면 중요한 정보가 파드 명세나 컨테이너 이미지에 포함될 수 있다. 시크릿을 사용한다는 것은 사용자의 기밀 데이터를 애플리케이션 코드에 넣을 필요가 없음을 뜻한다.

시크릿은 컨피그맵과 유사하지만 특별히 보안 유지가 필요한 데이터를 보관하기 위한 것이다. 아래 그림은 시크릿 리소스의 목록이다.

[그림 4.189] 컨피그 리소스 - 시크릿 목록

컨피그 리소스 - 시크릿 목록


참고

개별 시크릿의 크기는 1 MiB로 제한된다. 이는 API 서버 및 kubelet 메모리를 고갈시킬 수 있는 매우 큰 시크릿의 생성을 방지하기 위함이다. 그러나 작은 크기의 시크릿을 많이 만드는 것도 메모리를 고갈시킬 수 있다. 그래서 쿠버네티스에서는 리소스 쿼터를 사용하여 한 네임스페이스의 시크릿 (또는 다른 리소스) 수를 제한할 수 있다.

시크릿 리소스에는 다양한 유형이 있는데 쿠버네티스에서 사전 정의된 유형과(빌트인이라 칭함) 사용자 정의 유형이 있다. 빌트인 타입은 Opaque, kubernetes.io/service-account-token, kubernetes.io/basic-auth 등에 종류가 있다. 자세한 사항은 https://kubernetes.io/ko/docs/concepts/configuration/secret/#secret-types 참고하길 권고한다.

컨피그맵 리소스와 유사한 사용 방법을 가지는 시크릿 리소스는 아래과 같이 크게 세 가지의 일반적인 사용 방법이 있다.

  • 컨테이너에 마운트된 볼륨 안에서 파일로(예: 인증서) 마운트 해서 사용하는 방법

  • 컨테이너에 애플리케이션이 읽는 환경 변수로(예: 비밀번호) 사용하는 방법

  • 파드의 이미지를 pull 처리 시 저장소에서 요구하는 인증이 필요할 때 kubelet이 사용하는 방법

시크릿 목록 화면에서도 새로운 시크릿 리소스를 생성할 수 있다. [Create Secret] 버튼을 사용하면 아래 그림처럼 스펙을 입력할 수 있는 팝업창이 열리게 된다. 기본적인 템플릿은 제공이 되는 것을 알 수 있으며 사용자에 편의를 위해 [Download] 버튼을 제공한다.

[그림 4.190] Create Secret 팝업

Create Secret 팝업


4.19.1 Details

시크릿 목록 화면에서 1개 리소스를 클릭하면 상세 현황을 제공하는 팝업이 열리는데 아래 그림은 일반적으로 사용하는 Opaque 타입에 시크릿 리소스에 상세 현황이다.

[그림 4.191] 팝업 - Details - 예시 1

팝업 - Details - 예시 1


가급적 BXCP ADM에서 제공하는 화면을 사용해서 시크릿 리소스를 열람하는 것을 권장한다. 그 이유는 시크릿 리소스는 기본적으로 base64 인코딩이 처리된 상태로 사용자에게 데이터를 보여주고 있기 때문이다. 위에 그림에 시크릿 리소스는 kubectl 커맨드를 사용하여 확인하려면 다음과 같은 과정을 거쳐야 데이터를 열람할 수 있다.

$ kubectl get secret -n bookinfo pythonapp
NAME        TYPE     DATA   AGE
pythonapp   Opaque   2      149d

$ kubectl get secret -n bookinfo pythonapp -o yaml
apiVersion: v1
data:
  password: YndnMTIzJFY=
  username: YndndXNlcg==
kind: Secret
metadata:
  creationTimestamp: "2022-11-15T01:03:02Z"
  name: pythonapp
  namespace: bookinfo
  resourceVersion: "2146461"
  uid: a5faa86f-e9af-4d08-bceb-71214686e758
type: Opaque

$ echo 'YndndXNlcg==' | base64 -d
bwguser%
			

그리고 아래 그림은 인증서 파일과 토큰 등을 저장한 시크릿 리소스 상세 현황 예시이다.

[그림 4.192] 팝업 - Details - 예시 2

팝업 - Details - 예시 2


4.19.2 YAML

아래 그림은 시크릿 리소스 스펙을 yaml 포맷으로 제공하는 탭을 볼 수 있다. 이 화면에서는 단순히 yaml 포맷으로 열람만 하는 화면이 아니고 스펙의 수정, 다운로드, 새로고침 등에 기능을 제공하고 있다.

[그림 4.193] 팝업 - YAML

팝업 - YAML


참고

시크릿 리소스의 스펙이 변경이 일어나면 이를 사용하는 다른 리소스들은 스펙의 변경을 알지 못 한다. 그렇기 때문에 위에 컨피그맵 리소스 설명에서 언급한 재시작 커맨드를 통해서 변경된 시크릿 리소스 스펙으로 다시 읽을 수 있도록 유도해야 한다.

4.20 노드

(Administrator) [시스템 리소스] > [노드] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 선택한 클러스터를 기준으로 쿠버네티스 노드 리소스에 목록을 보여준다.

[그림 4.194] 시스템 리소스 - 노드

시스템 리소스 - 노드


쿠버네티스 노드는 일반적으로 파드가 스케줄 처리되어 서비스를 제공하는 환경을 지칭한다. 역할에 따라서 컨트롤플레인, 워커노드로 나누어 볼 수 있으며, 쿠버네티스 클러스터에 따라서 이 노드 리소스는 가상 혹은 물리 머신일 수 있다.

[그림 4.195] 시스템 리소스 - 노드 목록

시스템 리소스 - 노드 목록


노드 리소스에는 파드 리소스들이 스케줄링 되어서 배치가 되는데, 만약 유지보수가(커널 업그레이드, 패치, 하드웨어 펌웨어 패치 등) 필요한 특정 노드가 있을때는 파드 리소스를 지정한 노드에서 배출하는(drain) 처리를 할 수 있다. 우선 이러한 작업을 하려면 다른 요청에 의해서 파드가 스케줄링 되지 않게 하는게 중요하다. 아래 커맨드 예시는 노드 리소스를 조회하여 파드의 스케줄링 처리를 중단하는 커맨드를 사용한 예시이다.

$ kubectl get node
NAME                                            STATUS   ROLES                  AGE    VERSION
ip-10-0-7-225.ap-northeast-2.compute.internal   Ready    control-plane,master   156d   v1.23.12
ip-10-0-7-237.ap-northeast-2.compute.internal   Ready    <none>                 156d   v1.23.12

$ kubectl cordon ip-10-0-7-237.ap-northeast-2.compute.internal
node/ip-10-0-7-237.ap-northeast-2.compute.internal cordoned

위에서 사용한 커맨드는 실행이 완료되면 노드 리소스가 SchedulingDisabled 상태로 변경이 된다. 중단한 파드 스케줄링을 다시 가동하는 커맨드는 아래와 같다.

$ kubectl uncordon ip-10-0-7-237.ap-northeast-2.compute.internal
node/ip-10-0-7-237.ap-northeast-2.compute.internal uncordoned

파드 스케줄링을 중단하고 그 중단 처리가 올바르게 작동하는(예: 스케일 업 처리를 통해서 더 이상 해당 노드에 스케줄 되지 않는 것을 확인) 것을 확인 했다면 해당 노드에서 파드를 다른 노드로 옮기기 위한 작업을 진행할 수 있다. drain 처리는 다음과 같은 경우에 파드 리소스를 옮길 수 없다.

  • 노드에 쿠버네티스 데몬셋 리소스에 의해서 만들어진 파드가 스케줄된 상태

  • kubelet에 의해서 생성한 static 파드가 스케줄된 상태

참고

더 구체적인 내용은 https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/ 링크를 확인한다.

그리고 아래는 데몬셋으로 스케줄된 파드는 무시하고 drain 처리를 진행하는 커맨드이다.

$ kubectl drain --ignore-daemonsets ip-10-0-7-237.ap-northeast-2.compute.internal

4.20.1 Details

노드 목록 화면에서 1개 리소스를 클릭하면 상세 현황을 제공하는 팝업이 열리는데 아래 그림이 노드 상세 현황이다.

Details - 상단 탭 화면은 주로 노드가 배치된 머신에 정보를 표시하고 있는데 네트워크 주소 정보, OS 정보 등이 있다.

[그림 4.196] 팝업 - Details - 상단

팝업 - Details - 상단


Details - 하단 탭 화면은 노드의 컨디션과 노드에 저장된 컨테이너 이미지 목록을 볼 수 있다. 노드 컨디션은 관리자가 확인할 중요한 정보인데 다음을 참고한다.

  • Ready

    노드가 상태 양호하며 파드를 수용할 준비가 되어 있는 경우 True, 노드의 상태가 불량하여 파드를 수용하지 못할 경우 False, 그리고 노드 컨트롤러가 마지막 node-monitor-grace-period (기본값 40 기간 동안 노드로부터 응답을 받지 못한 경우) Unknown

  • DiskPressure

    디스크 사이즈 상에 압박이 있는 경우, 즉 디스크 용량이 넉넉하지 않은 경우 True, 반대의 경우 False

  • MemoryPressure

    노드 메모리 상에 압박이 있는 경우, 즉 노드 메모리가 넉넉하지 않은 경우 True, 반대의 경우 False

  • PIDPressure

    프로세스 상에 압박이 있는 경우, 즉 노드 상에 많은 프로세스들이 존재하는 경우 True, 반대의 경우 False

  • NetworkUnavailable

    노드에 대해 네트워크가 올바르게 구성되지 않은 경우 True, 반대의 경우 False

[그림 4.197] 팝업 - Details - 하단

팝업 - Details - 하단


그리고 위에 그림에 Images 항목에 나오는 정보는 이 노드에 캐시된 컨테이너 이미지에 목록 정보이다. 워크로드 리소스에 스펙에서 이미지를 가져오는 정책을 결정하는 imagePullPolicy 속성과도 연관이 있다. IfNotPresent 정책을 사용한 리소스가 이 노드에 스케줄링 될 때에 컨테이너 이미지 정보를 노드에 캐시된 이미지 정보를 찾아보게 된다.

4.20.2 YAML

아래 그림은 노드 리소스 스펙을 yaml 포맷으로 제공하는 탭을 볼 수 있다. 이 화면에서는 단순히 yaml 포맷으로 열람만 하는 화면이 아니고 스펙의 수정, 다운로드, 새로고침 등에 기능을 제공하고 있다. 하지만 노드 리소스를 수정, 삭제하는 처리는 매우 위험한 상황으로 전개될 수 있으므로 신중하게 처리한다. 참고로 kubectl drain 명령어도 고려할 것을 권고한다.

[그림 4.198] 팝업 - YAML

팝업 - YAML


4.20.3 Pods

Pods 탭 화면은 노드 리소스에서 스케줄된 파드 리소스를 열람하는 탭 화면이다. 이 화면은 이전에 설명했던 [워크로드 리소스] > [파드] 메뉴의 화면과 동일한 화면이며 조회된 파드를 클릭하면 파드 팝업을 열어서 리소스의 상세 현황을 열람할 수 있다.

[그림 4.199] 팝업 - Pods

팝업 - Pods


4.20.4 Metrics

Metrics 탭 화면은 노드 리소스를 기준으로 메트릭 정보를 사용자에게 제공하는 탭 화면이다.

[그림 4.200] 팝업 - Metrics

팝업 - Metrics


참고

노드 메트릭 정보는 관리자에게는 많이 사용하게 되는 주요 화면 중에 하나이다.

4.21 네임스페이스

(Administrator) [시스템 리소스] > [네임스페이스] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 선택한 클러스터를 기준으로 쿠버네티스 네임스페이스 리소스에 목록을 보여준다. 이 네임스페이스 리소스는 위에서 설명했던 BXCP ADM 프로젝트와 연관 있는 리소스이다. 하지만 BXCP ADM에서 프로젝트를 생성하지 않아도 네임스페이스는 만들 수 있기 때문에 BXCP ADM에서 프로젝트를 통해 만들어진 네임스페이스 리소스는 레이블을 사용해서 구분할 수 있다.

[그림 4.201] 시스템 리소스 - 네임스페이스

시스템 리소스 - 네임스페이스


쿠버네티스에서 네임스페이스는 단일 클러스터 내에서의 리소스 그룹 격리 메커니즘을 제공한다. 리소스의 이름은 네임스페이스 내에서 유일해야 하며, 네임스페이스 간에서 유일할 필요는 없다. 네임스페이스 기반 범위는 Namespaced 쿠버네티스 리소스 오브젝트에만(예: 디플로이먼트, 서비스 등) 적용 가능하며 클러스터 범위의 오브젝트 (예: 스토리지클래스, 노드, 퍼시스턴트볼륨 등) 에는 적용 불가능하다. 아래 그림은 네임스페이스 리소스의 목록이다.

[그림 4.202] 시스템 리소스 - 네임스페이스 목록

시스템 리소스 - 네임스페이스 목록


네임스페이스 목록 화면에서도 새로운 네임스페이스 리소스를 생성할 수 있다. [Create Namespace] 버튼을 사용하면 아래 그림처럼 스펙을 입력할 수 있는 팝업창이 열리게 된다. 기본적인 템플릿은 제공이 되는 것을 알 수 있으며 사용자에 편의를 위해 [Download] 버튼을 제공한다.

[그림 4.203] Create Namespace 팝업

Create Namespace 팝업


4.21.1 Details

네임스페이스 목록 화면에서 1개 리소스를 클릭하면 상세 현황을 제공하는 팝업이 열리는데 아래 그림이 네임스페이스 상세 현황이다.

[그림 4.204] 팝업 - Details

팝업 - Details


네임스페이스 리소스의 스펙은 내용이 없기 때문에 상세 현황에서 특별한 항목은 없지만 예시 그림에서 눈여겨 볼만한 것은 레이블이다. BXCP ADM은 Istio와 kubefed를 사용하고 있는데 레이블 정보에 보면 그것을 사용하기 위한 설정이 된 것을 알 수 있다.

4.21.2 YAML

아래 그림은 네임스페이스 리소스 스펙을 yaml 포맷으로 제공하는 탭을 볼 수 있다. 이 화면에서는 단순히 yaml 포맷으로 열람만 하는 화면이 아니고 스펙의 수정, 다운로드, 새로고침 등에 기능을 제공하고 있다.

[그림 4.205] 팝업 - YAML

팝업 - YAML


4.21.3 Metrics

Metrics 탭 화면은 네임스페이스 리소스를 기준으로 메트릭 정보를 사용자에게 제공하는 탭 화면이다.

[그림 4.206] 팝업 - Metrics

팝업 - Metrics


4.22 이벤트 리소스

이벤트 리소스는 BXCP ADM에서 관리하는 쿠버네티스 클러스터에서 발생하는 이벤트 리소스 정보를 제공한다. (Administrator) [이벤트 리소스] 메뉴를 클릭하면 바로 쿠버네티스 이벤트 정보를 열람할 수 있다. 쿠버네티스를 사용시 다양한 문제를 확인하는 과정에서 이벤트 리소스를 확인하는 것도 그 과정에(파드 로그/터미널, 메트릭 확인, kubectl describe 커맨드 등) 하나이기 때문에 유지보수에서는 눈여겨볼 리소스이다. 아래 그림은 [이벤트 리소스] 메뉴를 사용해서 화면으로 진입한 예시이다.

[그림 4.207] 이벤트 리소스 메뉴

이벤트 리소스 메뉴


4.22.1 이벤트 리소스 화면

이벤트 리소스 메뉴를 통해서 화면으로 이동하면 기본 선택된 클러스터를 기준으로 발생하는 이벤트가 바로 조회가 된다. 아래 그림이 이벤트 리소스 메뉴에 화면이고, 따로 상세 화면이나 팝업은 제공되지 않는다.

[그림 4.208] 이벤트 리소스

이벤트 리소스


이 화면에서 제공하는 정보는 kubectl 커맨드를 이용하여 쿠버네티스 이벤트 리소스를 조회하는 것과 유사하지만 스트리밍 방식을 사용하기 때문에 더욱 편의성이 높다. 아래는 kubectl 커맨드를 사용한 이벤트 리소스를 확인하는 예시이다.

$ kubectl get event -n kube-federation-system
LAST SEEN   TYPE      REASON                          OBJECT                  MESSAGE
2m12s       Warning   RetrievingClusterHealthFailed   kubefedcluster/member   Failed to retrieve health of the cluster: Get "https://tf-k8s-lb-member-host-20cf168afc237f56.elb.ap-northeast-2.amazonaws.com:6443/healthz?timeout=3s": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
17m         Warning   RetrievingClusterHealthFailed   kubefedcluster/member   Failed to retrieve health of the cluster: Get "https://tf-k8s-lb-member-host-20cf168afc237f56.elb.ap-northeast-2.amazonaws.com:6443/healthz?timeout=3s": context deadline exceeded
22m         Warning   RetrievingClusterHealthFailed   kubefedcluster/member   Failed to retrieve health of the cluster: Get "https://tf-k8s-lb-member-host-20cf168afc237f56.elb.ap-northeast-2.amazonaws.com:6443/healthz?timeout=3s": dial tcp 43.200.121.14:6443: i/o timeout
			

4.22.2 이벤트 리소스 클러스터 선택 콤보

이벤트 리소스는 클러스터별로 제공되기 때문에 다른 클러스터에 이벤트 리소스를 열람하기 위해서는 아래 그림과 같이 클러스터 정보를 변경하는 콤보 박스를 통해서 처리할 수 있다.

[그림 4.209] 이벤트 리소스 - 클러스터 필터

이벤트 리소스 - 클러스터 필터


4.22.3 이벤트 리소스 키워드 필터링

클러스터에서 발생하는 모든 이벤트를 스트리밍으로 보여주는 화면이기 때문에 불필요한 정보를 보기 싫다면 키워드를 사용해서 필터링 할 수 있다. 필터링 가능한 항목은 Kind, Namespace, Name, Message, Type 총 5가지가 있다.

[그림 4.210] 이벤트 리소스 - 키워드 필터

이벤트 리소스 - 키워드 필터


아래 그림은 Kind 항목에 ReplicaSet 키워드를 필터링한 결과를 나타낸다.

[그림 4.211] 이벤트 리소스 - 키워드(Kind) 필터 - ReplicaSet

이벤트 리소스 - 키워드(Kind) 필터 - ReplicaSet


4.22.4 이벤트 리소스 스트리밍 제어

이벤트 리소스 화면에 진입하면 자동으로 스트리밍이 활성화 상태로 보여지기 때문에 이벤트가 많으면 너무 빨리 넘어가거나 발생한 이벤트에 메세지를 복사할 경우가 발생할 때 불편할수 있다. 그래서 버튼을 통해서 스트리밍 상태를 제어할 수 있다. 아래는 버튼을 통해서 일시 정지한 예시이다.

[그림 4.212] 이벤트 스트리밍 일시 정지

이벤트 스트리밍 일시 정지


4.23 모니터링

모니터링은 BXCP ADM과 연동된 다양한 모니터링 솔루션을 제공하는 메뉴이다.

[모니터링] 메뉴를 클릭하면 화면에 진입하는 형태는 아니고 클러스터별 모니터링 솔루션을 선택할 수 있는 팝업 화면이 나타난다.

4.23.1 모니터링 선택 팝업

위에서 언급한 팝업은 아래 그림과 같은 형태로 제공이 된다.

[그림 4.213] 모니터링 선택 팝업

모니터링 선택 팝업


모니터링 선택 팝업에서는 클러스터, 상태 정보를 표시하고 있고 서비스 추적, 로그, 서비스 메쉬 3개 솔루션을 선택할 수 있다.

4.23.2 서비스 추적

서비스 추적을 클릭하면 분산 서비스간 트랜잭션을 추적하는 오프소스인 Jaeger에서 제공하는 화면을 새 탭으로 열어준다.

[그림 4.214] 서비스 추적(Jaeger)

서비스 추적(Jaeger)


4.23.3 로그

로그를 클릭하면 쿠버네티스 환경에서 발생하는 로그 데이터를 시각화하기 위한 오픈소스인 Kibana 화면을 새 탭으로 열어준다.

[그림 4.215] 로그(Kibana)

로그(Kibana)


4.23.4 서비스 메쉬

서비스 메쉬를 클릭하면 Istio 에서 제공하는 Kiali 화면을 새 탭으로 열어준다.

[그림 4.216] 로그(Kibana)

로그(Kibana)


4.24 감사 로그

(Administrator) [로그] > [감사 로그] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 BXCP ADM에서 발생하는 다양한 액션의 로그 목록을 보여준다.

[그림 4.217] 로그 - 감사 로그

로그 - 감사 로그


감사 로그는 BXCP ADM에서 발생한 이벤트의 기록을 목적으로 하기 때문에 다양한 정보를 저장하고 있다. 아래 그림은 BXCP ADM 내에서 발생한 감사 로그의 목록이다. BXCP ADM 사용중에 문의사항, 오류의 발생, 특이현상 등에 요건이 발생하면 감사 로그나 밑에서 설명할 에러 로그를 통해서 요건에 답변을 위해 정보를 찾을 수 있는 화면이다.

[그림 4.218] 로그 - 감사 로그 - 목록

로그 - 감사 로그 - 목록


4.24.1 기본 설정

아래 그림은 감사 로그 목록에서 1개 로그를 클릭 시 열리는 팝업 화면이다. 화면에 표기되는 정보는 BXCP ADM에서 제공하는 API 사용시 발생하는 정보를 제공한다. 목록에서 보여주는 항목과 추가로 요청 URL 항목을 보여주고 있다.

[그림 4.219] 팝업 - 기본 설정

팝업 - 기본 설정


4.24.2 로그 메시지

아래는 로그 메시지 탭 화면으로 이동한 그림인데 여기서는 리소스 및 액션을 기준으로 응답 데이터를 보여주는 화면이다.

[그림 4.220] 팝업 - 로그 메시지

팝업 - 로그 메시지


4.25 에러 로그

(Administrator) [로그] > [에러 로그] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 BXCP ADM에서 발생하는 에러 로그 목록을 보여준다. 위에서 언급한 감사 로그와 거의 유사한 형태로 구성된 것을 알 수 있다.

[그림 4.221] 로그 - 에러 로그

로그 - 에러 로그


에러 로그는 BXCP ADM 내부에서 발생하는 오류를 열람하여 잠재적인 문제나 현재 발생하는 문제 등을 관리자가 인지하고 해결하기 위한 실마리를 제공하는 것이 주요한 목적이다. 아래 그림은 BXCP ADM 내에서 발생한 에러 로그의 목록이다.

[그림 4.222] 로그 - 에러 로그 - 목록

로그 - 에러 로그 - 목록


참고

리소스 항목은 액션에 관련된 화면(메뉴)이며 화면을 통한 처리가 아니면 공백으로 표기된다.

4.25.1 기본 설정

아래 그림은 에러 로그 목록에서 1개 로그를 클릭 시 열리는 팝업 화면이다. 화면에 표기되는 정보는 BXCP ADM에서 제공하는 API 사용시 발생하는 에러 로그 정보를 제공한다. 목록에서 보여주는 항목과 추가로 요청 URL 항목을 보여주고 있다.

[그림 4.223] 팝업 - 기본 설정

팝업 - 기본 설정


4.25.2 로그 메시지

아래는 로그 메시지 탭 화면으로 이동한 그림인데 여기서는 리소스 및 액션을 기준으로 요청 데이터와 응답 데이터를 보여주는 화면이다.

[그림 4.224] 팝업 - 로그 메시지

팝업 - 로그 메시지


에러 로그 화면은 BXCP ADM에서 어떤 화면에 기능을 사용하는 과정에서 발생하는 에러 메시지를 이용해서 로그를 검색할 수 있다. 아래 그림은 애플리케이션 스펙을 수정하고 저장 버튼을 클릭 시 발생한 에러를 나타내고 있다. 슬라이딩 에러 메시지 팝업 화면은 상세 메시지를 제공하는 메시지도 있으니 펼쳐서 구체적인 내용을 확인 할 수 있다.

[그림 4.225] 애플리케이션 수정 에러

애플리케이션 수정 에러


아래 그림은 에러 메시지에는 [복사] 버튼을() 제공하는데 이것을 사용해서 에러 메시지를 복사할 수 있다.

[그림 4.226] 에러 메시지 복사

에러 메시지 복사


위에서 복사를 하고 텍스트 에디터를 열어서 붙여넣기 하면 아래 그림처럼 에러 메시지가 만들어진 원천 데이터를 JSON 포맷 문자열로 확인할 수 있다.

[그림 4.227] 에러 메시지 JSON 데이터

에러 메시지 JSON 데이터


위에 그림에 나온 guid 항목에 값을 복사하고 에러 로그 화면으로 이동한다. 아래 그림은 화면 상단에 검색 필터를 이용해서 에러 아이디를 선택하고 복사했던 값을 붙여넣기 해서 에러 로그를 검색한 결과를 나타낸다. 애플리케이션 스펙을 수정하는 화면에서(리소스: 애플리케이션 관리) 발생한 에러 로그인지 확인할 수 있다.

[그림 4.228] 에러 메시지 guid 검색 결과

에러 메시지 guid 검색 결과


검색한 결과인 에러 로그를 클릭하고 로그 메시지 탭 화면으로 이동하여 상세한 내용을 확인하면 자바 스택트레이스 정보를 열람 할 수 있다.

[그림 4.229] 에러 메시지 - 로그 메시지

에러 메시지 - 로그 메시지


참고

수정을 요청한 데이터의 확인은 감사 로그 화면을 이동해서 확인해야 한다.

4.26 헬름 관리

(Administrator) [구성관리] > [헬름 관리] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 BXCP ADM에서 관리하는 헬름 목록을 보여주게 된다.

[그림 4.230] 구성관리 - 헬름 관리

구성관리 - 헬름 관리


BXCP ADM에 헬름 관리 화면의 주된 목적은 헬름 차트를 등록하는 것이다. 이 화면은 헬름 차트를 등록하거나, 삭제하는 기능만을 제공하며 이전에 살펴봤던 시스템 컴포넌트 화면에서 등록한 헬름 차트를 이용하게 된다. 아래는 헬름 관리 화면에 헬름 차트 목록을 볼 수 있다.

[그림 4.231] 구성관리 - 헬름 관리 - 목록

구성관리 - 헬름 관리 - 목록


참고

조회된 그림 예시에 표기되는 항목들은 특별한 내용은 없고 차트에 간략한 정보만 표기하고 있다.

목록에 메뉴를() 클릭하면 [헬름 삭제] 메뉴를 사용할 수 있다. 클릭하면 아래 그림처럼 사용자에게 확인을 받은 후에 삭제가 이루어진다.

[그림 4.232] 구성관리 - 헬름 관리 - 헬름 삭제

구성관리 - 헬름 관리 - 헬름 삭제


헬름 관리 목록 화면에서도 새로운 헬름 차트를 추가할 수 있다. [헬름 추가] 버튼을 사용하면 아래 그림처럼 헬름 차트를 압축한 파일을 업로드 할 수 있는 팝업이 열린다. 화면에 표시된 대로 확장자가 .tar.gz나 .tgz인 압축파일을 드래그 앤 드롭 해야 한다.

[그림 4.233] 구성관리 - 헬름 관리 - 목록

구성관리 - 헬름 관리 - 목록


설치하고자 하는 차트는 주로 인터넷 브라우징을 통해서 검색을 하고 로컬 환경에 다운로드 하고 압축하여 추가를 할 수 있다. 압축한 헬름 차트 바이너리를 위에 그림을 기준으로 업로드 하면 아래 그림처럼 Harbor 레지스트리에서 업로드가 성공한 헬름 차트가 조회가 된다.

이전에 설명했지만 이렇게 등록한 헬름 차트는 4.6절. “시스템 컴포넌트”를 참고하여 BXCP ADM에서 사용할 수 있으니 필요시 참고한다.

[그림 4.234] Harbor 레지스트리 - bxcp-system-common 프로젝트

Harbor 레지스트리 - bxcp-system-common 프로젝트


4.26.1 헬름 상세

아래 그림은 헬름 관리 목록 화면에서 1개의 헬름 차트 정보를 클릭 시 열리는 팝업 화면이다. 상세 현황에서도 버전별로 목록 형태로 정보를 제공하고 있다. 각각의 버전별로 삭제를 할 수 있는 것이 특징이다.

[그림 4.235] 헬름버전 목록

헬름버전 목록


4.26.2 헬름버전 - SUMMARY

아래 그림은 헬름 상세 화면에서 조회된 버전별 목록에서 1개의 버전 정보를 클릭 시 열리는 팝업 화면이다. 추가한 헬름에 선택한 버전의 구체적인 SUMMARY 정보를 보여주고 있으며, 이 상세 화면에서는 따로 수정하거나 삭제하는 기능은 없고 정보 열람만 가능하다.

[그림 4.236] 헬름버전 - SUMMARY

헬름버전 - SUMMARY


4.26.3 헬름버전 - VALUES

아래 그림은 헬름 상세 화면에서 조회된 버전별 목록에서 1개의 버전 정보를 클릭 시 열리는 팝업에 VALUES 탭 화면이다. 추가한 헬름에 선택한 버전의 구체적인 VALUES 정보를 보여주고 있으며, 이 상세 화면 또한 수정하거나 삭제하는 기능은 없고 정보 열람만 가능하다.

[그림 4.237] 헬름버전 - VALUES

헬름버전 - VALUES


4.27 토큰 관리

(Administrator) [구성관리] > [토큰 관리] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 BXCP ADM에서 발급된 토큰들의 목록을 보여준다. 토큰 데이터는 일반적으로 BXCP ADM에서 자동 생성하는 경우가 많다.

[그림 4.238] 구성관리 - 토큰 관리

구성관리 - 토큰 관리


BXCP ADM 토큰은 BXCP ADM에서 제공하는 API를 이용하는 과정에서 인증 처리에 사용되며 BXCP ADM에서 사전 정의된 토큰 타입을 제외하고 이 화면을 통해서 토큰을 생성하면 토큰 타입이 서드파티(Third Party)로 고정되어 저장이 된다. 아래 그림은 토큰 데이터 목록이다.

[그림 4.239] 구성관리 - 토큰 관리 - 목록

구성관리 - 토큰 관리 - 목록


토큰 목록에서는 조회된 토큰 하나에 대해 간략히 추가 액션을 할 수 있습니다. 아래 그림은 메뉴를 클릭하여 추가로 처리할 수 있는 액션을 보여줍니다.

[그림 4.240] 구성관리 - 토큰 관리 - 목록 - 메뉴

구성관리 - 토큰 관리 - 목록 - 메뉴


토큰 관리 목록 화면에서도 새로운 토큰을 추가할 수 있다. [토큰 추가] 버튼을 사용하면 아래 그림처럼 스펙을 입력할 수 있는 팝업창이 열리게 된다. 아래 그림은 특정 사용자 ID를 기준에 만료가 없는 토큰을 만들기 위한 팝업 설정이다.

[그림 4.241] 토큰 추가 팝업 - 만료 일시 - 무제한

토큰 추가 팝업 - 만료 일시 - 무제한


그리고 아래 그림은 위와는 다르게 특정 사용자 ID를 기준으로 만료가 있는 토큰을 만들기 위한 팝업 설정 예시이다.

[그림 4.242] 토큰 추가 팝업 - 만료 일시 - 기간 제한

토큰 추가 팝업 - 만료 일시 - 기간 제한


4.27.1 토큰 조회/변경

토큰 목록에서 1개 행을 클릭하면 토큰 상세 정보를 열람할 수 있는 팝업이 열린다. 아래 그림은 생성된 토큰에 대한 상세 정보를 제공하는 팝업 화면이다.

[그림 4.243] 팝업 - 상단(Webhook)

팝업 - 상단(Webhook)


토큰 타입이 웹훅(Webhook)이기 때문에 [구성관리] > [토큰 관리] 메뉴를 통해서 만들어진 토큰이 아닌 것을 알 수 있다. 프로젝트 ID, 애플리케이션 ID 정보가 각각 설정이 되어있으며, 그 밑에는 Access Token 정보도 제공된다. 즉 이 토큰은 Gitlab과 Jenkins간 웹훅 처리에 이용하는 토큰이다.

[그림 4.244] 팝업 - 하단(Webhook)

팝업 - 하단(Webhook)


아래 그림은 관리자 계정으로(sysadmin) BXCP ADM 로그인 처리를 성공 시 만들어지는 토큰의 예시이다. 그렇기 때문에 토큰 타입이 로그인 사용자로 표시가 되는 것을 알 수 있다.

[그림 4.245] 팝업 - 상단(Webhook)

팝업 - 상단(Webhook)


아래 그림에 등록 일시와 위 그림에 만료 일시 정보를 보면 로그인을 통해서 만들어진 토큰의 유효 시간은 60분인 것을 알 수 있다.

[그림 4.246] 팝업 - 하단(Webhook)

팝업 - 하단(Webhook)


4.28 인증 관리

(Administrator) [구성관리] > [인증 관리] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 BXCP ADM에서 관리하는 다양한 인증 정보를 열람할 수 있다.

[그림 4.247] 구성관리 - 인증 관리

구성관리 - 인증 관리


인증 관리에 인증 정보들은 애플리케이션 스펙에서 설정된 배포 리소스를 접근 시 인증에 사용하는 정보이다. 아래 그림은 인증 정보 목록이다.

[그림 4.248] 구성관리 - 인증 관리 - 목록

구성관리 - 인증 관리 - 목록


인증 관리 목록 화면에서도 새로운 인증 정보를 추가할 수 있다. [인증 추가] 버튼을 사용하면 아래 그림처럼 인증 정보를 입력할 수 있는 팝업창이 열리게 된다.

[그림 4.249] 인증 관리 - 인증 추가 - 팝업

인증 관리 - 인증 추가 - 팝업


아래 그림은 인증 정보를 저장할 때에 지정할 수 있는 리소스 유형을 볼 수 있다. 애플리케이션 생성(수정) 팝업 화면에 기본 설정 탭 화면의 배포 리소스 유형과 동일한 유형이다.

[그림 4.250] 인증 추가 - 팝업 - 가용한 리소스 유형

인증 추가 - 팝업 - 가용한 리소스 유형


아래 그림은 인증 정보를 저장할 때에 지정할 수 있는 인증 범위를 볼 수 있다. BXCP ADM 기준으로 인증 데이터가 사용되는 범위를 지정한다.

[그림 4.251] 인증 추가 - 팝업 - 가용한 인증 범위

인증 추가 - 팝업 - 가용한 인증 범위


  • System

    BXCP ADM 전체 범위를 가지는 인증 정보를 저장 시 선택한다.

  • Project

    BXCP ADM 프로젝트 범위의 인증 정보를 저장 시 선택한다. 애플리케이션 배포 리소스의 인증 정보에서 많이 볼 수 있다.

  • Workspace

    BXCP ADM 워크스페이스 범위의 인증 정보를 저장 시 선택한다.

  • Cluster

    BXCP ADM 클러스터 범위의 인증 정보를 저장 시 선택한다.

아래 그림은 인증 정보를 저장할 때에 지정할 수 있는 인증 유형을 볼 수 있다.

[그림 4.252] 인증 추가 - 팝업 - 가용한 인증 유형

인증 추가 - 팝업 - 가용한 인증 유형


4.28.1 인증 상세

조회된 인증 정보 목록에서 1개를 클릭하면 설정된 값을 변경할 수 있는 팝업 화면이 열린다. 아래 그림은 Gitlab 리소스 유형의 인증 정보인데 bookinfo 프로젝트를 범위로 인증에 사용하는 정보인 것을 알 수 있다.

[그림 4.253] 인증 상세

인증 상세


참고

애플리케이션 생성(수정) 팝업 화면을 통해서 만들어지는 인증 정보는 "Auto Created..." 형태의 설명이 자동으로 설정된다.

4.29 메트릭쿼리 관리

(Administrator) [구성관리] > [메트릭쿼리 관리] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 BXCP ADM에서 관리하는 다양한 메트릭 정보를 조회하는 쿼리 정보를 열람할 수 있다.

[그림 4.254] 구성관리 - 메트릭쿼리 관리

구성관리 - 메트릭쿼리 관리


메트릭쿼리 관리에 메트릭 쿼리 정보들은 BXCP ADM 환경의 화면에서 사용자에게 제공하는 다양한 메트릭 그래프의 데이터를 조회하기 위해서 사용되는 사전 정의된 메트릭 조회 쿼리를 관리할 수 있으며 아래 그림은 메트릭쿼리 정보의 목록이다.

[그림 4.255] 구성관리 - 메트릭쿼리 관리 - 목록

구성관리 - 메트릭쿼리 관리 - 목록


메트릭쿼리 관리 목록 화면에서도 새로운 메트릭쿼리 정보를 추가할 수 있다. [쿼리 추가] 버튼을 사용하면 아래 그림처럼 메트릭쿼리 정보를 입력할 수 있는 팝업창이 열리게 된다.

[그림 4.256] 메트릭쿼리 관리 - 쿼리 추가 - 팝업

메트릭쿼리 관리 - 쿼리 추가 - 팝업


위에서 언급한 대로 사전 정의된 메트릭 조회 쿼리를 관리하는게 주요한 기능이지만 간헐적으로 BXCP ADM이 업그레이드 되면 [쿼리 추가] 버튼을 사용하여 추가할 상황이 발생할 것이다. 아래 그림은 신규로 메트릭쿼리를 추가 시 선택할 수 있는 리소스 타입 정보를 보여준다.

[그림 4.257] 선택할 수 있는 리소스 타입

선택할 수 있는 리소스 타입


각각에 리소스 타입은 다음과 같은 의미를 가진다.

  • Application

    (Developer) [온라인 애플리케이션] > [온라인 애플리케이션 상세화면] 에서 메트릭 데이터를 조회하는 쿼리에 대한 타입이다.

  • Daemonset

    (Administrator) [워크로드 리소스] > [데몬셋] > [데몬셋 상세 팝업] > [Metrics 탭] 에서 메트릭 데이터를 조회하는 쿼리에 대한 타입이다.

  • Deployment

    (Administrator) [워크로드 리소스] > [디플로이먼트] > [디플로이먼트 상세 팝업] > [Metrics 탭], (Developer) [프로젝트 정보] > [디플로이먼트] > [디플로이먼트 상세 팝업] > [Metrics 탭] 에서 메트릭 데이터를 조회하는 쿼리에 대한 타입이다.

  • Namespace

    (Administrator) [시스템 리소스] > [네임스페이스] > [네임스페이스 상세 팝업] > [Metrics 탭], (Developer) [프로젝트 정보] > [요약정보] 에서 메트릭 데이터를 조회하는 쿼리에 대한 타입이다.

  • Node

    (Administrator) [시스템 리소스] > [노드] > [노드 상세 팝업] > [Metrics 탭] 에서 메트릭 데이터를 조회하는 쿼리에 대한 타입이다.

  • Pod

    (Administrator) [워크로드 리소스] > [파드] > [파드 상세 팝업] > [Metrics 탭], (Developer) [프로젝트 정보] > [파드] > [파드 상세 팝업] > [Metrics 탭] 에서 메트릭 데이터를 조회하는 쿼리에 대한 타입이다.

  • Replicaset

    (Administrator) [워크로드 리소스] > [레플리카셋] > [레플리카셋 상세 팝업] > [Metric 탭] 에서 메트릭 데이터를 조회하는 쿼리에 대한 타입이다.

  • Statefulset

    (Administrator) [워크로드 리소스] > [스테이트풀셋] > [스테이트풀셋 상세 팝업] > [Metric 탭] 에서 메트릭 데이터를 조회하는 쿼리에 대한 타입이다.

  • Cluster

    (Administrator) [워크로드 리소스] > [요약정보] 에서 메트릭 데이터를 조회하는 쿼리에 대한 타입이다.

메트릭쿼리 정보를 신규로 저장하는 것 보다는 기존 정보를 수정하는 경우가 더 많다. 아래 그림은 메트릭쿼리에 상세 정보 팝업 화면의 예시인데 클러스터에서 Pending 상태인 레플리카셋 리소스에 개수를 조회하는 쿼리가 정의되어 있다.

[그림 4.258] 메트릭쿼리 상세 화면

메트릭쿼리 상세 화면


참고

쿼리 값 항목에 작성된 값은 프로메테우스 쿼리 언어를(줄여서 PromQL) 기준으로 작성된 데이터 조회 쿼리이다. 즉 메트릭쿼리 정보를 수정하기 위해서는 https://prometheus.io/docs/prometheus/latest/querying/basics/ 링크에서 설명하는 PromQL 문법을 숙지하거나 참고하면서 작성이 필요하다.

위에서 설명한 메트릭쿼리는 Pending 상태 레플리카셋 리소스에 개수를 조회하는 PromQL 값이 설정되었는데, 이 메트릭쿼리는 아래 그림을 기준으로 표기된 영역의 데이터를 조회하게 되는 것이다.

[그림 4.259] Pending 상태 레플리카셋 개수 조회 쿼리가 사용되는 화면

Pending 상태 레플리카셋 개수 조회 쿼리가 사용되는 화면


화면에서 사용하는 사전 정의된 메트릭쿼리 정보가 많기 때문에 쿼리키가 어느 부분에 영향이 있는지 아래 그림을 참고한다.

[그림 4.260] Application 리소스 타입 - 쿼리키

Application 리소스 타입 - 쿼리키


[그림 4.261] Cluster 리소스 타입 - 쿼리키

Cluster 리소스 타입 - 쿼리키


참고

COUNT_JOB_ACTIVE, COUNT_JOB_FAILED, COUNT_JOB_SUCCEEDED 쿼리키는 화면에서는 현재 화면에서 사용은 하지만 그래프에 사용되지 않음

[그림 4.262] Daemonset 리소스 타입 - 쿼리키

Daemonset 리소스 타입 - 쿼리키


[그림 4.263] Deployment 리소스 타입 - 쿼리키

Deployment 리소스 타입 - 쿼리키


[그림 4.264] Namespace 리소스 타입 - 쿼리키(1)

Namespace 리소스 타입 - 쿼리키(1)


[그림 4.265] Namespace 리소스 타입 - 쿼리키(2)

Namespace 리소스 타입 - 쿼리키(2)


[그림 4.266] Namespace 리소스 타입 - 쿼리키(3)

Namespace 리소스 타입 - 쿼리키(3)


[그림 4.267] Node 리소스 타입 - 쿼리키(1)

Node 리소스 타입 - 쿼리키(1)


[그림 4.268] Node 리소스 타입 - 쿼리키(2)

Node 리소스 타입 - 쿼리키(2)


[그림 4.269] Pod 리소스 타입 - 쿼리키

Pod 리소스 타입 - 쿼리키


참고

USAGE_FILESYSTEM 쿼리키는 현재 사용하지 않음

[그림 4.270] Replicaset 리소스 타입 - 쿼리키

Replicaset 리소스 타입 - 쿼리키


[그림 4.271] Statefulset 리소스 타입 - 쿼리키

Statefulset 리소스 타입 - 쿼리키


4.30 사용자 관리

(Administrator) [환경설정] > [사용자 관리] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 BXCP ADM을 사용하는 계정 정보 즉 사용자 정보를 정보를 열람할 수 있다. 뿐만 아니라 외부에 어떤 시스템이 BXCP ADM에서 제공하는 API 사용을 하는 상황이 발생시 사용자 관리 화면에서는 외부 시스템을 식별할 수 있는 사용자 정보를 저장하고 위에서 언급한 토큰 정보를 외부 시스템의 사용자 정보에 연결하는 형태로 API 사용을 허용할 수 있다.

[그림 4.272] 환경설정 - 사용자 관리

환경설정 - 사용자 관리


[그림 4.273] 환경설정 - 사용자 관리 - 목록

환경설정 - 사용자 관리 - 목록


사용자 관리 목록 화면에서도 새로운 사용자 정보를 추가할 수 있다. [사용자 추가] 버튼을 사용하면 아래 그림처럼 사용자 정보를 입력할 수 있는 팝업창이 열리게 된다.

[그림 4.274] 환경설정 - 사용자 관리 - 목록 - 팝업

환경설정 - 사용자 관리 - 목록 - 팝업


사용자 정보를 저장 시 아래 그림처럼 역할을 사용자 정보에 연결을 해야만 한다. 이 역할 정보는 BXCP ADM에서 메뉴, 권한에 관한 데이터이기 때문에 설정에 유의해서 한다.

[그림 4.275] 팝업 - 역할 검색

팝업 - 역할 검색


아래는 저장된 사용자 정보의 예시인데 기본적으로 비밀번호는 마스킹 상태로 화면에 보여진다. 하단에 역할은 복수의 역할을 설정할 수 있으며 대표 역할을 지정해야 한다. 대표 역할에 따라서 로그인이 성공했을 때 첫 화면에 영향을 미치게 된다.

[그림 4.276] 사용자 상세

사용자 상세


4.31 메뉴 관리

(Administrator) [환경설정] > [메뉴 관리] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 BXCP ADM에서 제공하는 메뉴의 정보를 열람할 수 있다.

[그림 4.277] 환경설정 - 메뉴 관리

환경설정 - 메뉴 관리


[그림 4.278] 환경설정 - 메뉴 관리 - 목록

환경설정 - 메뉴 관리 - 목록


  • 메뉴 ID

    BXCP ADM에서 관리하는 메뉴의 ID이다.

  • 상위 메뉴 ID

    메뉴 ID를 포함하는 메뉴의 ID를 의미하며, 조회된 데이터에 상위 메뉴 ID 항목에 값이 비어있으면 단독으로 사이드바 메뉴 영역에서 바로 보이는 메뉴이다. 상위 메뉴는 BXCP ADM에서 루트 메뉴라고도 한다.

  • 메뉴 명

    한글로 표기한 메뉴의 이름을 의미한다.

  • 영문 메뉴 명

    영문으로 표기한 메뉴의 이름을 의미한다.

  • 메뉴 설명

    메뉴에 대한 간략한 설명을 보여준다.

  • 사용 여부

    메뉴의 사용 상태를 나타내지만, 이 정보를 수정하여도 메뉴의 출력을 결정하는 것은 아니다.

  • 액션 전용 여부

    별도의 화면 없이, REST 통신만을 위한 메뉴이다. 사용자 권한 설정에서 액션 권한으로 사용되며, 메뉴 추가 시 선택한 액션 버튼에 따라 자동으로 설정된다.

  • 수정 일시

    메뉴 데이터의 최종 수정 일시를 나타낸다.

메뉴 관리 화면은 새로운 신규 메뉴를 추가 시 메뉴만 추가할 수 있고, 화면은 개발이 필요하다. 이미 있는 메뉴는 다른 메뉴의 하위 메뉴로 편성할 수 있으며, 삭제도 가능하다.

아래 그림은 상위 메뉴를 기준으로 우측에 메뉴를 클릭한 예시인데, 행 기준에 상위 메뉴를 처리하는 다양한 처리를 할 수 있다.

[그림 4.279] 메뉴 관리 - 목록 - 메뉴 - 상위 메뉴

메뉴 관리 - 목록 - 메뉴 - 상위 메뉴


  • 메뉴 변경

    행 기준의 메뉴 정보를 변경하는 팝업을 열어주는 메뉴이다.

  • 위에 루트 메뉴 추가

    행 기준으로 위에다 상위(루트) 메뉴를 추가하는 팝업을 열어주는 메뉴이다.

  • 아래에 루트 메뉴 추가

    행 기준으로 위에다 하위(루트) 메뉴를 추가하는 팝업을 열어주는 메뉴이다.

  • 하위 메뉴 추가

    상위 메뉴를 펼칠때 보이는 하위 메뉴를 추가하는 팝업을 열어주는 메뉴이다.

  • 액션 메뉴 추가

    해당 메뉴에서 사용하는 액션 메뉴를 추가하는 팝업을 열어주는 메뉴이다.

  • 메뉴 삭제

    행 기준의 메뉴를 삭제처리 한다.

아래 그림은 상위 메뉴와 반대로 하위 메뉴인 데이터를 기준으로 우측에 메뉴를 클릭한 예시인데, 행 기준에 하위 메뉴를 처리하는 다양한 기능을 제공한다.

[그림 4.280] 메뉴 관리 - 목록 - 메뉴 - 하위 메뉴

메뉴 관리 - 목록 - 메뉴 - 하위 메뉴


  • 메뉴 변경

    행 기준의 메뉴 정보를 변경하는 팝업을 열어주는 메뉴이다.

  • 하위 메뉴 추가

    상위 메뉴를 펼칠때 보이는 하위 메뉴를 추가하는 팝업을 열어주는 메뉴이다.

  • 액션 메뉴 추가

    해당 메뉴에서 사용하는 액션 메뉴를 추가하는 팝업을 열어주는 메뉴이다.

  • 메뉴 삭제

    행 기준의 메뉴를 삭제처리 한다.

4.31.1 메뉴 상세

조회된 메뉴 목록에서 상위 메뉴 데이터 1개를 클릭하면 메뉴의 상세 정보를 열람할 수 있는 팝업 화면이 열린다. 아래 그림은 상위 메뉴에 대한 상세 화면 팝업이다.

[그림 4.281] 인증 상세

인증 상세


경고

메뉴 Prefix 속성은 아주 중요한 속성으로 해당 메뉴에 대한 화면이 이미 사용되고 있는 상태에서는 메뉴 Prefix의 값을 변경하면 오류가 발생할 수 있으니 변경하지 않는다. 이 값은 BXCP ADM 프론트엔드와 백엔드 간에 REST 통신에 이용하는 값이다.

4.32 역할 관리

(Administrator) [환경설정] > [역할 관리] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 BXCP ADM에서 제공하는 역할의 정보를 열람할 수 있다. 역할 관리 화면에서는 사용자 정보에 연결할 수 있는 역할을 관리할 수 있다.

역할은 여러 개의 메뉴를 연결할 수 있으며, 그 메뉴에서 처리할 수 있는 다양한 액션을 허용하는 형태로 관리된다.

[그림 4.282] 환경설정 - 역할 관리

환경설정 - 역할 관리


[그림 4.283] 환경설정 - 역할 관리 - 목록

환경설정 - 역할 관리 - 목록


  • 역할 ID

    BXCP ADM에서 관리하는 역할의 ID이다. 역할을 생성하는 사용자가 직접 입력하는 값이다.

  • 역할 명

    역할에 대한 이름이다.

  • 관리자 여부

    관리자 전용 역할인지 여부를 나타낸다.

  • 수정 일시

    역할 데이터의 최종 수정 일시를 나타낸다.

역할 관리 목록 화면에서도 새로운 역할을 추가할 수 있다. [역할 추가] 버튼을 사용하면 아래 그림처럼 새로운 역할을 입력할 수 있는 팝업창이 열리게 된다.

아래 그림에 기본 설정 탭에서는 역할에 대한 정보성 데이터를 주로 입력하는 부분이다.

[그림 4.284] 역할 추가 - 기본 설정

역할 추가 - 기본 설정


기본 설정 탭 화면에는 눈여겨볼 속성은 아이콘 속성인데 여기서 선택하는 아이콘은 역할을 전환하는 워크벤치 영역에서 볼 수 있다. 아래 그림에서는 선택할 수 있는 아이콘에 대한 예시이다.

[그림 4.285] 역할 추가 - 기본 설정 - 아이콘 목록

역할 추가 - 기본 설정 - 아이콘 목록


그리고 위에 설명했던 아이콘을 선택하고 역할을 저장했다고 가정하면 아래 그림과 같이 역할을 전환하는 워크벤치 부분에서 아이콘과 함께 선택할 수 있는 역할이 표시된다.

[그림 4.286] 워크벤치 - 역할 목록

워크벤치 - 역할 목록


[그림 4.287] 워크벤치 - 역할 목록 - 확대

워크벤치 - 역할 목록 - 확대


메뉴 권한 탭 화면으로 이동하면 아래 그림처럼 생성하려는 역할을 기준으로 연결할 수 있는 메뉴 목록이 보인다. 즉 이 탭 화면에서는 해당 역할을 가지는 사용자가 BXCP ADM 화면에 제공하는 사이드바 메뉴 영역에서 보이는 메뉴를 결정합니다. 아래 그림은 이런 역할에 연결할 수 있는 메뉴를 선택하는 화면이다.

[그림 4.288] 역할 추가 - 메뉴 권한

역할 추가 - 메뉴 권한


이런 역할에 연결할 메뉴를 아래 그림처럼 자세히 설정을 할 수 있다. 예를 들면 권한(생성, 수정, 삭제), 활성화, 시작화면, 개발계 전용 등이 있다.

[그림 4.289] 역할 추가 - 메뉴 권한 - 컨트롤 영역

역할 추가 - 메뉴 권한 - 컨트롤 영역


그리고 메뉴 권한 탭 화면에서는 위에 그림에 나온 시작화면을 지정해야 하며 특정 메뉴를 시작화면 체크 박스를 사용해서 체크하면 아래 그림처럼 메뉴 목록에서 시작화면을 나타내는 아이콘이 표기된다.

[그림 4.290] 역할 추가 - 메뉴 권한 - 시작화면

역할 추가 - 메뉴 권한 - 시작화면


마지막 탭 화면인 액션 권환 화면은 현재 기준에 역할에 애플리케이션에 대한 액션을 결정하는 화면이다.

[그림 4.291] 역할 추가 - 액션 권한

역할 추가 - 액션 권한


4.33 코드 관리

(Administrator) [환경설정] > [코드 관리] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 BXCP ADM에서 이용하는 코드 정보를 열람할 수 있다. 이 코드 관리 화면에서는 화면에 보이는 코드 정보나 BXCP ADM 백엔드에서 이용하는 등 다양한 곳에서 쓰인다.

[그림 4.292] 환경설정 - 코드 관리

환경설정 - 코드 관리


[그림 4.293] 환경설정 - 코드 관리 - 목록

환경설정 - 코드 관리 - 목록


  • 코드 그룹 ID

    BXCP ADM에서 관리되는 코드 그룹의 ID이다.

  • 코드 그룹 명

    코드 그룹의 이름이다.

  • 코드 그룹 설명

    코드 그룹에 대한 간략한 설명이다.

  • 수정 일시

    코드 데이터의 최종 수정 일시를 나타낸다.

코드 목록 화면에서도 새로운 코드를 추가할 수 있다. [코드 추가] 버튼을 사용하면 아래 그림처럼 코드의 정보를 입력할 수 있는 팝업창이 열리게 된다. 그림에서는 상단에 코드 그룹에 대한 정보를 입력한 예시이다.

[그림 4.294] 코드 추가 - 팝업

코드 추가 - 팝업


위에서 코드 그룹에 대한 정보를 입력했으면 아래 그림처럼 행추가() 버튼을 클릭하면 코드 그룹에 속하는 코드 상세 정보를 입력할 수 있다.

[그림 4.295] 코드 추가 - 팝업 - 행추가

코드 추가 - 팝업 - 행추가


아래는 코드 그룹을 기준으로 상세 코드를 입력한 예시이다.

[그림 4.296] 코드 추가 - 팝업 - 코드상세 입력

코드 추가 - 팝업 - 코드상세 입력


위에서 코드 상세를 입력하고 저장() 버튼을 클릭하면 아래처럼 코드 그룹에 속하는 코드 상세 정보 임시 저장할 수 있다.

[그림 4.297] 코드 추가 - 팝업 - 코드상세 임시 저장

코드 추가 - 팝업 - 코드상세 임시 저장


임시 저장한 코드상세가 필요없는 경우 위에서 삭제() 버튼을 클릭하면 아래처럼 상세코드의 삭제를 진행할지 사용자에게 확인 메시지와 함께 처리할 수 있다.

[그림 4.298] 코드 추가 - 팝업 - 코드상세 삭제

코드 추가 - 팝업 - 코드상세 삭제


4.34 설정 관리

(Administrator) [환경설정] > [설정 관리] 메뉴를 사용해서 화면으로 진입하면 아래 그림처럼 BXCP ADM에서 사용하는 설정 정보를 키-값 형태로 열람할 수 있다. 이 설정 관리 화면에서는 보이는 정보는 주로 BXCP ADM 백엔드에서 사용하는 값이 많으며 변경 시에 주의를 기울일 필요가 있다.

[그림 4.299] 환경설정 - 설정 관리

환경설정 - 설정 관리


BXCP ADM 구성 시(설치) 구동에 필요한 필수적인 키-값 데이터는 이미 저장된 상태이며 아래는 설정 관리 데이터 목록 예시이다.

[그림 4.300] 환경설정 - 설정 관리 - 목록

환경설정 - 설정 관리 - 목록


위에 언급된 BXCP ADM 구성 시 구동에 필요한 필수적인 키-값 데이터는 6.1절. “시스템 환경변수”에서 참고할 수 있다. 각각의 키가 어떤 값을 가지고 어떤 역할을 하는지 설명이 되어있다. 설정 목록 화면에서 새로운 설정을 추가하려면 [설정 추가] 버튼을 사용하면 아래 그림처럼 설정 정보를 입력할 수 있는 팝업창이 열리게 된다.

[그림 4.301] 설정 추가 - 팝업

설정 추가 - 팝업


설정을 추가하는 팝업 화면을 보면 마스킹 버튼이 보이는데 이 버튼을 활성화시키면 BXCP ADM 화면에서 보이는 값이 마스킹 처리된 상태로 보여지게 할 수 있다.

아래 그림은 위에서 설명한 마스킹 버튼을 활성화 시켰을때 보이는 팝업 화면이다. Y 값으로 입력한 설정 값이 마스킹 처리된 것을 볼 수 있다. 마스킹된 값을 확인만을 위해서 보려면 마스킹제거() 버튼을 사용하면 된다.

[그림 4.302] 설정 추가 - 팝업 - 마스킹 활성화

설정 추가 - 팝업 - 마스킹 활성화


위에 예시를 저장하면 아래 그림처럼 목록에서 마스킹 처리된 설정 데이터를 볼 수 있다.

[그림 4.303] 환경설정 - 설정 관리 - 목록 - 마스킹 활성화

환경설정 - 설정 관리 - 목록 - 마스킹 활성화


4.35 Developer - 대시보드

(Developer) [대시보드] 메뉴를 클릭하면 위에서 언급한 4.1.3절. “K8s All in One” 내용과 동일한 대시보드를 열람 할 수 있다.

4.36 온라인 애플리케이션

온라인으로 서비스를 제공하는 애플리케이션을 BXCP ADM에서 온라인 애플리케이션이라 명명하는데, BXCP ADM에서는 이러한 온라인 애플리케이션을 관리할 수 있다. 이번 절에서는 온라인 애플리케이션에 대한 설명을 한다.

BXCP ADM에 의해서 애플리케이션이 쿠버네티스 환경에 배포가 되면 사전 정의된 쿠버네티스 리소스 세트가 적용이 된다. 쿠버네티스 리소스 세트는 애플리케이션의 스펙에 따라서 다소 차이가 있지만 다음과 같이 크게 두 가지 유형에 리소스 세트로 이루어진다.

  • Service Mesh 유형 기준 리소스 세트

    Istio를 사용해서 다양한 리소스 세트를 구성하는 형태이다. Istio에 Gateway 리소스는 BXCP ADM을 구성 시 클러스터에 적용된 상태로 간주한다.

    • Deployment

      FederatedDeployment 리소스로 파생된 Deployment 리소스

    • Service

      FederatedService 리소스로 파생된 Service 리소스

    • N/S VirtualService

      FederatedVirtualService 리소스로 파생된 VirtualService 리소스이고 North/South 트래픽을 관리

    • E/W VirtualService

      FederatedVirtualService 리소스로 파생된 VirtualService 리소스이고 East/West 트래픽을 관리

    • DestinationRule

      FederatedDestinationRule 리소스로 파생된 DestinationRule 리소스

  • K8S Ingress 유형 기준 리소스 세트

    쿠버네티스에서 제공하는 Ingress를 사용해서 다양한 리소스 세트를 구성하는 형태이다. Ingress 리소스는 Ingress 컨트롤러를 의존하는 리소스인데 BXCP ADM을 구성 시 Nginx Ingress Controller를 클러스터에 적용된 상태로 간주한다.

    • Deployment

      FederatedDeployment 리소스로 파생된 Deployment 리소스

    • Service

      FederatedService 리소스로 파생된 Service 리소스

    • Ingress

      FederatedIngress 리소스로 파생된 Ingress 리소스

4.36.1 온라인 애플리케이션 목록

(Developer) [온라인 애플리케이션] 메뉴를 통해서 온라인 애플리케이션 목록 화면으로 이동을 하면 다음에 그림과 같이 애플리케이션에 대한 요약 정보를 상세화면으로 진입하지 않아도 열람할 수 있다.

[그림 4.304] BXCP 온라인 애플리케이션 목록

BXCP 온라인 애플리케이션 목록


참고

위에 그림에 보이는 1개 카드가 온라인 애플리케이션 1개를 나타낸다. 여기서 보이는 정보는 BXCP ADM이 내부에서 정기적으로 동작하는 작업에 의해서 만들어진 데이터로 실시간은 데이터는 아니지만 크게 차이가 나진 않는다.

4.36.2 온라인 애플리케이션 현황

아래 그림처럼 카드 형태로 1개의 온라인 애플리케이션에 현황을 나타내고, 다음에 항목으로 애플리케이션에 정보를 표현한다.

[그림 4.305] BXCP 온라인 애플리케이션

BXCP 온라인 애플리케이션


  • 애플리케이션 이름

    애플리케이션 스펙을 최초 생성 시 지정한 애플리케이션 이름을 의미한다.

  • 애플리케이션 ID

    애플리케이션 스펙을 최초 생성 시 지정한 애플리케이션 ID를 의미한다. 애플리케이션의 이름은 쿠버네티스 리소스에서 사용이 되는데 정확히 일치하는 형태로 사용하는 경우도 있고 아닌 경우도 있다. 그렇기 때문에 kubectl 커맨드에서 관련 리소스들을 검색 및 스펙을 열람 시 다음과 같이 레이블 셀렉터 옵션을 사용해서 활용할 수 있다.

    [그림 4.306] 애플리케이션 ID를 활용한 kubectl 커맨드 사용 예시

    $ kubectl get all -n bookinfo -l bankwareglobal.io/name=productpage
    NAME                                     READY   STATUS    RESTARTS   AGE
    pod/productpage-c5ce9-7b98949567-zffvj   2/2     Running   0          2d
    
    NAME                  TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
    service/productpage   ClusterIP   25.0.7.243   <none>        9080/TCP   46d
    
    NAME                                READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/productpage-c5ce9   1/1     1            1           28d
    
    NAME                                           DESIRED   CURRENT   READY   AGE
    replicaset.apps/productpage-c5ce9-7b98949567   1         1         1       2d
    
    $ kubectl get virtualservice -n bookinfo -l bankwareglobal.io/name=productpage
    NAME                      GATEWAYS                        HOSTS                                        AGE
    bookinfo-productpage-ew   ["mesh"]                        ["productpage.bookinfo.svc.cluster.local"]   2d
    bookinfo-productpage-ns   ["istio-system/bxcp-gateway"]   ["*"]                                        2d
    
    $ kubectl get federatedservice -n bookinfo -l bankwareglobal.io/name=productpage
    NAME          AGE
    productpage   46d
    							


  • 애플리케이션 설명

    애플리케이션 스펙을 최초 생성 시 지정한 애플리케이션 설명을 의미한다.

  • Replicas

    Replicas 항목은 애플리케이션에 파드 갯수를 표현한다. 순서대로 가용한 파드 갯수, 스펙에 명시된 파드 갯수를 나타낸다.

  • 클러스터

    클러스터 항목은 온라인 애플리케이션이 배포된 클러스터를 의미하며, 이를 아이콘 형태로 표현하고 있다. 2개 이상에 클러스터에 배포를 했다면 아이콘이 더 표현된다.

  • 롤아웃

    롤아웃 항목은 온라인 애플리케이션에 스펙을 정할 때 지정한 유형으로 ROLLING, CANARY, BLUE/GREEN 유형이 있다.

  • 빌드

    빌드 항목은 배포가 이루어진 뒤에 생성되는 빌드번호를 표현하고 있으며, 배포에 성공/실패에 관계없이 보여진다. 빌드번호 정보는 CI/CD 파이프라인 프로세스가 진행되는 과정에서 만들어진다.

  • 트래픽

    애플리케이션에 스펙의 INGRESS 설정에 트래픽 유형을 표시하게 되는데 Service Mesh, K8S Ingress 두가지를 아이콘 형태로 표시한다.

4.36.3 온라인 애플리케이션 메뉴

온라인 애플리케이션 정보를 수정하거나 삭제하고 싶다면 다음 그림처럼 메뉴를 클릭해서 처리할 수 있다.

[그림 4.307] BXCP 온라인 애플리케이션 현황 메뉴

BXCP 온라인 애플리케이션 현황 메뉴


애플리케이션 삭제 메뉴를 클릭한다면 다음과 같이 사용자에 확인을 받고 삭제가 처리된다.

[그림 4.308] BXCP 온라인 애플리케이션 삭제 확인

BXCP 온라인 애플리케이션 삭제 확인


경고

애플리케이션이 이미 배포된 상태에서 삭제를 하면 모든 관련 리소스도 삭제가 된다.

4.36.4 온라인 애플리케이션 생성(수정) - 기본 설정

온라인 애플리케이션 목록을 보여주는 화면에서 [Create Application] 버튼을 클릭하면 1개의 온라인 애플리케이션을 생성할 수 있는 팝업 열거나, 카드 형태 영역에서 오른쪽 위에 메뉴를() 클릭하여 애플리케이션 수정 메뉴를 누를 때도 동일한 팝업을 볼 수 있다.

[그림 4.309] 온라인 애플리케이션 생성(수정) - 기본 설정

온라인 애플리케이션 생성(수정) - 기본 설정


참고

애플리케이션 ID 정보를 입력하고 [검증] 버튼을 눌러서 검증이 완료되어야 다음으로 진행할 수 있다. 단, 이러한 처리는 애플리케이션을 처음 생성할 때 거치는 단계이며, 수정 시 애플리케이션 ID는 고칠 수 없으므로 거쳐가는 단계가 아니다.

[그림 4.310] BXCP 온라인 애플리케이션 검증완료

BXCP 온라인 애플리케이션 검증완료


위에 그림을 기준으로 언급이 필요한 항목을 다음에 설명한다.

4.36.4.1 Ingress 유형

Ingress 유형은 온라인 애플리케이션에 대한 트래픽을 결정하기 위한 유형을 선택하는 항목이다. 2개 유형 모두 사전에 준비할 의존성이 있으며, Service Mesh 유형은 Istio를 사용할 수 있는 환경이 마련되어야 하고 k8s Ingress 유형은 NGINX Ingress Controller 설치가 필요하다.

4.36.4.2 배포 리소스

온라인 애플리케이션을 배포할 때 사용될 온라인 애플리케이션에 대한 코드, 이미지, 바이너리 등을 지정할 수 있는데, 선택할 수 있는 유형은 아래 그림을 참고한다.

[그림 4.311] 선택할 수 있는 배포 리소스 유형

선택할 수 있는 배포 리소스 유형


유형 - Gitlab

배포할 리소스가 Gitlab 서버에 관리되는 레파지토리인 경우에 사용하는 유형이다.

배포를 처리할 기준 브랜치를 지정해야 하며 미지정시 master 브랜치를 기준으로 처리된다. 이 Gitlab 유형은 빌드팩을 사용해서 배포가 이루어진다.

유형 - Container Image

배포할 리소스가 컨테이너 이미지 형태로 dockerhub, harbor 등에 레파지토리 서버를 사용하는 유형이다.

유형 - Object Storage

배포할 리소스가 http 프로토콜을 통해서 가져 올 수 있는 형태이면 사용하는 유형이다.

유형 - FTP

배포할 리소스가 ftp 프로토콜을 통해서 가져 올 수 있는 형태이면 사용하는 유형이다.

유형 - PCMS

배포 처리 자체를 다른 곳에서 이루어지는 형태에서 사용하는 유형이다.

인증선택

각각에 유형에 따라서 배포 리소스 접근 시 인증이 필요하면 선택하는 인증정보에 목록이다. 같은 프로젝트를 공유하는 다른 사용자가 필요한 인증을 이미 만들었다면 아래 그림과 같이 선택이 가능한데 알맞은 인증을 선택하여 사용가능하다.

[그림 4.312] 저장된 인증정보 선택 화면

저장된 인증정보 선택 화면


직접 입력

미리 생성된 인증정보가 없거나 필요한 인증정보가 없을 때에는 사용자가 직접 입력을 통해서 인증 정보를 만들 수 있다.

인증유형은 Token, ID/PASSWORD, Certificate 3가지 형태로 저장이 가능하다.

4.36.4.3 빌드팩

온라인 애플리케이션을 배포할 때 다양한 처리 과정에서 사용되는 빌드팩을 선택해야 한다. 이 빌드팩은 PCMS 배포 리소스 유형을 제외한 다른 배포 리소스 유형은 모두 선택하게 되어있다.

[그림 4.313] 빌드팩 선택

빌드팩 선택


[그림 4.314] 빌드팩 버전 선택

빌드팩 버전 선택


4.36.5 온라인 애플리케이션 생성(수정) - POD & CONTAINER 설정

온라인 애플리케이션 생성(수정) - POD & CONTAINER 설정 탭에서는 쿠버네티스 서비스, 파드 리소스에 대한 설정을 할 수 있는 탭이다.

[그림 4.315] 온라인 애플리케이션 생성(수정) - POD & CONTAINER 설정

온라인 애플리케이션 생성(수정) - POD & CONTAINER 설정


4.36.5.1 Replicas

배포 처리 시 만들어지는 디플로이먼트 스펙에 지정하는 리플리카셋 갯수를 지정하는 항목이다. [가용 클러스터 설정] 탭 화면에서 이 값을 재정의 할 수 있다.

4.36.5.2 Service Type

배포 처리 시 만들어지는 서비스 스펙에 지정되는 Service Type 유형을 지정할 수 있다.

[그림 4.316] Service Type

Service Type


4.36.5.3 Ports

배포 처리 시 만들어지는 디플로이먼트 스펙에서 컨테이너에 포트 번호를 설정할 수 있다.

참고

노드 포트번호를 사용하고 싶다면 반드시 관리자를 통해서 가용한 포트 번호인지 확인이(쿠버네티스 dryrun 옵션을 통해 검증 시 사용하는 검증 포트번호를 사용불가, 참고: 6.1.35절. “bxcr.system.service.dryrun.nodeport”) 필요하며, 해당 애플리케이션이 노드 포트번호를 사용할 필요성이 있는지 판단도 필요하다.

4.36.5.4 Command

Dockerfile에 실행 명령어가 CMD로 정의된 경우, Command를 통해서 실행 명령어를 재정의 할 수 있습니다. 아래 그림과 같이 사용할 수 있다.

[그림 4.317] Command

Command


4.36.5.5 Args

Dockerfile에 정의된 실행 명령어가 다음에 아규먼트를 지정하고자 할 때 Args 속성을 추가하여 주입할 수 있다. 아래 그림은 CMD, Args 같이 사용한 예시이다.

[그림 4.318] Args

Args


4.36.5.6 Environment Variables

컨테이너에서 사용할 수 있는 환경변수를 지정할 수 있다. 환경변수를 일반적인 키-값 형태가 될수 있고 접근할 수 있는 컨피그맵이나 시크릿을 환경변수로 사용할 수 있다.

[그림 4.319] 일반 환경변수

일반 환경변수


[그림 4.320] 컨피그맵 환경변수

컨피그맵 환경변수


[그림 4.321] 시크릿 환경변수

시크릿 환경변수


4.36.5.7 Labels

사용자가 원하는 레이블을 설정할 수 있다. 이 레이블은 파드 리소스의 레이블로 설정된다.

[그림 4.322] 레이블 설정

레이블 설정


4.36.5.8 Volumes

컨테이너가 사용할 볼륨을 정의하고, 그 볼륨을 컨테이너에 마운트 하는 설정을 할 수 있다.

[그림 4.323] Host Path 예시

Host Path 예시


위에 Host Path 그림 예시를 기준으로 실제 생성되는 파드 스펙은 아래와 같다. 편의상 다른 부분을 생략했다.

spec:
containers:
- volumeMounts:
	- mountPath: /etc/localtime
		name: tz-seoul
volumes:
- hostPath:
		path: /usr/share/zoneinfo/Asia/Seoul
		type: ""
	name: tz-seoul

그리고 아래는 Host Path 유형 이외에 선택할 수 있는 유형을 보여준다.

[그림 4.324] 볼륨 타입

볼륨 타입


4.36.5.9 Service Account

파드 스펙에서 사용하는 서비스 어카운트를 지정할 수 있다. 이 서비스 어카운트는 인증/인가 처리에 이용된다.

[그림 4.325] Host Path 예시

Host Path 예시


4.36.5.10 Node Selector

노드 셀렉터를 설정하면 파드가 스케줄 되는 시점에 원하는 노드에 배치를 유도 할 수 있다. 노드 리소스에 레이블 정보를 기반하므로 설정하기 전에 노드에 레이블 정보를 알아야 한다.

[그림 4.326] 노드 셀렉터 설정

노드 셀렉터 설정


4.36.5.11 Resource Quota

파드 스펙에 어느 정도에 컴퓨팅 파워를 사용할지 결정하는 Resource Quota를 설정할 수 있다.

[그림 4.327] Resource Quota 설정

Resource Quota 설정


경고

신중하게 설정하지 않으면 이 설정으로 인해서 장애가 발생할 수 있다.

온라인 애플리케이션이 속한 프로젝트에 정보를 프로젝트 정보 조회 버튼을 통해서 프로젝트 전체에 Resource Quota 정보를 확인하고 설정할 수 있다.

[그림 4.328] 프로젝트 정보 조회 버튼 사용

프로젝트 정보 조회 버튼 사용


4.36.6 온라인 애플리케이션 생성(수정) - 롤아웃

온라인 애플리케이션 생성(수정) - 롤아웃 탭에서는 온라인 애플리케이션을 쿠버네티스 클러스터에 배치하는 방법에 대한 설정을 할 수 있다.

4.36.6.1 Rolling

Rolling 롤아웃은 쿠버네티스 디플로이먼트에 롤오버 기능을 사용하는 유형으로 가용한 파드를 중단없이 교체하는 방식이다.

[그림 4.329] Rolling 롤아웃

Rolling 롤아웃


[표 4.1] Rolling 롤아웃 속성

속성
Max Unavailable롤링 업데이트 처리 중에 삭제할 수 있는 파드에 최대 갯수 혹은 최대 비중이다. 값을 높게 설정하면 롤링 업데이트 처리 시간을 줄일 수 있는 장점이 있지만 남아있는 파드에 트래픽이 집중되는 단점이 있다.
Max Surge롤링 업데이트 처리를 시작할 때 생성할 수 있는 새로운 버전에 파드 최대 갯수 혹은 최대 비중이다. Max Unavailable 속성과 동일하게 높은 값을 설정하면 롤링 업데이트 처리 시간을 줄일 수 있지만, 클러스터 컴퓨팅 자원을 많이 사용하게 되는 단점이 있다.


4.36.6.2 Canary

Canary 롤아웃은 Istio에 기능을 사용하는 방법인데, 1개 온라인 애플리케이션에 BLUE 및 GREEN 버전의 애플리케이션을 모두 배포하고 트래픽에 대한 비중을 설정하여 서비스를 제공하는 배포 방식이다.

[그림 4.330] Canary 롤아웃

Canary 롤아웃


4.36.6.3 BLUE/GREEN

BLUE/GREEN(줄여서 BG) 롤아웃 또한 Istio에 기능을 사용하는 방법인데, Canary 유형과 비슷하게 1개 온라인 애플리케이션에 BLUE 및 GREEN 버전의 애플리케이션을 모두 배포하고 특정 조건을 만족하면 GREEN 버전으로 트래픽을 라우트하는 배포 방식이다. 여기서 특정 조건은 Request Matching 설정에 일치할 때를 의미한다.

Request Matching - Header 유형은 온라인 애플리케이션에 요청되는 http 헤더 정보에서 조건에 만족하면 GREEN 버전 애플리케이션으로 트래픽이 라우트되는 유형이다.

[그림 4.331] BG - header

BG - header


Request Matching - Query Param 유형은 온라인 애플리케이션에 요청되는 http 쿼리 파라미터 정보가 조건에 만족하면 GREEN 버전 애플리케이션으로 트래픽이 라우트되는 유형이다.

[그림 4.332] BG - query

BG - query


4.36.7 온라인 애플리케이션 생성(수정) - INGRESS 설정

INGRESS 설정 탭은 온라인 애플리케이션에 접근하는 트래픽이 외부/내부에서(North/South) 접근하는지 내부에서만(East/West) 접근하는지를 결정하는 유형의 선택과 그와 관련된 부가정보를 설정할 수 있다.

4.36.7.1 INGRESS 설정

[그림 4.333] INGRESS 설정

INGRESS 설정


  • 트래픽 유형

    North/South는 외부 호출을 위한 Service Mesh를 설정하고, East/West는 내부 호출을 위한 Service Mesh를 설정할 수 있다. 그리고 기본 설정에 Ingress 유형에 따라서 스펙이 달라진다.

  • Request Matching(North/South)

    외부 요청을 수신하는 Istio ingress-gateway나 NGINX ingress-controller에서 온라인 애플리케이션으로 트래픽을 라우트 시 식별 정보로 사용한다. Uri나 Domain Name 유형으로 정의할 수 있다.

  • Gateways(North/South)

    외부 요청을 수신하는 Gateway를 지정하며, Ingress 유형이 k8s Ingress로 선택 시 nginx gateway가 고정값이다.

  • Expose Port

    컨테이너 이미지가 2개 이상의 포트로 동작할 때 트래픽을 보내줄 포트번호를 지정해야 한다.

4.36.7.2 INGRESS 설정 - Service Mesh 설정

Service Mesh 설정은 기본 설정 - Ingress 유형을 Service Mesh로 선택 시 보이는 설정 영역이다. Istio가 제공하는 기능을 설정하는 영역으로 이해하면 된다. Service Mesh 설정의 경우에는 장애포인트로 역효과가 나타날수 있기 때문에 신중하게 설정해야 한다.

[그림 4.334] Service Mesh 설정

Service Mesh 설정


  • Request Timeouts

    Envoy 프록시가 지정된 서비스의 응답 받아야 하는 최대 대기시간을 설정할 수 있다. 설정하지 않으면 비활성화 상태로 작동하지 않습니다.

  • Retries

    초기 호출이 실패할 경우 Envoy 프록시가 서비스에 연결을 시도하는 최대 횟수를 의미하는 설정이다. 재시도 횟수, 재시도 처리에 타임아웃을 지정할 수 있고 에러 유형을 지정할 수도 있다.

  • Fault Injection

    Istio를 사용한 네트워크 설정이 완료된 상태에서(혹은 테스트 목적으로) Istio에 Fault Injection 기능으로 오류를 주입할 수 있다.

    경고

    Retries, Request Timeouts 설정과 Fault Injection 설정을 같이 사용할 수 없다.

  • Load Balancer

    특정한 대상에 적용할 부하분산 정책을 지정할 수 있다.

  • Circuit Breakers

    목적지로 트래픽을 라우트 처리 시 지정한 조건에 따라서 일정 시간 동안 로드밸런스 풀에서 제외하도록 설정할 수 있다.

4.36.8 온라인 애플리케이션 생성(수정) - HEALTH CHECK 설정

쿠버네티스 파드 스펙에 설정할 수 있는 Readiness, Liveness, Startup Probe를 설정할 수 있다.

경고

신중하게 설정하지 않으면 이 설정으로 인해서 장애가 발생할 수 있다.

HEALTH CHECK 설정을 따로 입력하지 않으면 아래와 같은 형태로 보여진다.

[그림 4.335] HEALTH CHECK 설정

HEALTH CHECK 설정


그리고 아래는 Readiness Probe 버튼을 눌러서 Readiness Probe 설정을 입력한 예시를 볼 수 있다.

[그림 4.336] Readiness Probe

Readiness Probe


위에 그림과 같은 설정이 디플로이먼트 리소스로 배포되면 아래와 같은 형태로 만들어진다. 일부 속성값은 기본값이 처리된 것을 알 수 있다.

spec:
template:
	spec:
		containers:
		- readinessProbe:
				failureThreshold: 3
				httpGet:
					path: /bookinfo/productpage/health
					port: 9080
					scheme: HTTP
				periodSeconds: 10
				successThreshold: 1
				timeoutSeconds: 1
			

4.36.9 온라인 애플리케이션 생성(수정) - 가용 클러스터 설정

온라인 애플리케이션을 배치할 클러스터를 지정할 수 있다. 그리고 특정 클러스터에만 별로도 지정할 속성을 오버라이드 처리할 수 있다.

아래는 호스트 역할에 클러스터만 선택한 예시를 보여주고 있다.

[그림 4.337] 가용 클러스터 설정

가용 클러스터 설정


경고

만약 위 그림을 기준으로 Not Ready 상태인 클러스터를 체크하고 배포가 진행되면 당연한 결과이지만 오류가 발생한다. 그렇기 때문에 [가용 클러스터 설정] 탭 화면에서는 상태도 유의해서 확인하고 지정하는 처리를 한다.

가용 클러스터 설정 탭에서는 선택한 클러스터에만 따로 스펙을 오버라이드 하는 기능이 있다. 아래 그림에 나온 예시는 디플로이먼트 스펙을 기준으로 오버라이드 할 수 있는 항목을 보여주고 있다.

[그림 4.338] 가용 클러스터 설정 - Overrides

가용 클러스터 설정 - Overrides


위에서 언급한 레플리카셋 개수를 설정할 수 있지만 [가용 클러스터 설정] 탭 화면에서도 재정의 할 수 있다. spec.replicas 항목을 선택하고 5로 지정을 한다면 BXCP ADM에서 배포 시 아래와 같이 FederatedDeployment 리소스의 스펙이 만들어진다.

spec:
  overrides:
  - clusterName: host
    clusterOverrides:
    - op: replace
      path: /spec/replicas
      value: 5
			

4.36.10 온라인 애플리케이션 상세

온라인 애플리케이션 목록에서 애플리케이션 카드를 1개 클릭하면 진입할 수 있는 상세 정보를 제공하는 화면이다.

[그림 4.339] 온라인 애플리케이션 상세 화면

온라인 애플리케이션 상세 화면


위 그림은 배포가 성공적으로 이루어진 상태에서 온라인 애플리케이션 상세 화면을 나타냈다. 상세 화면은 최대한 많은 정보를 사용자에게 보여주기 위해 개발되었으므로 다음과 같은 정보를 제공한다.

  • 애플리케이션 기초 정보

  • 클러스터별 버전별 레플리카 정보

  • 클러스터 기준 메트릭(CPU, MEMORY, NETWORK, WAITING REASON, TERMINATED REASON)

  • 버전별 파드

  • 버전별 서비스

  • 컨피그맵

  • 시크릿

  • 버전별 상태

  • 이벤트

4.36.10.1 애플리케이션

애플리케이션 현황은 온라인 애플리케이션 목록에서 보여지는 정보와 동일한 정보를 사용자에게 알려주는 부분이다.

[그림 4.340] 온라인 애플리케이션 상세 - 애플리케이션

온라인 애플리케이션 상세 - 애플리케이션


Rolling 롤아웃인 경우에는 수정 및 삭제 처리를 할 수 있는 메뉴를 제공한다.

[그림 4.341] 온라인 애플리케이션 상세 - 애플리케이션 - 메뉴

온라인 애플리케이션 상세 - 애플리케이션 - 메뉴


4.36.10.2 클러스터

클러스터 현황은 클러스터를 기준으로 몇 개에 온라인 애플리케이션 파드가 구동하고 있는지 표현하며, 레플리카 갯수를 조정하는 기능을 제공한다.

[그림 4.342] BLUE 버전만 배포된 상태에 클러스터 현황

BLUE 버전만 배포된 상태에 클러스터 현황


그리고 롤아웃이 CANARY 또는 BG 일때 두 번째 배포가 이루어지면 다음 그림과 같이 BLUE, GREEN 버전이 배포된 상태를 알 수 있다.

[그림 4.343] BLUE / GREEN 버전 모두 배포된 상태에 클러스터 현황

BLUE / GREEN 버전 모두 배포된 상태에 클러스터 현황


클러스터 현황을 보면 레플리카셋 개수를 늘리는() 버튼이나, 줄이는() 버튼이 있는데 이것을 사용하면 클러스터별, 버전별 리플리카 갯수를 조정할 수 있다. 아래는 BLUE 버전 애플리케이션에 리플리카 갯수를 버튼을 통해서 +1 처리한 예시를 보여준다.

[그림 4.344] 리플리카 1개 상태를 증가시키는 버튼을 클릭한 이후 확인 메시지

리플리카 1개 상태를 증가시키는 버튼을 클릭한 이후 확인 메시지


4.36.10.3 메트릭

메트릭 현황은 클러스터 현황에서 선택한 파드에 대한 다양한 메트릭 정보를 제공한다.

[그림 4.345] 온라인 애플리케이션 상세 - 메트릭

온라인 애플리케이션 상세 - 메트릭


4.36.10.4 파드

파드 현황은 선택한 클러스터를 기준으로 애플리케이션에 파드 목록을 열람할 수 있다. 주요 상태를 나타내는 정보가 포함된 것이 특징이다.

[그림 4.346] 온라인 애플리케이션 상세 - 파드

온라인 애플리케이션 상세 - 파드


주요한 상태 정보 이외에 파드 1개를 클릭하게 되면 자세한 파드 정보를 확인할 수 있다.

[그림 4.347] 온라인 애플리케이션 상세 - 파드 - 상세

온라인 애플리케이션 상세 - 파드 - 상세


4.36.10.5 서비스

온라인 애플리케이션의 배포가 완료되면 자동으로 생성되는 서비스에 현황을 나타내는 부분이다.

[그림 4.348] 온라인 애플리케이션 상세 - 서비스

온라인 애플리케이션 상세 - 서비스


위에서 언급한 파드 현황에서 상세 정보를 확인할 수 있는것과 동일하게 쿠버네티스 서비스 리소스에 자세한 정보를 확인할 수 있다.

[그림 4.349] 온라인 애플리케이션 상세 - 서비스 - 상세

온라인 애플리케이션 상세 - 서비스 - 상세


4.36.10.6 컨피그맵

온라인 애플리케이션 스펙에서 컨피그맵 리소스를 지정했다면 그에 대한 컨피그맵 현황을 확인할 수 있다.

[그림 4.350] 온라인 애플리케이션 상세 - 컨피그맵

온라인 애플리케이션 상세 - 컨피그맵


아래는 컨피그맵 리소스에 상세한 내용을 확인한 예시이다.

[그림 4.351] 온라인 애플리케이션 상세 - 컨피그맵 - 상세

온라인 애플리케이션 상세 - 컨피그맵 - 상세


4.36.10.7 시크릿

온라인 애플리케이션 스펙에서 시크릿 리소스를 지정했다면 그것에 대한 시크릿 리소스 현황을 확인할 수 있다.

[그림 4.352] 온라인 애플리케이션 상세 - 시크릿

온라인 애플리케이션 상세 - 시크릿


아래는 시크릿에 상세 내용을 확인한 예시이다.

[그림 4.353] 온라인 애플리케이션 상세 - 시크릿 - 상세

온라인 애플리케이션 상세 - 시크릿 - 상세


4.36.10.8 퍼시스턴트 볼륨 클레임

온라인 애플리케이션 스펙에서 퍼시스턴트 볼륨 클레임 리소스를 지정했다면 그것에 대한 퍼시스턴트 볼륨 클레임 현황을 확인할 수 있다.

[그림 4.354] 온라인 애플리케이션 상세 - 퍼시스턴트 볼륨 클레임

온라인 애플리케이션 상세 - 퍼시스턴트 볼륨 클레임


[그림 4.355] 온라인 애플리케이션 상세 - 퍼시스턴트 볼륨 클레임 - 상세

온라인 애플리케이션 상세 - 퍼시스턴트 볼륨 클레임 - 상세


4.36.10.9 상태

온라인 애플리케이션 스펙을 기준으로 배포가 이루어지면 다양한 리소스가 생성이 되는데, 상태를 보여주는 현황을 다음과 같이 볼수 있다. kubectl describe 커맨드에서 보여주는 정보와 비슷한 내용으로 이해하면 된다.

[그림 4.356] 온라인 애플리케이션 상세 - 상태

온라인 애플리케이션 상세 - 상태


확인하고 싶은 상태가 있다면 아래 그림처럼 우측 상단에 필터 메뉴를 클릭해서 원하는 상태를 필터링할 수 있다.

[그림 4.357] 온라인 애플리케이션 상세 - 상태 - 필터 메뉴

온라인 애플리케이션 상세 - 상태 - 필터 메뉴


4.36.10.10 이벤트

온라인 애플리케이션 배포로 생성된 쿠버네티스 리소스에 관련된 이벤트 정보를 다음과 같이 확인할 수 있다.

[그림 4.358] 온라인 애플리케이션 상세 - 이벤트

온라인 애플리케이션 상세 - 이벤트


참고

쿠버네티스 이벤트 리소스의 경우에는 영구히 저장되지 않기 때문에 일정 시간이 지나면 이벤트 리소스 현황에 조회 결과가 없어진다.

4.36.11 온라인 애플리케이션 롤아웃

위에서 짧게 언급한 롤아웃에 따라서 애플리케이션 상세 화면이 어떤 내용을 보여주는지 설명한다.

본 설명에서는 ROLLING 롤아웃은 해당하지 않으며 CANARY, BLUE/GREEN(줄여서 BG) 롤아웃 일 때만 해당한다.

[그림 4.359] 온라인 애플리케이션 GREEN 버전 배포

온라인 애플리케이션 GREEN 버전 배포


위 그림은 BLUE 버전 온라인 애플리케이션이 배포된 이후에 GREEN 버전에 애플리케이션이 추가로 배포된 상태를 보여주고 있다. 클러스터 현황 부분에서 색상으로 버전을 구분하고 작동하고 있는 파드 갯수를 나타낸다.

애플리케이션 현황에 빌드 항목에는 11 버전은 BLUE 버전, 12 버전은 GREEN 버전에 대한 정보를 제공하고 있다.

파드 현황을 보면 파드의 이름 왼쪽에 색상으로 구분되는 아이콘을 통해서 식별을 용이하게 한다.

아래 그림을 보면 GREEN 버전에 온라인 애플리케이션 배포 시 상태를 각각 Type 항목 왼쪽에 색상으로 구분되는 아이콘이 위치해 있다.

[그림 4.360] 온라인 애플리케이션 GREEN 버전 배포 - 상태

온라인 애플리케이션 GREEN 버전 배포 - 상태


4.36.12 온라인 애플리케이션 롤아웃 처리

위에서 BLUE, GREEN 버전 배포를 모두한 상태에서는 온라인 애플리케이션 상세 화면에서 이 상태에 대한 추가적인 처리를 할 수 있다.

[그림 4.361] 온라인 애플리케이션 롤아웃 처리 메뉴

온라인 애플리케이션 롤아웃 처리 메뉴


BLUE, GREEN 버전이 모두 배포된 상태에서는 추가로 배포 처리가 이루어지지 않으며, 이 상태에서는 버전을 선택하는 처리를 완료해야만 배포를 다시 할 수 있다. 다음은 메뉴에 대한 설명이다.

  • 롤아웃 확정

    롤아웃 확정 메뉴를 선택하면 BLUE, GREEN 버전이 배포된 상태에서 GREEN 버전을 선택하는 처리가 이루어진다. GREEN 버전을 선택 시 처리하는 내용은 다음과 같다.

    • Istio DestinationRule 정보를 조정하여 BLUE 및 GREEN 트래픽을 GREEN 버전으로 라우트 되도록 처리

    • GREEN 빌드번호를 BLUE 빌드번호로 교체

    • GREEN 리비전번호를 BLUE 리비전번호로 교체

    • GREEN 태그 정보를 BLUE 태그 정보로 교체

    • BLUE 버전 Deployment 리소스 제거

    • GREEN 버전 Deployment 리소스에서 GREEN 버전 기준으로 설정된 어노테이션 정보를 BLUE 버전 기준으로 옮겨서 저장

    • 애플리케이션에 연결된 HPA 리소스가 있으면 GREEN 버전 Deployment 리소스 기준으로 재조정

  • 롤아웃 취소

    롤아웃 취소 메뉴를 선택하면 BLUE, GREEN 버전이 배포된 상태에서 BLUE 버전을 선택하는 처리가 된다. 롤아웃 취소는 다음과 같은 처리를 한다.

    • Istio DestinationRule 정보를 조정하여 BLUE 및 GREEN 트래픽을 GREEN 버전으로 라우트 되도록 처리

    • GREEN 빌드번호를 클리어

    • GREEN 리비전번호를 클리어

    • GREEN 태그 정보를 클리어

    • BLUE 버전에 스냅샷 정보로 쿠버네티스 서비스 재적용

    • GREEN 버전 Deployment 리소스 제거

    • BLUE 버전을 기준으로 NS/EW VirtualService 리소스 재적용

  • 롤아웃 교체

    롤아웃 교체 메뉴를 선택하면 CANARY 와 BG 롤아웃 간에 교체를 하기 위한 팝업을 사용할 수 있다. 롤아웃 교체의 경우에는 사용자가 선택하고 입력한 롤아웃 유형과 설정 정보로 VirtualService, DestinationRule 리소스가 재적용 된다.

4.36.12.1 롤아웃 확정

롤아웃 확정 메뉴를 클릭하면 다음과 같이 사용자에게 확인을 받게 된다.

[그림 4.362] 롤아웃 확정 처리 전

롤아웃 확정 처리 전


위에서 언급된 사용자 확인창에서 확인 버튼을 클릭하면 롤아웃 확정(GREEN 버전을 선택) 처리가 이루어진다. 위에 그림과 비교를 해보면 GREEN 버전에 리비전 10, 빌드번호 13 정보가 BLUE 버전으로 옮겨진 것을 알 수 있다.

[그림 4.363] 롤아웃 확정 처리 후

롤아웃 확정 처리 후


4.36.12.2 롤아웃 취소

롤아웃 확정 처리와는 반대로 롤아웃 취소 메뉴를 클릭하면 다음과 같이 사용자에게 확인을 받게 된다.

[그림 4.364] 롤아웃 취소 처리 전

롤아웃 취소 처리 전


롤아웃 취소 처리가 완료되면 위에 그림에서 BLUE 버전 기준에 리비전 10, 빌드번호 13 정보만 남은 상태로 아래 그림과 같이 취소가 완료된 것을 알 수 있다.

[그림 4.365] 롤아웃 취소 처리 후

롤아웃 취소 처리 후


4.36.12.3 롤아웃 교체

롤아웃 교체는 배포 프로세스가 완료되는 처리는 아니고 수정하는 처리로 CANARY에서 BG로 변경하거나, BG에서 CANARY로 변경하는 처리이다. 아래는 롤아웃 교체 메뉴를 클릭 시 제공되는 팝업이며, 이 팝업에서는 다른 정보는 수정하지 못하게 막혀있다.

[그림 4.366] 롤아웃 교체 처리 전

롤아웃 교체 처리 전


위에 그림에서 CANARY 롤아웃 유형으로 교체하고 적용을 하면 아래 그림과 같이 리비전번호, 빌드번호 정보는 변동이 없고 롤아웃 정보만 교체된 상태를 확인할 수 있다.

[그림 4.367] 롤아웃 교체 처리 후

롤아웃 교체 처리 후


4.37 배치 애플리케이션

쿠버네티스 JOB 리소스를 통해서 실행하기 위한 배치 애플리케이션을 관리하는 메뉴이다. 온라인 애플리케이션과는 다르게 JOB 리소스는 CI/CD 파이프 라인을 통과해도 생성되지 않으며, JOB 리소스 내부에 실제 처리를 담당하는 POD 리소스의 컨테이너 이미지만 생성이 된다.

4.37.1 배치 애플리케이션 목록

아래 그림과 같이 (Developer) [배치 애플리케이션] 메뉴를 통해 화면을 이동하면 생성된 배치 애플리케이션 목록을 온라인 애플리케이션 화면과 동일한 카드 형태의 스타일로 보여준다.

[그림 4.368] 배치 애플리케이션 목록

배치 애플리케이션 목록


4.37.2 배치 애플리케이션 현황

아래 그림처럼 카드 형태로 1개의 배치 애플리케이션에 현황을 나타내고 있다.

[그림 4.369] 배치 애플리케이션 현황

배치 애플리케이션 현황


  • 애플리케이션 이름

    애플리케이션 스펙을 최초 생성 시 지정한 애플리케이션 이름을 의미한다.

  • 애플리케이션 ID

    애플리케이션 스펙을 최초 생성 시 지정한 애플리케이션 ID를 의미한다.

  • 애플리케이션 설명

    애플리케이션 스펙을 최초 생성 시 지정한 애플리케이션 설명을 의미한다.

  • 빌드팩

    JOB 리소스로 실행시킬 파드 리소스의 이미지를 생성하기 위한 빌드팩에 정보를 나타낸다.

  • 빌드

    배치 애플리케이션도 CI/CD 파이프라인을 통해서 컨테이너 이미지는 생성하기 때문에 그에 대한 처리 과정에서 생성된 빌드번호를 표시한다.

4.37.3 배치 애플리케이션 메뉴

배치 애플리케이션 정보를 수정하거나 삭제하고 싶다면 다음 그림처럼 메뉴를 클릭해서 처리할 수 있다.

[그림 4.370] 배치 애플리케이션 현황 메뉴

배치 애플리케이션 현황 메뉴


애플리케이션 삭제 메뉴를 클릭한다면 다음과 같이 사용자에 확인을 받고 삭제가 처리된다.

[그림 4.371] 배치 애플리케이션 삭제 확인

배치 애플리케이션 삭제 확인


4.37.4 배치 애플리케이션 생성(수정) - 기본 설정

배치 애플리케이션 목록을 보여주는 화면에서 [Create Application] 버튼을 클릭하면 1개의 배치 애플리케이션을 생성할 수 있는 팝업 열거나, 카드 형태 영역에서 오른쪽 위에 메뉴를() 클릭하여 배치 애플리케이션 수정 메뉴를 누를 때도 동일한 팝업을 볼 수 있다. 이전에 설명했던 온라인 애플리케이션과는 다르게 배치 애플리케이션은 기본 설정 탭만 제공되는 것을 알 수 있다.

[그림 4.372] 배치 애플리케이션 생성(수정) - 기본 설정

배치 애플리케이션 생성(수정) - 기본 설정


[그림 4.373] 배치 애플리케이션 생성(수정) - 기본 설정 - 계속

배치 애플리케이션 생성(수정) - 기본 설정 - 계속


참고

애플리케이션 ID 정보를 입력하고 [검증] 버튼을 눌러서 검증이 완료되어야 다음으로 진행할 수 있다. 단, 이러한 처리는 애플리케이션을 처음 생성할 때 거치는 단계이며, 수정 시 애플리케이션 ID는 고칠 수 없으므로 거쳐가는 단계가 아니다.

[그림 4.374] 배치 애플리케이션 검증완료

배치 애플리케이션 검증완료


위에 그림을 기준으로 언급이 필요한 항목을 다음에 설명한다.

4.37.4.1 애플리케이션 ID

애플리케이션 ID는 BXCP ADM에서 관리하는 배치 애플리케이션 ID를 입력합니다. 쿠버네티스 환경에서는 배치 애플리케이션 ID 정보는 리소스에 이름으로 사용되지 않습니다.

4.37.4.2 애플리케이션 명

배치 애플리케이션의 이름을 입력합니다.

4.37.4.3 애플리케이션 설명

배치 애플리케이션에 대한 설명을 입력합니다.

4.37.4.4 배포 리소스

배치 애플리케이션을 배포할 때 사용될 배치 애플리케이션에 대한 코드, 이미지, 바이너리 등을 지정할 수 있는데, 선택할 수 있는 유형은 아래 그림을 참고한다.

[그림 4.375] 선택할 수 있는 배포 리소스 유형

선택할 수 있는 배포 리소스 유형


유형 - Gitlab

배포할 리소스가 Gitlab 서버에 관리되는 레파지토리인 경우에 사용하는 유형이다.

배포를 처리할 기준 브랜치를 지정해야 하며 미지정시 master 브랜치를 기준으로 처리된다. 이 Gitlab 유형은 빌드팩을 사용해서 배포가 이루어진다.

유형 - Container Image

배포할 리소스가 컨테이너 이미지 형태로 dockerhub, harbor 등에 레파지토리 서버를 사용하는 유형이다.

유형 - Object Storage

배포할 리소스가 http 프로토콜을 통해서 가져 올 수 있는 형태이면 사용하는 유형이다.

유형 - FTP

배포할 리소스가 ftp 프로토콜을 통해서 가져 올 수 있는 형태이면 사용하는 유형이다.

유형 - PCMS

배포 처리 자체를 다른 곳에서 이루어지는 형태에서 사용하는 유형이다.

인증선택

각각에 유형에 따라서 배포 리소스 접근 시 인증이 필요하면 선택하는 인증정보에 목록이다. 같은 프로젝트를 공유하는 다른 사용자가 필요한 인증을 이미 만들었다면 아래 그림과 같이 선택이 가능한데 알맞은 인증을 선택하여 사용가능하다.

[그림 4.376] 저장된 인증정보 선택 화면

저장된 인증정보 선택 화면


직접 입력

미리 생성된 인증정보가 없거나 필요한 인증정보가 없을 때에는 사용자가 직접 입력을 통해서 인증 정보를 만들 수 있다.

인증유형은 Token, ID/PASSWORD, Certificate 3가지 형태로 저장이 가능하다.

빌드팩

선택할 수 있는 빌드팩 정보가 나열된다. 여기서 나열되는 빌드팩은 배치 애플리케이션에 적합한 빌드팩이 조회된 결과로 이해하면 된다. 필요한 빌드팩이 없다면 관리자를 통해서 빌드팩을 생성해야 한다.

4.37.5 배치 애플리케이션 상세

배치 애플리케이션 목록에서 1개의 배치 애플리케이션을 클릭하면 배치 애플리케이션의 상세 화면으로 진입할 수 있다.

배치 애플리케이션을 생성한 직후에는 아래 그림처럼 쿠버네티스 JOB 리소스를 생성하지 않았기 때문에 내용이 없는 상태로 보인다.

[그림 4.377] 배치 애플리케이션 상세 - 신규 생성 시

배치 애플리케이션 상세 - 신규 생성 시


쿠버네티스 JOB 리소스를 최소 한번 생성을 하면 다음 그림과 같이 해당 JOB 리소스에 대한 목록을 열람 할 수 있다.

[그림 4.378] 배치 애플리케이션 상세 - Job 리소스를 생성 시

배치 애플리케이션 상세 - Job 리소스를 생성 시


다른 클러스터에서 생성한 JOB 리소스를 조회하려면 다음 그림과 같이 클러스터를 선택하는 콤보 박스를 이용해서 변경한다.

[그림 4.379] 배치 애플리케이션 상세 - 클러스터 변경

배치 애플리케이션 상세 - 클러스터 변경


4.37.6 JOB 생성

배치 애플리케이션을 생성했다면 컨테이너 이미지를 실행할 수 있는 쿠버네티스 JOB 리소스를 생성할 수 있다. [Create Job] 버튼을 클릭하면 다음 그림과 같은 그림에 팝업을 열 수 있다.

[그림 4.380] 배치 애플리케이션 상세 - Create Job 팝업

배치 애플리케이션 상세 - Create Job 팝업


[그림 4.381] 배치 애플리케이션 상세 - 팝업

배치 애플리케이션 상세 - 팝업


위에 그림에 나온 정보를 토대로 아래부터 새로운 쿠버네티스 JOB 리소스를 생성하는 예시를 보여준다.

apiVersion: batch/v1
kind: Job
metadata:
name: perl                                                                                                             (1)
namespace: bookinfo                                                                                                    (2)
labels:
	bankwareglobal.io/domain: bookinfo
	bankwareglobal.io/name: perl
spec:
template:
	spec:
		restartPolicy: OnFailure
		containers:
			- name: perl
				image: registry.bxcp.lab:5443/bookinfo/perl:v1                                                                     (3)
				command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]                                                      (4)

1

perl

JOB 리소스에 이름을 perl로 지정했다.

2

bookinfo

JOB 리소스에 네임스페이스를 bookinfo로 지정했다.

3

registry.bxcp.lab:5443/bookinfo/perl:v1

배치 애플리케이션에 설정한 배포 리소스를(Container Image) registry.bxcp.lab:5443/bookinfo/perl:v1 이미지를 설정했다.

4

["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]

샘플 이미지를 실행하는 커맨드를 지정했다.

위에서 필요한 정보를 모두 입력하고 [Save] 버튼을 클릭하면 유효성에 문제가 없으면 저장이 완료되고 그 즉시 쿠버네티스 JOB 리소스로 생성되어 작업이 실행된다.

4.37.7 생성한 JOB 리소스 확인

위에서 언급한대로 쿠버네티스 JOB 리소스 스펙을 저장하면 바로 실행이 되기 때문에 배치 애플리케이션에 상세 화면으로 진입을 하면 실행한 쿠버네티스 JOB 목록을 열람할 수 있다.

아래 그림을 보면 생성한 JOB 리소스에 요약 정보를 바로 확인할 수 있다.

[그림 4.382] 배치 애플리케이션 상세 - JOB 목록

배치 애플리케이션 상세 - JOB 목록


JOB 목록에 보여지는 행에서 1개를 클릭하면 아래 그림과 같이 실제 쿠버네티스 환경에 만들어진 YAML 스펙을 볼 수 있다. 위에서 perl 이라는 이름으로 생성한 쿠버네티스 JOB 리소스에 스펙을 볼 수 있다.

[그림 4.383] 쿠버네티스 JOB 리소스 스펙

쿠버네티스 JOB 리소스 스펙


파드 탭에는 쿠버네티스 JOB 리소스에 의해서 만들어졌던 파드 정보를 아래 그림처럼 확인 할 수 있다. 예시에 보이는 항목에서 Status 속성은 Succeeded 상태이니 생성한 JOB은 성공적으로 처리를 완료한 것을 알 수 있다.

[그림 4.384] 쿠버네티스 JOB 리소스에 의해 실행되는 파드

쿠버네티스 JOB 리소스에 의해 실행되는 파드


[그림 4.385] 쿠버네티스 JOB 리소스에 의해 실행되는 파드 - 상세

쿠버네티스 JOB 리소스에 의해 실행되는 파드 - 상세


아래 그림은 쿠버네티스 JOB 리소스에 의해 실행되는 파드에 이벤트 정보를 확인할 수 있는 탭 화면 예시이다.

[그림 4.386] 파드의 실행에 의해 발생한 이벤트 정보

파드의 실행에 의해 발생한 이벤트 정보


참고

위에 나온 이벤트는 쿠버네티스 이벤트 리소스이기 때문에 일정 시간이 지나면 사라지는 데이터이다.

4.38 레거시 애플리케이션

레거시 애플리케이션은 이름에서 알 수 있듯이 레거시 환경에서 서비스를 제공하는 애플리케이션을 관리하는 화면이다.

4.38.1 레거시 애플리케이션 목록

아래 그림과 같이 (Developer) [레거시 애플리케이션] 메뉴를 통해 화면을 이동하면 생성된 레거시 애플리케이션 목록을 온라인 애플리케이션 화면과 동일한 카드 형태의 스타일로 보여준다.

[그림 4.387] 레거시 애플리케이션 목록

레거시 애플리케이션 목록


4.38.2 레거시 애플리케이션 현황

배치 애플리케이션에서 봤던 동일한 카드 형태의 스타일로 레거시 애플리케이션 1개를 표현하고 있다.

[그림 4.388] 레거시 애플리케이션 현황

레거시 애플리케이션 현황


  • 애플리케이션 이름

    애플리케이션 스펙을 최초 생성 시 지정한 애플리케이션 이름을 의미한다.

  • 애플리케이션 ID

    애플리케이션 스펙을 최초 생성 시 지정한 애플리케이션 ID를 의미한다.

  • 애플리케이션 설명

    애플리케이션 스펙을 최초 생성 시 지정한 애플리케이션 설명을 의미한다.

  • 빌드팩

    레거시 애플리케이션에 컨테이너 이미지를 생성하기 위한 빌드팩 정보이다.

  • 빌드

    레거시 애플리케이션도 CI/CD 파이프라인을 통해서 컨테이너 이미지는 생성하기 때문에 그에 대한 처리 과정에서 생성된 빌드번호를 표시한다.

4.38.3 레거시 애플리케이션 메뉴

레거시 애플리케이션 정보를 수정하거나 삭제하고 싶다면 다음 그림처럼 메뉴를 클릭해서 처리할 수 있다.

[그림 4.389] 레거시 애플리케이션 현황 메뉴

레거시 애플리케이션 현황 메뉴


애플리케이션 삭제 메뉴를 클릭한다면 다음과 같이 사용자에 확인을 받고 삭제가 처리된다.

[그림 4.390] 레거시 애플리케이션 삭제 확인

레거시 애플리케이션 삭제 확인


4.38.4 레거시 애플리케이션 생성(수정) - 기본 설정

레거시 애플리케이션 목록을 보여주는 화면에서 [Create Application] 버튼을 클릭하면 1개의 레거시 애플리케이션을 생성할 수 있는 팝업 열거나, 카드 형태 영역에서 오른쪽 위에 메뉴를() 클릭하여 레거시 애플리케이션 수정 메뉴를 누를 때도 동일한 팝업을 볼 수 있다. 레거시 애플리케이션 카드를 클릭해도 수정하는 팝업 화면을 열 수 있다. 이전에 설명했던 배치 애플리케이션과 동일하게 레거시 애플리케이션은 기본 설정 탭만 제공되는 것을 알 수 있다.

[그림 4.391] 레거시 애플리케이션 생성(수정) - 기본 설정

레거시 애플리케이션 생성(수정) - 기본 설정


[그림 4.392] 레거시 애플리케이션 생성(수정) - 기본 설정 - 계속

레거시 애플리케이션 생성(수정) - 기본 설정 - 계속


참고

애플리케이션 ID 정보를 입력하고 [검증] 버튼을 눌러서 검증이 완료되어야 다음으로 진행할 수 있다. 단, 이러한 처리는 애플리케이션을 처음 생성할 때 거치는 단계이며, 수정 시 애플리케이션 ID는 고칠 수 없으므로 거쳐가는 단계가 아니다.

[그림 4.393] 레거시 애플리케이션 검증완료

레거시 애플리케이션 검증완료


위에 그림을 기준으로 언급이 필요한 항목을 다음에 설명한다.

4.38.4.1 애플리케이션 ID

애플리케이션 ID는 BXCP ADM에서 관리하는 레거시 애플리케이션 ID를 입력합니다. 프로젝트 범위 기준으로 유일한 ID를 입력해야 한다.

4.38.4.2 애플리케이션 명

레거시 애플리케이션의 이름을 입력합니다.

4.38.4.3 애플리케이션 설명

레거시 애플리케이션에 대한 설명을 입력합니다.

4.38.4.4 배포 리소스

레거시 애플리케이션을 배포할 때 사용될 배치 애플리케이션에 대한 코드, 이미지, 바이너리 등을 지정할 수 있는데, 선택할 수 있는 유형은 아래 그림을 참고한다.

[그림 4.394] 선택할 수 있는 배포 리소스 유형

선택할 수 있는 배포 리소스 유형


유형 - Gitlab

배포할 리소스가 Gitlab 서버에 관리되는 레파지토리인 경우에 사용하는 유형이다.

배포를 처리할 기준 브랜치를 지정해야 하며 미지정시 master 브랜치를 기준으로 처리된다. 이 Gitlab 유형은 빌드팩을 사용해서 배포가 이루어진다.

유형 - Container Image

배포할 리소스가 컨테이너 이미지 형태로 dockerhub, harbor 등에 레파지토리 서버를 사용하는 유형이다.

유형 - Object Storage

배포할 리소스가 http 프로토콜을 통해서 가져 올 수 있는 형태이면 사용하는 유형이다.

유형 - FTP

배포할 리소스가 ftp 프로토콜을 통해서 가져 올 수 있는 형태이면 사용하는 유형이다.

유형 - PCMS

배포 처리 자체를 다른 곳에서 이루어지는 형태에서 사용하는 유형이다.

인증선택

각각에 유형에 따라서 배포 리소스 접근 시 인증이 필요하면 선택하는 인증정보에 목록이다. 같은 프로젝트를 공유하는 다른 사용자가 필요한 인증을 이미 만들었다면 아래 그림과 같이 선택이 가능한데 알맞은 인증을 선택하여 사용가능하다.

[그림 4.395] 저장된 인증정보 선택 화면

저장된 인증정보 선택 화면


직접 입력

미리 생성된 인증정보가 없거나 필요한 인증정보가 없을 때에는 사용자가 직접 입력을 통해서 인증 정보를 만들 수 있다.

인증유형은 Token, ID/PASSWORD, Certificate 3가지 형태로 저장이 가능하다.

빌드팩

선택할 수 있는 빌드팩 정보가 나열된다. 여기서 나열되는 빌드팩은 배치 애플리케이션에 적합한 빌드팩이 조회된 결과로 이해하면 된다. 필요한 빌드팩이 없다면 관리자를 통해서 빌드팩을 생성해야 한다.

4.39 빌드

(Developer) [빌드] 메뉴를 통해서 화면으로 이동을 하면 아래 그림처럼 사용자가 선택한 프로젝트 - 애플리케이션을 기준으로 빌드를 처리했던 이력을 열람 할 수 있다.

[그림 4.396] bookinfo - productpage 빌드 목록

bookinfo - productpage 빌드 목록


빌드 화면에서는 빌드팩을 통해서 애플리케이션이 빌드된 정보를 열람할 수 있다. 이 화면에서는 Development 워크스페이스에서 Staging 워크스페이스로 컨테이너 이미지를 이관하는 릴리즈 이관 프로세스를 시작할 수 있게 하는 기능을 제공한다.

4.39.1 빌드 목록

빌드 메뉴를 클릭해서 화면으로 진입하면 아래와 같은 빌드번호를 기준으로 처리했던 현황을 볼 수 있다.

[그림 4.397] bookinfo - productpage 빌드 목록

bookinfo - productpage 빌드 목록


애플리케이션 1개를 기준으로 보여주기 때문에 다른 애플리케이션에 빌드 현황은 아래와 같이 프로젝트/애플리케이션 필터링 콤보를 통해서 조절이 가능하다.

[그림 4.398] bookinfo - productpage 빌드 목록 - 필터링

bookinfo - productpage 빌드 목록 - 필터링


[그림 4.399] bookinfo - productpage 빌드 목록 - 필터링 - 애플리케이션 필터

bookinfo - productpage 빌드 목록 - 필터링 - 애플리케이션 필터


아래 그림과 같이 빌드 목록에서 보이는 빌드번호 1개에 대한 데이터를 보면 다양한 정보를 보여주고 있다.

[그림 4.400] bookinfo - productpage 빌드 목록 - 행 데이터

bookinfo - productpage 빌드 목록 - 행 데이터


위에 그림에 나온 빌드 정보는 아래 그림에 젠킨스 파이프라인 실행 결과에 일치한다.

[그림 4.401] 행 데이터와 일치하는 젠킨스 파이프 라인 실행 이력

행 데이터와 일치하는 젠킨스 파이프 라인 실행 이력


1개의 빌드 실행 이력에 표시되는 항목은 아래와 같은 의미를 가진다.

  • 빌드번호, 커밋 메시지

    웹훅을 통해서 자동으로 파이프라인이 실행되어 채번된 빌드번호와, 웹훅이 발생하게 된 커밋에 메시지를 보여준다.

  • 수행 상태

    파이프라인이 실행된 결과를 보여준다.

  • 소요 시간

    파이프라인이 실행된 경과 시간을 의미한다.

  • 리소스 ID

    파이프라인 솔루션에서 채번한 리소스에 ID 이다. 정보성 데이터

  • 릴리즈 등록 여부

    릴리즈로 등록하여 애플리케이션 이관을 할 수 있는 빌드 처리건인지 여부를 나타낸다.

  • 수행 일시

    빌드 처리가 이루어진 일시를 나타낸다.

빌드 목록에 행 데이터는 아래 그림과 같이 메뉴를 통해서 릴리즈 등록 혹은 빌드 삭제 처리가 가능하다.

[그림 4.402] bookinfo - productpage 빌드 목록 - 메뉴

bookinfo - productpage 빌드 목록 - 메뉴


릴리즈 등록 메뉴를 클릭하게 되면 아래 그림처럼 빌드번호에 대해서 릴리즈를 등록할 수 있다. 릴리즈를 등록하면 해당 애플리케이션을 이관 처리 후에 배포 시 릴리즈 등록된 빌드에 결과물인 컨테이너 이미지를 가져올 수 있다.

[그림 4.403] 릴리즈 등록

릴리즈 등록


빌드 삭제 메뉴를 클릭하게 되면 아래 그림처럼 저장된 빌드 이력을 삭제할 수 있다.

[그림 4.404] 빌드 삭제

빌드 삭제


4.39.2 빌드 상세

빌드 이력을 클릭하면 파이프라인을 통해서 처리된 결과를 상세하게 확인 할 수 있는데 아래는 그 예시를 보여준다.

[그림 4.405] bookinfo - productpage #15 빌드 상세

bookinfo - productpage #15 빌드 상세


빌드 목록에서 보이는 항목에 추가로 파이프라인에 정의된 단계별 처리 상태를 보기 좋게 보여주고 있다. 각각에 단계에 실행시간, 상태, 이름 등이 표시되는 것을 알 수 있다.

아래는 # Application Delivery 단계를 클릭을 했을 때 확인할 수 있는 화면이다. 실제로 젠킨스에서 실행했던 로그 정보를 열람할 수 있다.

[그림 4.406] 빌드 #15 - Application Delivery 단계

빌드 #15 - Application Delivery 단계


빌드 상세에는 액션 버튼을 제공하고 있는데 아래 그림을 참고한다.

[그림 4.407] 빌드 상세 - 액션 버튼

빌드 상세 - 액션 버튼


  • 릴리즈 수정

    릴리즈 수정은 릴리즈 등록은 처리했다면 보이는 메뉴로 등록했던 정보를 수정하는 팝업을 열어준다.

  • 빌드 삭제

    빌드 삭제 메뉴는 현재 열람하는 빌드번호를 삭제한다.

  • 전체 로그 viewer

    파이프라인이 실행된 결과 로그를 열람하는 팝업을 제공한다. 하단에는 [Reload] 버튼으로 로그를 새로고침 할 수 있고 [Download] 버튼을 통해서 로그를 내려받을수 있다.

    [그림 4.408] 젠킨스 실행 로그

    젠킨스 실행 로그


  • 스크립트 viewer

    파이프라인에 정의된 각종 스크립트 정보를 확인할 수 있는 팝업을 제공한다.

    [그림 4.409] 젠킨스 작업 스크립트

    젠킨스 작업 스크립트


4.40 릴리즈

(Developer) [릴리즈] 메뉴를 통해서 화면으로 이동을 하면 아래 그림처럼 사용자가 직접 등록한 릴리즈 데이터를 열람 할 수 있다.

[그림 4.410] 릴리즈 화면

릴리즈 화면


애플리케이션에 빌드 이력을 기준으로 등록된 릴리즈 정보를 관리할 수 있다. 릴리즈에서는 다른 워크스페이스에 컨테이너 이미지를 가져오거나, 다른 워크스페이스에서 이미지를 가져올 수 있도록 상태를 변경하는 유형에 처리를 할 수 있는 화면이다.

4.40.1 릴리즈 목록

릴리즈 목록 화면은 빌드 정보를 릴리즈 등록 처리로 등록이 완료된 대상을 조회하는 화면이다.

[그림 4.411] 릴리즈 목록

릴리즈 목록


릴리즈 목록은 조회된 행마다 상세 팝업을 제공하지 않고 조회된 결과 정도만 참고하는 화면이다. 특이한 것은 #15 버전 아이콘 처럼 빌드번호가 배포된 상태이면 사용자에 이해를 돕기 위해서 버전을 색상으로 표시하게 된다.

아래 그림은 메뉴를 클릭해서 활성화된 메뉴이다. 릴리즈 수정은 이전에 처리했던 릴리즈 등록과 동일한 스타일에 팝업을 열고 내용을 수정할 수 있다.

[그림 4.412] 릴리즈 목록 메뉴

릴리즈 목록 메뉴


릴리즈 승인이 이루어진 릴리즈 데이터는 비로소 이관된 애플리케이션을 배포할 수 있게 체크하는 처리로 이해하면 된다.

4.41 배포이력

(Developer) [배포이력] 메뉴를 통해서 화면으로 이동을 하면 프로젝트별, 애플리케이션별 배포된 이력을 아래 그림처럼 열람할 수 있다.

[그림 4.413] 배포이력 메뉴

배포이력 메뉴


4.41.1 배포이력

[배포이력] 메뉴를 클릭하면 아래 그림같은 화면이 보이는데, 예시에서는 bookinfo 프로젝트에 productpage 애플리케이션에 배포이력이다. 예시에서 보여주는 데이터는 Development 시스템 구분을 가지는 bxcp-dev 워크스페이스에 데이터를 조회한 결과이기 때문에 CI/CD 파이프라인 처리를 통해서 배포된 이력으로 이해할 수 있다.

[그림 4.414] 배포이력

배포이력


아래 그림을 보면 productpage 애플리케이션이 빌드번호 13로 BLUE 버전이 배포된 이력을 알 수 있다.

[그림 4.415] 배포이력 - BLUE 버전

배포이력 - BLUE 버전


그리고 아래 그림은 productpage 애플리케이션이 빌드번호 15로 GREEN 버전으로 배포된 이력을 나타내고 있다.

[그림 4.416] 배포이력 - GREEN 버전

배포이력 - GREEN 버전


그리고 각각에 배포이력은 정상 여부를 체크할 수 있는 라디오 버튼이 있다. 이것은 이관한 애플리케이션을 배포할 때 사용되는 정보이다.

아래 그림을 보면 배포이력은 각각 메뉴를 통해 롤백 처리를 할 수 있다. 롤백 처리는 사용자 확인을 거치면 즉시 실행되는 형태로 동작을 하기 때문에 릴리즈 등록 처리 시 롤백 처리를 염두해서 제목이나 설명을 작성해야 한다.

[그림 4.417] 배포이력 - 롤백 메뉴

배포이력 - 롤백 메뉴


경고

애플리케이션이 BLUE, GREEN 버전이 모두 배포된 상태에서 롤백 처리를 실행하면 아래와 같이 오류가 발생한다

롤아웃 유형에는 관계없이 롤백 처리는 BLUE 버전만 배포된 상태에서만 사용할 수 있다.

[그림 4.418] 롤백 에러

롤백 에러


4.42 프로젝트 정보 - 요약 정보

(Developer) [프로젝트 정보] > [요약 정보] 메뉴를 통해 진입하는 요약 정보 화면은 BXCP ADM 프로젝트를 기준으로 요약된 정보를 제공한다.

아래 그림이 host 클러스터, bookinfo 프로젝트를 기준으로 제공하는 정보를 표시하는 요약 정보 화면이다.

[그림 4.419] 프로젝트 - 요약 정보

프로젝트 - 요약 정보


요약 정보 화면에서도 메트릭 정보가 있기 때문에 그라파나 화면으로 이동하여 메트릭 정보를 보는 번거로움을 피할 수 있다. 하지만 요약 정보 화면에서 제공하지 않는 정보는 당연히 Grafana, kiali 등의 화면을 이용해야 한다.

4.42.1 요약 정보 조회

[프로젝트 정보] > [요약 정보] 메뉴로 진입을 하면 이전에 사용자가 선택했던 프로젝트 정보를 기준으로 데이터가 조회된다. 다른 프로젝트의 요약 정보나 다른 클러스터에 요약 정보를 조회 시 아래 그림에 표시한 컨트롤러를 사용하면 원하는 조회 조건을 변경할 수 있다.

[그림 4.420] 요약 정보 - 조회 필터링

요약 정보 - 조회 필터링


참고

클러스터를 표현하는 카드에는 아이콘으로 상태를 제공하고 있는데 정상적인() 상태의 아이콘과 비정상적인() 상태의 아이콘이 그것이다. 그리고 비정상적인 아이콘으로 표시되는 클러스터는 클릭을 할 수 없다.

4.42.2 클러스터 정보

필터링 상태에 클러스터는 아래 그림처럼 클러스터 카드에 파란색 테두리로 표기가 되는것을 알 수 있다. 그리고 선택된 클러스터의 클라우드 프로바이더 정보를 왼쪽 하단에 아이콘으로 제공한다. 여기서는 vmware vSphere(), AWS()를 클라우드 프로바이더로 사용하는 것을 알 수 있다.

[그림 4.421] 요약 정보 - 쿠버네티스 리소스 개수

요약 정보 - 쿠버네티스 리소스 개수


4.42.3 프로젝트 정보 하위 메뉴와 연동

요약 정보 화면에서 아래 그림에 표시된 부분은 각각에 리소스 개수를 제공하고 있는데, 이 리소스 개수를 표시하는 영역은 클릭이 가능하고 클릭을 하면 해당하는 쿠버네티스 리소스의 상세한 정보를 열람하는 화면으로 이동할 수 있다.

[그림 4.422] 요약 정보 - 쿠버네티스 리소스 개수

요약 정보 - 쿠버네티스 리소스 개수


리소스 개수를 표시하는 영역별로 이동하는 메뉴는 아래와 같다.

  • Pods : [프로젝트 정보] > [파드]

  • Service : [프로젝트 정보] > [서비스]

  • Config Maps : [프로젝트 정보] > [컨피그맵]

  • Secrets : [프로젝트 정보] > [시크릿]

4.42.4 프로젝트의 레플리카 정보

요약 정보 화면에서 아래 그림에 표시된 부분은 프로젝트를 기준으로 스펙에 정의된 레플리카 개수 대비 Ready 상태 레플리카 개수를 보여준다. 프로젝트를 기준으로 도넛형 차트와 퍼센트 또한 제공하므로 유용하게 활용할 수 있다

[그림 4.423] 요약 정보 - 레플리카

요약 정보 - 레플리카


4.42.5 프로젝트의 이벤트 정보

프로젝트에 속한 사용자가 어떤 리소스를 적용하거나(create, replace, apply, delete 등) 적용된 리소스의 문제가 발생시 쿠버네티스 이벤트 리소스가 만들어지는데 요약 정보 화면에서는 프로젝트를 기준으로 이벤트를 조회하여 제공하는 영역이 있다. 아래 그림을 보면 이벤트 내용이 시간을 기준으로 확인할 수 있으며 이벤트 데이터의 정렬은 시간의 내림차순이다.

[그림 4.424] 요약 정보 - 이벤트

요약 정보 - 이벤트


이벤트 정보는 스트리밍 방식으로 자동으로 조회되며, 우측 상단에 반복 조회를 할 필요가 없다. 그리고 위에서 언급한 프로젝트를 기준으로 쿠버네티스 주요 리소스의 개수를 제공하는 영역처럼 이벤트 정보를 제공하는 영역 하단에 [More] 클릭하면 이벤트 화면으로 이동할 수 있다.

4.42.6 프로젝트의 사용량

아래 그림을 보면 프로젝트를 기준으로 다양한 메트릭 정보가 제공되는 것을 알 수 있다. BXCP ADM에서 볼 수 있는 메트릭 정보들과 유사한 정보를 제공하지만 프로젝트를 기준으로 제공하는 컨셉이기 때문에 Resource Quota 정보도 볼 수 있는 것이 특징이다.

[그림 4.425] 요약 정보 - 사용량

요약 정보 - 사용량


참고

각각에 차트는 마우스 커서를 올리면 상세한 수치를 제공한다.