애플리케이션 배포
Last updated
Last updated
신규 워크로드를 생성하기 전 imagePullSecrets 생성 및 등록이 필요합니다. 여기를 참고 하세요.
서비스 맵의 워크로드 탭 화면에서 워크로드 그룹을 생성합니다.
1) [애플리케이션] - [서비스 맵] 탭에서 워크로드를 생성할 서비스 맵을 선택한 후 워크로드로 이동합니다.
2) 워크로드 그룹명 우측에 위치한 확장 메뉴(점 세 개)를 클릭합니다.
3) 추가 항목에서 원하는 방향으로 그룹 추가 선택(ex. 오른쪽 그룹 추가)
4) 추가할 워크로드 그룹의 이름을 입력할 수 있는 텍스트 입력 폼이 나타납니다. 워크로드 그룹의 이름을 입력하고 엔터키를 누릅니다.
워크로드 그룹명은 필수입력 항목입니다.
5) 워크로드 그룹이 새로 추가된 것을 확인합니다.
Deployment, Stateful Set, Daemon Set, Job, Cron Job 등의 워크로드를 생성합니다. 워크로드의 유형은 달라도 컨테이너 정보를 입력하는 방법은 기본적으로 동일합니다.
1) [애플리케이션] - [서비스 맵] 탭에서 워크 로드를 생성할 서비스 맵을 선택한 후 워크로드로 이동하여 "+ 생성" 버튼을 클릭합니다.
2) 생성하려는 워크로드의 유형을 선택합니다.
1) 워크로드의 기본 정보 (유형, 이름, 그룹, 설명, 라벨, 주석), 배포 및 관리 정책 (Toleration, 배포 정책, 오토스케일링, 업데이트 정책), 컨테이너 정보 (초기화 컨테이너, 컨테이너), 스토리지 정보 (볼륨, 볼륨 마운트)를 입력 후 "저장" 버튼을 클릭합니다.
모든 정보를 입력할 필요는 없습니다. 이름, 그룹, 설명, 한 개 이상의 컨테이너 정보를 반드시 설정해야 하지만, 나머지 정보는 필요에 따라 입력하면 됩니다.
유형
워크로드 생성 시 선택한 유형으로 표기되어 있음
이름*
생성할 워크로드 명을 입력
그룹*
생성되어 있는 워크로드 그룹명 중 택 1
설명*
워크로드에 대한 설명 작성
라벨
Key / value 값으로 지정되며 해당 정보로 정보 식별 가능
주석
특별한 기능은 없지만 부연 설명으로 사용
Node Affinity
노드의 라벨을 확인하여 해당 라벨이 적혀있는 노드에만 배포할 수 있도록 설정
Toleration
taints가 있는 노드에도 pod가 배치 가능하도록 규칙 설정
배포 정책
Replica, 호스트, 기동/중지 시간, 권한 등에 대한 POD 배포의 전반적인 정책 설정
오토스케일링
리소스 측면에서 시스템이 자동으로 규모를 조절(scale) 하는 것을 설정
업데이트 정책
파드 업데이트 시 필요한 정책 설정
Image Pull Secret
harbor에 접속하여 컨테이너 이미지를 받아올 수 있게 harhor login 정보 (2.1.1 참고하여 등록)
1) 시크릿을 등록해줄 워크로드 선택 후 image pull secret 옆 아이콘을 클릭해줍니다.
2) 등록할 시크릿을 선택해 주고 "+ 추가" 버튼을 클릭한 후 "저장" 버튼을 클릭합니다.
1) 컨테이너 기본 정보
컨테이너 이름, 이미지 정보, CPU/Memory/GPU 자원 요청량과 제한량을 입력합니다. 컨테이너 이름과 이미지 정보는 필수 입력 정보입니다. CPU/Memory 자원 요청량과 제한량은 별도 입력하지 않는 경우 입력 화면에서 회색으로 표시되는 디폴트 값이 설정됩니다.
이름*
생성할 컨테이너 이름 입력, 소문자, 숫자, 특수문자(-)만 사용 가능
이미지*
pod로 생성할 이미지 정보 입력
CPU *
요청량과 제한량을 설정하여, pod 기동 시 필요한 cpu(요청량)와 최대로 할당받을 수 있는 cpu(제한량) 설정 default는 100
Memory*
요청량과 제한량을 설정하여, pod 기동 시 필요한 mem(요청량)과 최대로 할당받을 수 있는 mem(제한량) 설정
GPU 자원
gpu를 사용하는 pod라면 gpu에 대한 제한량과 요청량 설정
2) 컨테이너 명령어
컨테이너 명령어는 필수 값은 아니며, 필요하다면 사용
컨테이너에서 실행할 커맨드 및 Arguments 정보를 입력합니다.
커맨드와 Arguments 항목은 [+추가] 버튼으로 선택적으로 추가할 수 있습니다.
불필요 시 텍스트 필드 우측의 [ - ] 버튼을 눌러 삭제해야 합니다.
커맨드
pod 시 수행해야 하는 명령어 값 입력
Arguments
pod 시 수행해야 하는 명령어에 대한 Arguments 입력
3) 컨테이너 환경 변수
컨테이너 환경 변수는 필수 값은 아니며, 필요하다면 사용
컨테이너에서 사용할 각종 설정 정보를 설정합니다. 설정 정보에는 환경 변수, 컨피그 맵, 시크릿, 워크로드 메타데이터에 대한 필드 참조 유형이 있습니다. 컨테이너에서 사용할 컨피그 맵과 시크릿은 별도의 설정 정보 화면에서 미리 생성해 두어야 합니다.
직접 입력(KEY)*
pod의 환경 변수 설정 시 등록해야 되는 환경 변수의 key 값 직접 입력
직접 입력(VALUE)*
pod의 환경 변수 설정 시 등록해야 되는 환경 변수의 value 값 직접 입력
컨피그 맵 값(KEY)*
환경 변수에 등록할 컨피그 맵 값 이름 입력
컨피그 맵 값(VALUE)*
기 설정한 컨피그 맵의 이름 선택
시크릿 값(KEY)*
환경 변수에 등록할 시크릿 값 이름 입력
시크릿 값(VALUE)*
기 설정한 시크릿의 이름 선택
Field Ref(KEY)
pod의 필드 값을 참조하는 key 입력
Field Ref(VALUE)*
pod의 필드 값을 참조하는 value 입력
Resource Field Ref(KEY)
pod의 resource 필드 값을 참조하는 key 입력
Resource Field Ref(VALUE)*
pod의 resource 필드 값을 참조하는 value 입력
4) 보안 설정
보안 설정은 필수 값은 아니며, 필요하다면 사용
컨테이너에 대한 사용자 및 권한이나 Linux Capabilities를 설정합니다.
Run as Non ROOT
컨테이너가 루트 사용자가 아닌 일반 사용자로 실행할 경우 필요
Run as User
컨테이너가 실행될 때 사용될 유저 입력
Run as Group
컨테이너가 속할 그룹 입력
Run Privilleged Mode
컨테이너가 호스트 시스템의 커널과 직접 상호 작용할 수 있도록 할 경우 필요
Allow Privillege Escalation
특권 상승을 허용할지 여부 설정
Read Only Root filesystem
컨테이너의 루트 파일 시스템이 읽기 전용으로 설정
seLinuxOptions(level)
SELinux 보안 정책에서 사용되는 수준(level)을 설정
seLinuxOptions(role)
SELinux 보안 정책에서 사용되는 역할(role)을 설정
seLinuxOptions(type)
SELinux 보안 정책에서 사용되는 유형(type)을 설정
seLinuxOptions(user)
SELinux 보안 정책에서 사용되는 사용자(user)를 설정
Linux Capabilities(add)
Linux 커널 기능을 추가로 설정
Linux Capabilities(drop)
특정 Linux 커널 기능을 제거
5) 헬스 체크
헬스 체크 설정은 필수 값은 아니며, 필요하다면 사용
컨테이너에 대한 Liveness Probe와 Readiness Probe를 설정합니다.
Liveness Probe 탭과 Readiness Probe 탭의 Probe 유형을 선택 할 수 있습니다.
EXEC: 지정된 명령어를 컨테이너 내부에서 실행하고, 명령어의 종료 코드를 확인
TCP SOCKET: 특정 호스트와 포트로 TCP 소켓 연결을 시도하고 성공 여부를 확인
HTTP GET: 지정된 HTTP 엔드 포인트에 GET 요청을 보내고 성공 여부를 확인
6) LifeCycle Hook
LifeCycle Hook 설정은 필수 값은 아니며, 필요하다면 사용
PostStart, PreStop 라이프 사이클 훅을 입력합니다.
Port Start 탭과 Pre Stop 탭의 Hook 유형을 선택할 수 있습니다.
EXEC: 컨테이너가 시작되거나(Port Start) 종료되기 전에(Pre Stop) 내부적인 프로세스나 스크립트를 실행하기 위해 컨테이너 내부에서 지정된 명령어 등록
HTTP GET: 컨테이너가 시작된 후 정상적으로 서비스할 준비가 되었는지 확인하기 위해 지정된 HTTP 엔드 포인트로 HTTP GET 요청하도록 등록
7) 컨테이너 포트
컨테이너 포트 정보를 입력합니다.
컨테이너 포트 필드는 필수 입력 항입니다.
프로토콜 필드는 TCP, UDP, SCTP 항목을 선택 할 수 있습니다.
컨테이너 포트*
생성할 컨테이너 포트의 번호 입력
프로토콜(택1)
네트워크 통신 시 사용되는 특정한 통신 규약
이름
생성할 컨테이너 포트의 이름을 입력
호스트 아이피
호스트 머신의 IP 주소
호스트 포트
호스트 머신에서 해당 컨테이너 포트에 연결되는 포트 번호
1) 초기화 컨테이너 정보 입력 항목은 일반 컨테이너의 경우와 동일합니다. (실행 순서만 다릅니다.)
2) 파드 내에서 메인 애플리케이션 컨테이너가 시작되기 전에 실행되는 일회성 컨테이너입니다. Init 컨테이너는 애플리케이션 컨테이너가 시작되기 전에 특정 작업을 수행하고, 그 결과를 공유 볼륨을 통해 애플리케이션 컨테이너에 전달하기 위해 사용합니다.
배포, 오토스케일링, 업데이트 정책 입력 부분은 워크로드 생성 기본 정보 입력 부분 아랫부분에 위치해 있습니다. 입력 순서는 상관없고, 필요한 경우에만 해당 정보를 설정하면 됩니다.
1) Toleration 설정
Effect(택1)
노드에 Pod를 배치하는 규칙 설정 가능, NoSchedule, PreferNoSchedule, NoExcute의 3가지의 옵션이 있음
Key*
Toleration의Key 값을 작성
Operator(택1)
Exists, Equal 선택 가능, Equal은 key와 value effect가 모두 일치하는지 확인, Exists는 어떤 taint를 갖고 있든지 무시
Value*
Toleration의 Value 값을 작성, Operator > Equal 옵션 선택 시 활성화
Toleration Seconds
파드(Pod)가 특정 노드에서 스케줄링 될 때, 해당 노드가 특정 Taint를 가지고 있어도 그 노드에서 파드가 일시적으로 허용되는 최대 시간을 나타냄, Effect > NoExcute 옵션 선택 시 활성화됨
2) 배포 정책 설정
복제 수 필드는 필수 입력 항목입니다. 복제할 인스턴스의 개수를 양의 정수로 입력합니다.
복제 수
복제할 인스턴스의 개수를 작성
호스트 명
호스트 명 작성
종료 시 유예 시간(초)
컨테이너나 파드가 종료되기 전에 대기해야 하는 시간을 설정하는 데 사용
준비 후 대기 시간(초)
작업이 완료된 후 추가적인 동작을 실행하기 전에 대기해야 하는 시간
노드 라벨 KEY
노드를 지정하여 인스턴스를 배포할 경우 노드가 가진 라벨의 Key 값
노드 라벨 값
노드를 지정하여 인스턴스를 배포할 경우 노드가 가진 라벨의 값
접근 권한 (RBAC services Account)
리소스에 대한 접근 권한을 관리하는데 사용되는 서비스 계정
3) 오토스케일링 설정
CPU 유형과 Memory 유형 사용을 선택할 경우 HPA name 필드가 활성화되며 필수 입력 항목입니다.
CPU 유형
우측 사용 박스를 체크하게 되면 Utilization, AverageValue 중 선택 - Utilization : CPU가 작업을 처리하는 데 사용된 비율 - AverageValue : 평균 CPU 사용률
CPU 사용률(%)
CPU 유형을 Utilization로 선택하면 활성화
CPU 평균 사용 값(mCore)
CPU 유형을 AverageValue로 선택하면 활성화 (최솟값은 1보다 크거나 같아야 함)
Memory 유형
우측 사용 박스를 체크하게 되면 Utilization, AverageValue 중 선택 - Utilization : Memory가 작업을 처리하는 데 사용된 비율 - AverageValue : 평균 Memory 사용률
메모리 사용률(%)
Memory 유형을 Utilization로 선택하면 활성화
메모리 평균 사용 값(MB)
Memory 유형을 AverageValue로 선택하면 활성화 (최솟값은 1보다 크거나 같아야 함)
HPA name
HPA 설정 이름 설정
최대 개수, 최소 개수
최대 유지할 인스턴스 수와 최소 유지할 인스턴스 수를 작성
Scale Use
CPU 유형이나, Memory 유형 둘 중 하나를 사용해야 활성화 - Scale Down : Disabled, Max, Min 중 선택 - Scale Up: Disabled, Max, Min 중 선택
4) 업데이트 정책
업데이트 정책
Rolling Update, Recreate 항목 중 택 1
복제 수 대비 중단 비율
Rolling Update시 활성화
Percentage, InstanceCount 항목 중 택 1
복제 수 대비 확장 비율
Rolling Update시 활성화 Percentage, InstanceCount 항목 중 택 1
설정해 놓은 워크로드에 대한 설정을 업데이트하기 위해서는 해당 워크로드에 대한 설정 화면을 접근합니다. 여기에서는 컨테이너 이미지를 수정하는 경우의 예시를 들겠습니다. 다른 설정 항목을 변경하는 경우에도 변경된 설정 정보를 저장하고 워크로드를 재기동하는 방법은 동일합니다.
1) 변경하고자 하는 워크로드 선택 후 "설정" 탭 클릭합니다.
2) 컨테이너 명 선 클릭 후 이미지 명 수정 및 적용합니다.
3) 수정 완료 후 "저장 후 시작" 클릭합니다.
워크로드 상세 모니터링 화면에서 컨테이너가 변경된 이미지 설정으로 재기동 되는 상황을 조회합니다.
특정 워크로드를 중지하거나 재시작 혹은 삭제하기 위해서는 해당 워크로드의 배포 정보 상세 조회 화면을 접근합니다.
실행 중인 워크로드의 배포 정보 상세 조회 화면 상단 우측의 "동작" 버튼을 클릭하면 중지하거나 재시작할 수 있는 선택 박스가 표시됩니다. 원하는 작업에 따라 "중지" 혹은 "재시작"을 선택합니다.
동작 중인 워크로드를 삭제할 경우에는 우선 워크로드의 실행을 중지하여야 합니다. 실행이 중지된 워크로드의 배포 정보 상세 조회 화면 상단 우측의 "동작" 버튼을 클릭하면 시작하거나 삭제할 수 있는 선택 박스가 표시됩니다. 삭제를 선택하면 워크로드가 삭제됩니다.
1) "동작" 버튼 클릭 후 "중지" 선택하여 워크로드 실행 중지
2) 중지된 워크로드의 "동작" 버튼 클릭 후 "삭제" 선택하여 워크로드 삭제
서비스 맵의 워크로드 조회 메뉴를 접근하면 워크로드들이 워크로드 그룹에 따라 정렬되어 표시됩니다. 워크로드 그룹의 이름이나 배치 등의 표시 방식을 다음과 같이 변경할 수 있습니다.
그룹명 변경
컬럼수 변경
왼쪽으로 이동
오른쪽으로 이동
왼쪽에 그룹 추가
오른쪽에 그룹 추가
이를 수행하기 위해서는 워크로드 그룹 이름 오른쪽에 표시된 "확장 메뉴(점 세 개)" 클릭합니다.
워크로드 그룹을 삭제하기 위해서는 해당 워크로드 그룹 내에 어떤 워크로드도 존재해서는 안 됩니다. 만일 해당 워크로드 그룹 내에 기존 워크로드가 존재했다면, 모든 워크로드를 우선 삭제해야 합니다.
워크로드 그룹을 삭제하기 위해서는 워크로드 그룹 이름 오른쪽에 표시된 확장 메뉴(점 세 개) 클릭합니다. 팝업에서 "그룹 삭제"가 활성화되어 표시되는 것을 볼 수 있습니다. 이를 선택합니다.