Container > NHN Container Service(NCS) > 사용 가이드

템플릿

템플릿은 워크로드 실행에 필요한 컨테이너, 네트워크 등의 리소스를 정의하는 서비스입니다.

템플릿 생성

NHN Container Service(NCS)를 사용하려면 먼저 템플릿을 생성해야 합니다. Container > NHN Container Service(NCS) 페이지에서 템플릿 탭을 클릭한 뒤 템플릿 생성을 클릭합니다. 템플릿 생성에 필요한 항목은 다음과 같습니다.

항목 설명
템플릿 이름 템플릿의 이름. 32자 이내의 영문 소문자와 숫자, 일부 기호(-)만 입력할 수 있습니다.
설명 템플릿에 대한 설명. 255자 이내로 입력할 수 있습니다.
컨테이너 이름 컨테이너의 이름. 253자 이내의 영문 소문자와 숫자, 일부 기호(-)만 입력할 수 있습니다.
컨테이너 레지스트리 컨테이너 이미지의 레지스트리
  • NHN Container Registry(NCR) 사용 방법은 NCR 사용 가이드를 참고하세요.
  • Docker Hub 또는 기타 레지스트리 사용 시 레지스트리 유형을 선택해야 합니다.
레지스트리 유형 레지스트리의 유형. 퍼블릭 또는 프라이빗을 선택할 수 있습니다.
이미지 URL 컨테이너 이미지의 정보. 255자 이내의 영문 소문자와 숫자, 일부 기호(-, \_, ., ,, /, @, :)만 입력할 수 있습니다.
레지스트리 아이디 프라이빗 레지스트리 인증에 사용되는 아이디
레지스트리 비밀번호 프라이빗 레지스트리 인증에 사용되는 비밀번호
메모리 컨테이너에 할당하는 메모리
포트 컨테이너에서 사용하는 포트
CPU 컨테이너에 할당하는 CPU 개수. 0.25~16 사이의 수를 0.25개 단위로 입력할 수 있습니다.
GPU 사용 여부 컨테이너의 GPU 사용 여부를 결정합니다.
GPU 타입 컨테이너에 할당할 GPU 타입을 결정합니다.
명령 컨테이너가 시작될 때 실행될 명령어. 이미지에 지정된 ENTRYPOINT보다 우선합니다.
인자 컨테이너가 시작될 때 전달될 인자. 이미지에 지정된 CMD보다 우선합니다.
작업 디렉터리 컨테이너의 작업 디렉터리. 이미지에 지정된 WORKDIR보다 우선합니다.
환경 변수 컨테이너에 설정할 환경 변수
수명 주기 훅 컨테이너의 생성, 종료 시점에 실행할 커맨드를 설정할 수 있습니다.
생성 직후에 입력한 커맨드가 실패한다면 컨테이너가 재시작됩니다.
커맨드 실행 전에 컨테이너가 종료되는 경우 커맨드가 실행되지 않을 수 있습니다.
  • 워크로드 작업의 GracePeriodSeconds는 30초입니다.
생성 직후(postStart) 예) bash,-c,curl $URL/postStart
종료 직전(preStop) 예) bash,-c,curl $URL/preStop
파일 Object Storage에 업로드한 파일을 컨테이너 디렉터리에 마운트하여 사용할 수 있습니다.
  • Appkey: 파일 데이터를 사용할 프로젝트의 Object Storage 서비스의 Appkey를 입력합니다.
  • User Access Key: Object Storage 서비스에 접근하는 사용자의 User Access Key를 입력합니다. User Access Key는 NHN Cloud 콘솔의 계정 > API 보안 설정 페이지에서 생성 및 확인할 수 있습니다.
  • User Secret Key: Object Storage 서비스에 접근하는 사용자의 Secret Access Key를 입력합니다. Secret Access Key는 NHN Cloud 콘솔의 계정 > API 보안 설정 페이지에서 생성 및 확인할 수 있습니다.
  • 오브젝트 URL: 오브젝트 다운로드 URL을 입력합니다.
  • 컨테이너 마운트 경로: 컨테이너의 마운트 경로를 입력합니다.
    • 입력한 경로에 파일이 마운트됩니다.
비밀 데이터 Secure Key Manager에 저장한 기밀 데이터 파일을 컨테이너 디렉터리에 마운트하여 사용할 수 있습니다.
  • 기밀 데이터 ID: Secret Key Manager 서비스의 기밀 데이터 ID를 입력합니다.
  • 컨테이너 마운트 경로: 컨테이너의 마운트 경로를 입력합니다.
    • 입력한 경로에 파일이 마운트됩니다.
