콘텐츠로 이동

전역 워크스페이스 템플릿 생성 방법

전역 워크스페이스 템플릿은 연구자에게 워크스페이스 템플릿으로 보입니다. 모든 사용자에게 표시되며, 만들고 편집하고 enable/disable하거나 import/export/delete하는 작업은 모두 root 관리자만 admin의 Workspace templates 영역(/admin/templates)에서 할 수 있습니다.

기본 제공 워크스페이스 템플릿의 README 미리보기는 Markdown 표와 fenced code block을 지원합니다. 여러 줄 명령은 fenced block에 넣어야 미리보기에서 한 문단으로 합쳐지지 않고 읽고 복사할 수 있습니다.

기존 이미지에서 워크스페이스 템플릿 만들기

섹션 제목: “기존 이미지에서 워크스페이스 템플릿 만들기”

간결한 카탈로그와 New workspace template 작업이 보이는 Workspace templates 페이지

  1. Workspace templates(/admin/templates)를 엽니다.
  2. New workspace template을 클릭해 생성 양식을 엽니다.
  3. Name과 Image를 입력합니다. docker.io/library/python:3.11, ghcr.io/org/image:tag, nvcr.io/...처럼 registry host가 들어간 전체 이미지 참조를 사용하세요. LabPod는 python:3.11처럼 registry가 빠진 이름을 거부합니다.
  4. Type, Default CPU, Default memory, GPU 기본값을 설정합니다. 이 값들은 연구자가 보는 생성 양식의 추천 자원이 됩니다.
  5. port 또는 launcher 정의를 추가합니다.
    • 일반 앱은 Import launcher를 우선 사용합니다.
    • 특정 워크스페이스 템플릿에만 필요한 앱은 manual port를 사용합니다.
  6. 정의를 검토할 때까지 Disabled를 켜 둡니다.
  7. 워크스페이스 템플릿을 저장합니다.
  8. 워크스페이스 템플릿으로 돌아와 Disabled를 해제하고 저장합니다. 각 연구자는 워크스페이스를 설정할 때 자신의 계정으로 이미지를 다운로드합니다.

Enable된 워크스페이스 템플릿은 모든 사용자의 워크스페이스 생성 양식에 표시됩니다. 다른 워크스페이스 템플릿이 기본 추천으로 지정되어 있지 않다면, 새 연구자에게 분명한 시작점을 주도록 Recommend selected를 누르라고 페이지가 안내합니다. 기본 추천으로 지정된 워크스페이스 템플릿에는 Default 표시가 붙으며 상세 화면에서 해제할 수 있습니다.

이미지 태그, 명령, 포트, 환경 변수, 마운트, launcher 동작, 번들 세부 정보 같은 기술적인 필드는 상세 화면 위쪽의 CPU/메모리/GPU 기본값 및 앱/자원 요약과 분리되어 해당 워크스페이스 템플릿의 Advanced 토글 안에 있습니다.

워크스페이스 템플릿 번들 import

섹션 제목: “워크스페이스 템플릿 번들 import”

다른 LabPod 서버나 사용자가 export한 .tar 번들을 받을 때 import를 사용합니다.

  1. Workspace templates(/admin/templates)를 엽니다.
  2. Import를 클릭합니다.
  3. .tar 번들을 업로드합니다. LabPod 서버가 접근할 수 있는 위치에 번들이 있다면 번들 URL을 붙여 넣어도 됩니다.
  4. image, ports, README, Dockerfile, context 파일 preview를 확인합니다.
  5. import를 commit합니다.
  6. 번들에 Dockerfile이 있으면 보존된 레시피를 검토한 뒤 워크스페이스 템플릿을 enable합니다. root는 이미지를 빌드하지 않으며 각 연구자가 설정 중에 자신의 계정으로 빌드합니다.

Import한 Dockerfile context는 LabPod이 보존하므로 나중에 다시 빌드하고 re-export할 수 있습니다.

자동화나 오프라인 전달이 필요하면 root 관리자가 CLI로 호스트에 있는 번들을 가져올 수 있습니다.

Terminal window
sudo labpod admin template import ./template.tar --global
sudo labpod admin template import ./template.tar --owner alice
Terminal window
# Run these as root
labpod admin template import ./template.tar --global
labpod admin template import ./template.tar --owner alice

--global로 가져온 워크스페이스 템플릿은 root가 검토한 뒤 활성화할 수 있도록 비활성화 상태로 생성됩니다. --owner로 가져온 워크스페이스 템플릿은 처음부터 해당 사용자의 계정에 속하므로 즉시 활성 상태로 생성됩니다. Dockerfile 기반 번들은 웹 UI에서만 빌드되며 CLI는 이미지 빌드를 조율하지 않습니다.

번들에서 만든 워크스페이스 템플릿이나 built-in managed 워크스페이스 템플릿에는 Dockerfile이 있을 수 있습니다. root는 전역 정의를 소유하고 검토하지만 워크스페이스 이미지를 빌드하지 않습니다. 연구자가 enable된 레시피를 선택하면 LabPod가 컨텍스트와 출력 태그를 결정하고 해당 연구자의 계정에서 빌드합니다.

FROM, Dockerfile # syntax=..., COPY --from=..., RUN --mount=from=...에서 외부 이미지를 사용할 때는 모두 registry host를 명시해야 합니다. localhost/...는 로컬 rootless store 이미지로 취급하지만 localhost:<port>/...도 다른 host와 마찬가지로 registry host를 명시해야 합니다.

  1. Dockerfile과 컨텍스트가 있는 워크스페이스 템플릿을 가져오거나 생성합니다.
  2. 레시피와 레지스트리 출처를 검토합니다.
  3. 워크스페이스 템플릿을 enable합니다.
  4. 일반 테스트 계정에서 해당 워크스페이스 템플릿을 선택해 워크스페이스를 만든 뒤, 그 워크스페이스 자체 페이지에서 Build image를 사용합니다. 빌드 결과와 이미지는 그 계정에만 속합니다.

root는 워크스페이스 이미지를 pull하거나 빌드할 수 없습니다. 여러 계정에 빌드된 이미지 하나를 배포하려면 허용된 외부 레지스트리에 게시하며, ad-hoc root 빌드를 캐시로 사용하지 않습니다.

Launcher는 연구자의 Manage workspace → App controls 아래에 앱을 표시합니다.

워크스페이스 템플릿 설정 후 사용자가 보게 되는 launcher card가 있는 Manage workspace의 App controls 섹션

  1. Launchers(/admin/launchers, Workspace templates에서도 이동 가능)를 열고 New launcher를 선택해 재사용 가능한 launcher 정의를 만듭니다.
  2. Workspace templates(/admin/templates)를 엽니다.
  3. 워크스페이스 템플릿을 선택하고 ports 섹션에서 Import launcher를 클릭합니다.
  4. catalog launcher를 고르고 저장합니다.

Catalog import는 snapshot입니다. 나중에 Launchers를 수정해도 기존 워크스페이스 템플릿은 바뀌지 않습니다. 워크스페이스 템플릿을 바꾸려면 다시 import하거나 template port를 직접 편집하세요.

새 워크스페이스에서 더 이상 쓰지 못하게 하되 기존 워크스페이스 기록은 보존하려면 워크스페이스 템플릿을 disable하세요. Delete는 해당 워크스페이스 템플릿에 의존하는 워크스페이스가 없을 때만 사용합니다.