콘텐츠로 이동

전역 템플릿 생성 방법

전역 템플릿은 모든 사용자에게 보입니다. 전역 템플릿을 만들고 편집하고 enable/disable하거나 import/export/delete하는 작업은 모두 root 관리자만 할 수 있습니다.

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

기존 이미지에서 템플릿 만들기

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

템플릿 목록과 편집기가 있는 Admin Templates 페이지

  1. /admin/templates를 엽니다.
  2. New template을 클릭합니다.
  3. NameImage를 입력합니다. 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. 이미지가 shared image store에 생길 때까지 Disabled를 켜 둡니다.
  7. 템플릿을 저장합니다.
  8. /admin/images에서 이미지를 shared store로 pull한 뒤 템플릿으로 돌아옵니다.
  9. Disabled를 해제하고 저장합니다.

Enable된 전역 템플릿은 모든 사용자의 create-workspace 화면에 표시됩니다.

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

  1. /admin/templates를 엽니다.
  2. Import를 클릭합니다.
  3. .tar 번들을 업로드합니다. LabPod 서버가 접근할 수 있는 위치에 번들이 있다면 번들 URL을 붙여 넣어도 됩니다.
  4. image, ports, README, Dockerfile, context 파일 preview를 확인합니다.
  5. import를 commit합니다.
  6. 번들에 Dockerfile이 있으면 템플릿을 enable하기 전에 빌드합니다.
  7. 템플릿이나 registry에 약관 승인이 필요하면 /admin/compliance에서 pending 항목을 승인합니다.

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

CLI로 가져온 템플릿은 관리자가 검토한 뒤 활성화할 수 있도록 비활성화 상태로 생성됩니다. Dockerfile 기반 번들은 이미지 빌드가 필요하므로 웹 UI에서 가져오세요.

번들에서 만든 템플릿이나 built-in managed 템플릿에는 Dockerfile이 있을 수 있습니다. 빌드는 template-keyed 방식입니다. LabPod이 템플릿 row에서 build context와 출력 tag를 결정합니다.

FROM, Dockerfile # syntax=..., COPY --from=..., RUN --mount=from=...에서 외부 이미지를 사용할 때는 모두 registry host를 명시해야 하며 registry allowlist를 통과해야 합니다. localhost/...는 로컬 rootless store 이미지로 취급하지만, localhost:<port>/...는 registry이므로 다른 host와 동일하게 허용 목록에 있어야 합니다.

  1. /admin/templates를 엽니다.
  2. 템플릿을 선택합니다.
  3. Build를 클릭합니다.
  4. /admin/images에서 빌드를 확인합니다.
  5. 성공하면 이미지가 shared store에 있는지 확인합니다.
  6. 템플릿을 enable하고 저장합니다.

LabPod의 build history와 bundle round-trip metadata를 의도적으로 우회하려는 경우가 아니라면 호스트에서 ad-hoc build를 직접 실행하지 마세요.

Launcher는 워크스페이스 Apps 섹션에 앱을 표시합니다.

템플릿 설정 후 사용자가 보게 되는 launcher card가 있는 Apps 섹션

  1. /admin/launchers에서 재사용 가능한 launcher 정의를 만듭니다.
  2. /admin/templates를 엽니다.
  3. 템플릿을 선택하고 ports 섹션에서 Import launcher를 클릭합니다.
  4. catalog launcher를 고르고 저장합니다.

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

일부 템플릿이나 registry는 EULA 또는 약관 승인이 필요합니다.

  1. /admin/compliance를 엽니다.
  2. pending template EULA와 registry terms를 검토합니다.
  3. 조직에서 사용할 수 있는 항목만 승인합니다.
  4. /admin/templates로 돌아가 필요하면 템플릿을 enable합니다.

Compliance 페이지에서 template EULA를 승인하면 해당 템플릿도 함께 enable됩니다.

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