NAS 스토리지 컨테이너에 연결할 NAS 스토리지를 입력합니다.
  • 이름: 스토리지 이름. 63자 이내의 영문 소문자와 숫자, 일부 기호(-)만 입력할 수 있습니다.
  • NAS 연결 경로: NAS 스토리지의 연결 정보를 입력합니다.
    • NAS 스토리지를 사용하는 경우 Storage > NAS 페이지에서 연결할 NAS 스토리지의 연결 정보를 입력합니다. 사용 방법은 NAS 사용 가이드를 참고하세요.
    • 별도 구축된 NFSv3 서버를 사용하는 경우 NFS 서버의 마운트 포인트를 입력합니다.
  • 컨테이너 연결 경로: 컨테이너의 마운트 경로를 입력합니다.
    • $컨테이너 연결 경로/$스토리지 이름에 마운트됩니다.
템플릿과 동일한 VPC를 사용하는 NAS 스토리지만 사용할 수 있습니다.
상태 점검 컨테이너의 상태를 점검하는 명령을 구성할 수 있습니다.
  • 활성 여부(LivenessProbe): 컨테이너가 동작 중인지 여부를 확인합니다.
  • 시작 여부(startupProbe): 컨테이너 내의 애플리케이션이 시작되었는지 여부를 확인합니다.
만약 상태 점검이 실패한다면 컨테이너가 재시작됩니다.
서브넷 VPC에 정의된 서브넷 중 인스턴스에 연결할 서브넷
DNS 워크로드에서 사용하는 DNS 서버를 설정합니다.
설정하지 않는 경우 8.8.8.8을 사용합니다.
Private DNS 연동이 필요하면 Private DNS Server IP를 입력합니다.

필요한 정보를 입력하고 템플릿 생성을 클릭하면 템플릿이 생성됩니다.

[주의] NCS 환경 점검 작업 또는 일시적인 오류로 인하여 컨테이너(task)가 재기동되는 경우 생성된 로그와 컨테이너 내부의 데이터는 초기화됩니다. 재기동되어도 유지가 필요한 데이터는 NAS 스토리지를 사용하세요.

[참고] /var/${워크로드 이름}경로에 컨테이너 간 임시 공유 스토리지가 제공됩니다.

[참고] 템플릿에 동일한 프로토콜의 포트는 1개만 추가할 수 있습니다. TCP와 HTTP, HTTPS, TERMINATED_HTTPS는 동일한 포트를 사용할 수 없습니다. HTTP, TERMINATED_HTTPS 프로토콜을 사용하면 로드 밸런서에서 Client IP를 식별할 수 있는 X-Forwarded-For Header가 추가됩니다.

[참고] 컨테이너당 임시 스토리지는 20GB가 제공됩니다. 제공된 사용량을 초과하는 경우 컨테이너가 재시작되어 임시 스토리지는 초기화됩니다.

[참고] 파일과 비밀 데이터는 템플릿을 만들 때의 정보를 사용합니다. 원본 파일이나 비밀 데이터가 수정되더라도, 이미 만들어진 템플릿의 정보는 영향을 받지 않습니다. 파일은 동일 조직 내의 프로젝트 Object Storage에만 접근할 수 있습니다. 비밀 데이터는 같은 프로젝트의 Secure Key Manager를 활용합니다. 비밀 데이터를 사용하려면 먼저 Secure Key Manager 서비스를 활성화해야 합니다.

템플릿 조회

생성한 템플릿은 Container > NHN Container Service(NCS) 페이지의 템플릿 탭에서 확인할 수 있습니다. 템플릿 목록에는 컨테이너 리소스의 총합이 표시됩니다.

기본 정보

특정 템플릿을 클릭하여 기본 정보 탭에서 상세 정보를 확인할 수 있습니다.

항목 설명
이름 템플릿의 이름과 ID
설명 템플릿의 설명
컨테이너 템플릿에 정의된 컨테이너 개수
CPU 템플릿에 정의된 컨테이너들의 CPU 수를 더한 수
생성일 템플릿이 생성된 날짜
VPC 템플릿에 설정된 VPC
서브넷 템플릿에 설정된 서브넷

컨테이너

특정 템플릿을 클릭한 후 컨테이너 탭으로 이동하여 템플릿에 추가한 컨테이너 목록을 확인할 수 있습니다. 컨테이너 목록에서 특정 컨테이너를 선택하여 상세 정보를 확인할 수 있습니다.

항목 설명
컨테이너 이름 컨테이너의 이름
이미지 URL 컨테이너 이미지의 정보
메모리 컨테이너에 할당된 메모리
CPU 컨테이너에 할당된 CPU 수
GPU 컨테이너에 할당된 GPU 정보
포트 컨테이너에서 사용하는 포트
명령 컨테이너가 시작될 때 실행될 명령어
인자 컨테이너가 시작될 때 전달될 인자
작업 디렉터리 컨테이너의 작업 디렉터리
환경 변수 컨테이너에 설정된 환경 변수
스토리지 컨테이너에 연결된 스토리지
수명 주기 훅 컨테이너에 설정된 수명 주기 훅
파일 컨테이너에 연결된 오브젝트 파일과 마운트 경로
비밀 데이터 컨테이너에 연결된 기밀 데이터와 마운트 경로
상태 점검 컨테이너에 설정된 상태 점검

템플릿 삭제

삭제할 템플릿을 선택하고 템플릿 삭제를 클릭하면 삭제됩니다.

[참고] 해당 템플릿을 사용하는 워크로드가 존재하면 템플릿을 삭제할 수 없습니다.

워크로드

정의한 템플릿을 이용하여 컨테이너를 실행하는 서비스입니다.

워크로드 생성

Container > NHN Container Service(NCS) 페이지에서 워크로드 탭을 클릭한 뒤 워크로드 생성을 클릭합니다. 워크로드 생성에 필요한 항목은 다음과 같습니다.

항목 설명
템플릿 템플릿의 이름
  • 템플릿 선택을 클릭하여 생성된 템플릿 중에서 선택합니다.
  • 템플릿 생성을 클릭하여 새로운 템플릿을 생성하여 선택합니다.
이름 워크로드의 이름. 32자 이내의 영문 소문자와 숫자, 일부 기호(-)만 입력할 수 있습니다.
설명 워크로드에 대한 설명. 255자 이내로 입력할 수 있습니다.
작업 요청 수 실행할 템플릿 수. 1~100 사이의 값을 입력할 수 있습니다.
배포 컨트롤러 워크로드 작업의 배포 컨트롤러를 선택할 수 있습니다.
  • 디플로이먼트: Stateless 방식으로 컨테이너 IP가 유동적이며 작업이 병렬적으로 실행됩니다.
  • 스테이트풀셋: Stateful 방식으로 컨테이너 IP가 고정되며 작업이 순차적으로 실행됩니다.
예약 실행 시간 기반 스케줄을 설정하여 워크로드 실행을 예약할 수 있습니다.
  • 기준 시간: 예약 작업 시간에 대한 타임존을 지정합니다.
  • Cron 표현식: 예약 반복 주기를 Cron 표현식으로 입력할 수 있습니다.
  • 예약 실행 히스토리 보관 수: 종료된 예약 작업을 보관하는 최대 수를 입력합니다. 보관된 작업은 로그, 이벤트, 컨테이너 정보를 확인할 수 있습니다.
  • 동시 실행 정책: 작업 반복 주기에 의해 생성된 작업의 동시성 정책을 지정합니다.
    • Forbid: 기존 작업이 완료되지 않으면 새로 실행하지 않습니다.
    • Replace: 기존 작업이 새로운 작업으로 대체됩니다. 대체되는 경우 기존 작업의 히스토리는 남지 않습니다.
워크로드 예약을 설정하면 작업 요청 수는 1개이며 배포 컨트롤러는 디플로이먼트로 고정됩니다.
워크로드 실행 주기가 10분 이하인 경우 로드 밸런서를 활성화할 수 없습니다.
로드 밸런서 템플릿의 컨테이너 정보에 포트가 지정된 경우에만 사용 버튼이 활성화됩니다.
  • 플로팅 IP: 플로팅 IP를 사용하기 위해서는 반드시 인터넷 게이트웨이가 설정된 서브넷에 연결되어 있어야 합니다.
    • 외부에서 컨테이너에 접근하기 위해서는 플로팅 IP를 사용해야 합니다. 플로팅 IP를 사용하면 domain URL이 추가됩니다.
  • 상태 확인: 로드 밸런서에서 워크로드의 상태 확인을 시도합니다.
  • IP 접근 제어 그룹: 접근 제어 그룹을 로드 밸런서에 적용할 수 있습니다.
  • 컨테이너에서 TERMINATED_HTTPS 프로토콜을 사용하는 경우 SSL 인증서를 등록해야 합니다.
  • 로드 밸런서의 포트와 프로토콜은 템플릿의 컨테이너에 정의된 포트와 프로토콜을 사용합니다.
레거시 네트워크 환경에서는 로드 밸런서를 사용할 수 없습니다.
내부 로드 밸런서 NCS 내에서만 통신 가능한 로드 밸런서를 사용할 수 있습니다. 템플릿의 컨테이너 정보에 포트가 지정된 경우에만 사용 버튼이 활성화됩니다.
  • IP: 로드 밸런서의 IP를 지정합니다.
    • 자동 할당: 워크로드의 서브넷에서 할당받은 IP를 사용합니다.
    • 지정: 특정 IP를 사용합니다. 다른 리소스에서 사용 중인 IP를 입력할 경우 워크로드에서는 해당 IP로 다른 리소스와 연동할 수 없습니다.
  • 내부 로드 밸런서는 TCP, UDP 프로토콜만 지원합니다. HTTP, HTTPS, TERMINATED_HTTPS가 지정된 경우 TCP로 변경되어 생성됩니다.
Private DNS VPC 내에서 접근 가능한 도메인을 사용할 수 있습니다.
  • Private DNS Zone: 레코드 세트를 생성할 Zone을 선택합니다.
  • TTL: 레코드 세트 정보의 갱신 주기를 초 단위로 입력합니다.
보안 그룹 워크로드의 보안 그룹을 지정할 수 있습니다.
워크로드 보안 그룹을 선택한 경우 컨테이너 포트의 보안 규칙을 생성해야 합니다.
워크로드 보안 그룹을 선택하지 않는 경우 NCS에서 생성한 보안 그룹이 적용되며 컨테이너 포트의 보안 규칙이 자동으로 생성됩니다.

필요한 정보를 입력하고 워크로드 생성을 클릭하면 워크로드가 생성됩니다.

[참고] 예약 실행의 Cron 표현식(* * * * *)의 각 필드의 의미는 아래와 같습니다.

필드명 값의 허용 범위 허용된 특수 문자
0-59 * / , -
시간 0-23 * / , -
1-31 * / , ?
1-12
JAN-DEC
* / , -
요일 0-6
SUN-SAT
* / , ?

[참고] 내부 로드 밸런서 IP로 로컬 통신은 할 수 없습니다.

[주의] 워크로드에서 사용 중인 Private DNS Zone 또는 Private DNS 레코드 세트를 삭제하면 VPC 내에서 도메인 연동이 되지 않습니다.

워크로드 조회

생성한 워크로드는 Container > NHN Container Service(NCS) 페이지의 워크로드 탭에서 확인할 수 있습니다.

기본 정보

특정 워크로드를 클릭하여 기본 정보 탭에서 상세 정보를 확인할 수 있습니다.

항목 설명
이름 워크로드의 이름과 ID
설명 워크로드에 대한 설명
템플릿 사용된 템플릿의 이름
배포 컨트롤러 워크로드의 배포 컨트롤러
작업 요청 수 실행할 템플릿 수
작업 실행 수 실행된 템플릿 수
생성일 워크로드가 생성된 날짜
VPC 워크로드에 설정된 VPC
서브넷 워크로드에 설정된 서브넷
보안 그룹 워크로드에 설정된 보안 그룹의 이름
Private DNS 워크로드에 설정된 Private DNS 정보
로드 밸런서 로드 밸런서 정보
내부 로드 밸런서 내부 로드 밸런서 정보

[참고] 워크로드 상태는 포함된 모든 컨테이너와 로드 밸런서의 상태를 고려하여 결정됩니다. 개별 컨테이너의 상태는 실행 컨테이너 탭에서 확인할 수 있습니다.

실행 컨테이너

특정 워크로드를 클릭한 후 실행 컨테이너 탭에서 컨테이너를 클릭하여 컨테이너 상세 정보를 확인할 수 있습니다.

항목 설명
컨테이너 이름 컨테이너의 이름
이미지 URL 컨테이너 이미지의 정보
IP 컨테이너에 할당된 IP 주소
상태 컨테이너의 상태
재시작 횟수 컨테이너가 재시작된 횟수
메모리 컨테이너에 할당된 메모리
CPU 컨테이너에 할당된 CPU 수
GPU 컨테이너에 할당된 GPU 정보
포트 컨테이너에서 사용하는 포트
명령 컨테이너가 시작될 때 실행될 명령어
인자 컨테이너가 시작될 때 전달될 인자
작업 디렉터리 컨테이너의 작업 디렉터리
환경 변수 컨테이너에 설정된 환경 변수
스토리지 컨테이너에 연결된 스토리지
수명 주기 훅 컨테이너에 설정된 수명 주기 훅
파일 컨테이너에 연결된 오브젝트 파일과 마운트 경로
비밀 데이터 컨테이너에 연결된 기밀 데이터와 마운트 경로
상태 점검 컨테이너에 설정된 상태 점검
시작일 컨테이너가 시작된 날짜

모니터링

특정 워크로드를 클릭한 후 모니터링 탭에서 컨테이너의 리소스 사용률을 확인할 수 있습니다. 컨테이너 지표는 15초 단위로 수집되며 최대 1년간 보관됩니다. 모니터링을 제공하는 항목은 다음과 같습니다.

항목 단위 설명
CPU 사용률 % 컨테이너에 할당된 CPU 기준으로 사용률이 제공됩니다.
메모리 사용률 % 컨테이너에 할당된 Memory 기준으로 사용률이 제공됩니다.
네트워크 데이터 송신 bps 워크로드의 작업 기준으로 네트워크 데이터 송신 정보가 제공됩니다.
네트워크 데이터 수신 bps 워크로드의 작업 기준으로 네트워크 데이터 수신 정보가 제공됩니다.
디스크 사용률 % 컨테이너에 추가된 NAS 스토리지의 사용률이 제공됩니다.
임시 스토리지 사용률 % 워크로드의 작업 기준으로 임시 스토리지 사용률이 제공됩니다.
GPU 사용률 % 컨테이너에 할당된 GPU 사용률이 제공됩니다.
GPU 메모리 사용률 % 컨테이너에 할당된 GPU 메모리 사용률이 제공됩니다.
GPU 전력 사용량 mW 컨테이너에 할당된 GPU 전력 사용량이 제공됩니다.
GPU 온도 컨테이너에 할당된 GPU 온도가 제공됩니다.

이벤트

특정 워크로드를 클릭한 후 이벤트 탭에서 컨테이너에서 발생한 이벤트 정보를 확인할 수 있습니다. 이벤트 상태 선택을 클릭하여 이벤트의 상태별로 이벤트를 확인할 수 있습니다.

항목 설명
상태 이벤트의 상태
타입 이벤트의 타입
설명 이벤트의 설명
이벤트 최초 발생 일시 이벤트 최초 발생 일시
이벤트 마지막 발생 일시 이벤트 마지막 발생 일시
발생 수 이벤트가 발생한 횟수

[참고] 이벤트는 최대 1시간만 유지되어 1시간 이전의 정보는 확인할 수 없습니다. 컨테이너의 현재와 마지막 상태에 대한 상세 이유도 이벤트에서 확인할 수 있습니다.

로그

특정 워크로드를 클릭한 후 로그 탭에서 컨테이너의 로그를 확인할 수 있습니다. 조회하고자 하는 시간에 로그가 많이 발생한 경우 일부 로그만 조회될 수 있습니다. 모든 로그가 조회되지 않는 경우 시간 범위를 줄여서 다시 시도하세요.

[참고] 로그는 2개월 동안 보관됩니다.

워크로드 실행 히스토리

워크로드 실행 히스토리를 확인할 워크로드를 선택해 워크로드 실행 히스토리 탭에서 워크로드 템플릿 변경 진행 상황 및 이력을 확인할 수 있습니다.

항목 설명
템플릿 이름 워크로드가 사용하는 템플릿 이름
실행 시간 해당 템플릿을 사용하는 워크로드의 배포 시작 시간
종료 시간 해당 템플릿을 사용하는 워크로드의 종료 시간
상태 배포 상태
succeeded: 배포 완료
pending: 배포 중
terminated: 종료된 워크로드

조회된 히스토리 정보를 클릭하여 워크로드 실행 히스토리 상세 정보를 확인할 수 있습니다.

[참고] 실행 중인 워크로드의 히스토리에는 종료 시간이 표시되지 않으며 상태가 succeeded로 유지됩니다. [주의] 워크로드 삭제 이후에는 워크로드 실행 히스토리를 확인할 수 없습니다.

예약 실행 히스토리

예약 실행 히스토리를 확인할 워크로드를 선택해 예약 실행 히스토리 탭에서 실행된 작업 목록을 확인할 수 있습니다.

항목 설명
작업 ID 실행된 예약 작업 ID
실행 시간 예약 작업 실행 시간
종료 시간 예약 작업 종료 시간
상태 예약 작업 상태
waiting: 예약 실행 준비 중
running: 예약 작업 실행 중
completed: 예약 작업 정상 종료
error: 예약 작업 비정상 종료

워크로드 변경

변경할 워크로드를 선택한 뒤 기본 정보 탭에서 변경을 클릭해 실행 중인 워크로드를 변경할 수 있습니다.

항목 설명
설명 워크로드의 설명
템플릿 실행 중인 워크로드의 템플릿 변경
템플릿 변경 시 롤링 업데이트 방식으로 워크로드가 무중단 배포됩니다.
작업이 하나씩 순차적으로 교체되어 배포 중에 기존 작업과 새로운 작업이 동시에 실행된 상태일 수 있습니다.
워크로드 실행 히스토리탭에서 변경 결과를 확인할 수 있습니다.
작업 요청 수 실행 중인 워크로드의 작업 수 변경
작업 요청 수 증가: 기존 작업은 유지하며 새로운 작업이 생성됩니다.
작업 요청 수 감소: 감소된 작업 개수만큼 작업이 종료됩니다.
예약 실행 예약 실행 정보를 변경
예약 실행 히스토리 보관 수는 변경 시간부터 설정되어 변경 전 실행된 작업이 전부 삭제되기 전까지 히스토리 개수와 설정 값이 일치하지 않을 수 있습니다.
로드 밸런서 워크로드의 로드 밸런서, 플로팅 IP, 상태 확인, SSL 인증서 사용 여부 변경
내부 로드 밸런서 워크로드의 내부 로드 밸런서 사용 여부, IP 변경

[주의] 로드 밸런서를 사용하여 워크로드 서비스 이용 중 템플릿을 변경하는 경우 순단이 발생할 수 있습니다. [참고] 워크로드가 Pending 상태인 경우 로드 밸런서를 변경할 수 없습니다. 워크로드 변경에 실패할 경우(예, 이미지 오류) 변경 시도가 종료되며, 작업 교체가 발생하지 않습니다.

워크로드 중지/재시작

워크로드 중지를 실행하면 플로팅 IP와 URL은 유지되며 워크로드의 모든 작업이 종료됩니다.

워크로드 재시작을 실행하면 로드 밸런서 IP는 변경됩니다.

[참고] 배포 컨트롤러에 따라서 워크로드 중지/재시작을 실행하면 컨테이너 IP가 변경될 수 있습니다.

[주의] 워크로드를 중지하면 로그, 이벤트, 임시 스토리지는 초기화됩니다. 워크로드를 중지하여도 작업 반복 주기가 되면 예약 실행 히스토리는 삭제됩니다.

워크로드 삭제

삭제할 워크로드를 선택하고 워크로드 삭제를 클릭하면 삭제됩니다.

NCS 역할

NCS 역할을 설정하여 서비스 및 리소스에 액세스할 수 있는 역할을 제어할 수 있습니다. 예를 들어 'NCS 관리자'는 템플릿과 워크로드에 대한 생성, 조회 및 관리할 수 있는 역할을 가지며, 'NCS 사용자'는 템플릿과 워크로드에 대한 조회 역할만 갖도록 설정할 수 있습니다.

NCS 실행 역할 추가

NCS에 대한 실행 역할은 NHN Cloud Console 화면에서 설정합니다. 1. 프로젝트 관리 화면에서 멤버 관리 메뉴를 선택합니다. 2. 역할을 변경할 멤버를 클릭합니다. 3. 역할 추가를 선택하여, 서비스별 역할을 추가합니다. * 왼쪽 영역에서 기본 인프라 서비스를 선택한 후, 오른쪽 영역에서 역할을 선택합니다. 4. 선택된 역할을 확인하여 추가하거나 삭제할 수 있습니다. 5. 추가를 클릭하여 프로젝트 멤버에 변경된 역할을 적용합니다. 6. 역할이 추가되면 멤버를 선택하여 상세 역할 내역을 확인할 수 있습니다.

역할 그룹에 대한 사용 가이드는 콘솔 가이드를 참고하세요.

역할 세부 정보

NCS를 이용하기 위해 다음 리소스에 대한 역할이 필요합니다. * NCS - NCS의 리소스를 조회, 생성 및 관리하도록 허용합니다. * Infrastructure - NCS 사용자는 VPC, Subnet 리소스를 조회하도록 허용합니다. 이는 NCS에서 템플릿과 워크로드를 조회할 때 필요합니다. * Load Balancer - NCS 사용자는 Infrastructure Load Balancer 리소스를 생성, 관리하도록 허용합니다. 이는 NCS에서 워크로드의 Load Balancer를 사용할 때 필요합니다. * Security Group - NCS 사용자는 Infrastructure Security Group 리소스를 생성, 관리하도록 허용합니다. 이는 NCS에서 템플릿에 대한 Security Group을 사용할 때 필요합니다.

NCS 최소 역할 부여

프로덕션 환경에서는 필요한 역할만 추가하는 것이 좋습니다. NCS 서비스를 이용하기 위한 최소 역할은 다음과 같습니다.

기능 Infrastructrue NCS ADMIN Infrastructrue MEMBER Infrastructrue Security Group ADMIN Infrastructrue Load Balancer ADMIN
템플릿 조회 O
템플릿 생성 O O
템플릿 삭제 O O
워크로드 조회 O
워크로드 생성 및 변경 O O O
워크로드 삭제 O O O

참고 사항

리전

  • NCS 서비스는 한국(판교), 한국(광주) 리전에서만 사용할 수 있습니다.

리소스 제공 정책

템플릿/컨테이너

  • 템플릿에 기술되는 컨테이너들은 각각 서로 다른 컨테이너 포트를 사용하도록 설정해야 합니다.
  • 컨테이너 포트에 직접 연결하는 경우, 보안 그룹이 잘 설정되어 있는지 확인해야 합니다.
  • 컨테이너 포트를 지정하지 않은 템플릿을 사용하는 경우 로드 밸런서를 생성할 수 없습니다.
  • 로드 밸런서를 사용하는 경우 컨테이너에 추가되지 않은 포트는 보안 그룹에 포트를 추가하여도 사용할 수 없습니다.
  • 프라이빗 레지스트리에 존재하는 컨테이너 이미지를 활용하여 컨테이너를 생성할 수 있습니다. 지원되는 소스 레지스트리 유형과 URL, Access ID, Access Secret은 아래와 같습니다.
소스 레지스트리 유형 Access ID Access Secret
Azure Container Registry 액세스 키 사용자 이름 액세스 키 암호
Google Cloud Container Registry _json_key 서비스 계정의 비공개 키(JSON 유형)
Docker Hub Username Password
Harbor Username Password
Quay json_file {
"account_name": "$사용자 계정",
"docker_cli_password": "$Quay에서 생성한 암호화된 Password"
}
  • 컨테이너 이미지 내에서 컨테이너가 서비스를 위해 사용하기로 결정한 포트와 템플릿의 컨테이너 포트는 일치해야 합니다.
    • 80 포트를 서비스하기로 지정된 기본 nginx 컨테이너 이미지를 이용하는 경우 컨테이너 포트에 80을 지정해야 합니다. 컨테이너 이미지의 내용을 변경하여 다른 포트를 서비스하도록 설정한 경우 해당 포트 번호를 지정해야 합니다.
  • 파일과 비밀 데이터는 템플릿을 만들 때의 정보를 사용합니다. 원본 파일이나 비밀 데이터가 수정되더라도, 이미 만들어진 템플릿의 정보는 영향을 받지 않습니다.
    • 파일 또는 비밀 데이터의 내용을 업데이트하고 해당 변경 사항을 반영하려면 새로운 템플릿을 생성하고 워크로드를 실행해야 합니다.

GPU

분류 타입 이름 RAM GPU 수 MIG Profile 이름
Graphics Optimized ncs1 ncs1.g1m5 5GB 1 MIG 1g.5gb
Graphics Optimized ncs1 ncs1.g2m10 10GB 2 MIG 2g.10gb

문제 해결 가이드

NCS 서비스를 사용하면서 겪을 수 있는 다양한 문제들을 해결하는 방법을 설명합니다.

워크로드

  • 워크로드가 정상적으로 생성되었고, 컨테이너도 정상적으로 실행 중일 때 FailedCreatePodSandBox/CNITimedOutWaitingForVIFs 타입의 컨테이너 이벤트가 발생하는 현상
    • 해당 이벤트는 NCS에서 사용하기 위한 Network Interface가 생성 완료되지 않은 경우 발생합니다. 템플릿 생성 직후 워크로드를 생성하거나 워크로드를 대량 생성하는 경우 일시적으로 발생하는 이벤트로 일정 시간이 경과하면 해당 이벤트는 발생하지 않습니다.
  • 워크로드가 Pending 상태일 때 IpAddressGenerationFailure 타입의 컨테이너 이벤트가 발생하는 현상
    • 해당 이벤트는 지정한 서브넷에 사용할 수 있는 IP 주소가 더 이상 없는 경우 발생합니다. 서브넷의 CIDR를 변경하거나 다른 서브넷을 사용하여 템플릿을 생성해야 합니다.
  • 워크로드의 템플릿 변경 이후에 계속 pending 상태로 유지되는 현상
    • 추가된 작업의 이벤트를 확인하여 컨테이너가 실행되지 않는 원인을 확인할 수 있습니다.
  • 리소스 부족으로 워크로드 생성 실패 현상
에러 메시지 설명
{{.Resource}} 리소스가 부족하여 워크로드를 생성할 수 없습니다. NCS 환경의 리소스가 부족하여 워크로드를 생성할 수 없습니다.
잠시 후 다시 시도하거나 고객 센터에 문의하세요.
생성 가능한 {{.Resource}} 를 초과하였습니다. 한도를 높이려면 고객 센터에 문의하세요. 프로젝트의 NCS Quota가 초과되었습니다.
자세한 사항은 NHN Container Service(NCS) 리소스 제공 정책을 참고하세요.

NHN Cloud 서비스 연동

워크로드가 삭제 또는 재시작되면 로그는 삭제되어 조회할 수 없습니다. 중요한 로그를 백업하거나 특정 로그를 검색하고 조회하기 위해서 Log & Crash Search(L&C) 서비스와 연동할 수 있습니다.

아래 내용은 로깅 에이전트(FluentBit, Logstash)를 사이드카 컨테이너로 생성하여 L&C 연동하는 방법에 대해 기술합니다.

FluentBit에 대한 자세한 내용은 Fluent Bit: Official Manual을 참고하세요. Logstash에 대한 자세한 내용은 Logstash Reference를 참고하세요. Log & Crash Search 사용 방법은 Log & Crash Search 콘솔 사용 가이드를 참고하세요.

[참고] 컨테이너 간 임시 공유 스토리지에 로그를 파일로 생성하는 방법으로 기술하였습니다. 컨테이너 로그를 파일로 생성하는 경우 워크로드의 로그 탭에서는 로그 조회를 할 수 없습니다.

FluentBit을 이용하여 연동

  • FluentBit에서 L&C와 연동하기 위해서는 설정 파일 작성이 필요합니다. 아래와 같이 설정 파일을 작성하여 Object Storage에 업로드합니다.
[SERVICE]
    Flush        1
    Daemon       Off
    Log_Level    warn
    Parsers_File parsers.conf
    Plugins_File plugins.conf
    HTTP_Server  Off

[INPUT]
    Name tail
    Path /var/{워크로드 이름}/{로그 파일명}

[OUTPUT]
    Name                 http
    Match                *
    Host                 api-logncrash.cloud.toast.com
    Port                 443
    URI                  /v2/log
    Format               json
    Log_response_payload false
    Tls                  On
    Tls.verify           Off

[FILTER]
    Name  modify
    Match *
    Rename log body
    Add host           ${HOSTNAME}
    Add projectName    {L&C AppKey}
    Add projectVersion {사용자 지정 프로젝트 버전}
    Add logVersion     {로그 포맷 버전}
    Add logType        {로그 타입}
    Add logSource      {로그 소스}
    Add logLevel       {로그 레벨}
  • 템플릿에 아래와 같이 컨테이너를 추가하여 생성합니다.
항목 alpine(로그 생성) fluentbit(로그 전송)
컨테이너 이름 alpine fluentbit
이미지 URL alpine:latest fluent/fluent-bit:2.2.1
명령 로그를 파일에 남기기 위해서 아래와 같이 입력합니다.
  • sh,-c,while true; do echo "hello world" >> /var/{워크로드 이름}/{로그 파일명}; sleep 1; done
컨피그맵 Object Storage에 업로드한 fluentbit 설정 파일을 가져올 수 있는 정보를 추가합니다.
컨테이너 마운트 경로는 아래와 같이 입력합니다.
  • /fluent-bit/etc/fluent-bit.conf
  • 해당 템플릿으로 워크로드를 생성하면 alpine에서 생성한 로그를 L&C에서 검색하고 조회할 수 있습니다.

Logstash를 이용하여 연동

  • Logstash에서 L&C와 연동하기 위해서는 설정 파일 작성이 필요합니다. 아래와 같이 설정 파일을 작성하여 Object Storage에 업로드합니다.
input {
  file {
    path => "/var/{워크로드 이름}/{로그 파일명}
    start_position => "beginning"
    ignore_older => 0
  }
}

filter {
  mutate {
    remove_field => [ "@version", "@timestamp", "path", "tags" ]
    rename => {
      "message" => "body"
      "host" => "host"
    }
    add_field => {
      "projectName" => "{L&C AppKey}"
      "projectVersion" => "{사용자 지정 프로젝트 버전}"
      "logVersion" => "{로그 포맷 버전}"
      "logType" => "{로그 타입}"
      "logSource" => "{로그 소스}"
      "logLevel" => "{로그 레벨}"
    }
  }
}

output {
  http {
    url => "https://api-logncrash.cloud.toast.com/v2/log"
    http_method => "post"
    format => "json"
    ssl_verification_mode => "none"
  }
}
  • 템플릿에 아래와 같이 컨테이너를 추가하여 생성합니다.
항목 alpine(로그 생성) logstash(로그 전송)
컨테이너 이름 alpine logstash
이미지 URL alpine:latest logstash:8.11.0
메모리 256 1024
명령 로그를 파일에 남기기 위해서 아래와 같이 입력합니다.
  • sh,-c,while true; do echo "hello world" >> /var/{워크로드 이름}/{로그 파일명}; sleep 1; done
환경 변수 XPACK_MONITORING_ENABLED : false
컨피그맵 Object Storage에 업로드한 logstash 설정 파일을 가져올 수 있는 정보를 추가합니다.
컨테이너 마운트 경로는 아래와 같이 입력합니다.
  • /usr/share/logstash/pipeline/logstash.conf
  • 해당 템플릿으로 워크로드를 생성하면 alpine에서 생성한 로그를 L&C에서 검색하고 조회할 수 있습니다.
TOP