Jetstream2에 Potato 배포하기
NSF 연구용 클라우드인 Jetstream2에서 ACCESS 할당으로 비용 없이 Potato 주석 연구를 실행합니다. potato deploy와 OpenStack 자격 증명을 사용합니다.
potato deploy up --provider openstack --cloud jetstream2는 NSF가 자금을 대는 연구용 클라우드 Jetstream2에 주석 연구를 올리며, 할당의 서비스 유닛 외에는 비용이 들지 않습니다. 미국 기관의 연구자는 ACCESS 할당을 통해 Jetstream2 사용 시간을 받을 수 있으므로, 예산이 없는 연구도 재시작해도 남는 디스크가 있는 전용 머신에서 실행할 수 있습니다. 인스턴스마다 projects.jetstream-cloud.org 아래의 DNS 이름이 붙으므로, 주석자는 평범한 호스트 이름과 평범한 HTTPS 인증서를 보게 됩니다. 이 페이지의 내용을 따르려면 Potato 2.10 이상과, 이미 potato start로 실행해 본 설정이 필요합니다.
Jetstream2 할당과 자격 증명 받기
Jetstream2는 OpenStack 클라우드 소프트웨어로 운영되며, Potato는 OpenStack을 통해 Jetstream2에 접근합니다. Potato는 OpenStack 애플리케이션 자격 증명으로 인증하는데, 이는 할당 하나에 묶인 키로 따로 폐기할 수 있습니다. 설정은 세 단계로 끝납니다.
- allocations.access-ci.org에서 ACCESS Explore 할당을 신청하고 Jetstream2 CPU 시간을 요청합니다.
- js2.jetstream-cloud.org에 있는 Jetstream2의 Horizon 대시보드에 로그인해 애플리케이션 자격 증명을 만들고, 그
clouds.yaml파일을 내려받습니다. - 파일을
~/.config/openstack/clouds.yaml로 저장하고 항목 이름을jetstream2로 지정합니다. Potato의 Jetstream2 기본값은 이 이름에 연결되어 있습니다.
그런 다음 OpenStack extra를 설치하고 자격 증명이 동작하는지 확인하십시오.
pip install 'potato-annotation[deploy-openstack]'
potato deploy providers --verify로그인할 수 있는 사람 정하기
potato deploy는 로그인 설정을 바꾸지 않으며, Jetstream2 호스트 이름은 공개되어 있습니다. 설정이 누구나 가입할 수 있게 되어 있으면, 아래 드라이 런이 경고 D003 "Anyone who finds the URL can register and annotate."(URL을 찾은 사람은 누구나 가입해 주석을 달 수 있습니다)를 출력합니다. 크라우드소싱 연구에서는 보통 공개 가입이 의도한 설정입니다. 이름이 정해진 주석자라면 배포하기 전에 allow_all_users: false와 함께 user_config.users 아래에 명단을 적거나(비밀번호 관리), 소속 기관을 통해 로그인하게 하십시오(SSO 및 OAuth 인증).
계획 확인하기
드라이 런은 아무것도 만들지 않고, 배포의 모든 단계, 작업에 붙을 호스트 이름, 인스턴스가 할당에서 소모할 양을 출력합니다.
potato deploy up myproject/config.yaml --provider openstack --cloud jetstream2 --dry-run계획은 Featured-Ubuntu24 이미지로 vCPU 2개짜리 m3.small 인스턴스 하나를 할당의 자동 할당 네트워크에 만들고, public 네트워크에서 유동 IP를 붙입니다. 보안 그룹은 인바운드 포트 22, 80, 443만 허용합니다. 기본 로그인 사용자가 Jetstream2 이미지마다 다르기 때문에, Potato는 자체 potato-deploy 사용자를 만들고 이 배포용으로 생성한 배포 키를 그 사용자에게 둡니다. --size로 다른 플레이버를 고를 수 있고, 할당에 자동 할당 네트워크가 없으면 --network로 네트워크를 지정하며, --volume-gb로 작업 데이터를 담을 별도 볼륨을 추가합니다. m3.small은 시간당 2 서비스 유닛(SU, 할당의 단위)을 쓰고, 계속 켜 두면 1년에 약 17,520 SU가 되므로 연구가 끝나면 인스턴스를 삭제하십시오.
배포하기
같은 명령을 --dry-run 없이 실행하고, Potato가 물으면 계획을 확인하십시오.
potato deploy up myproject/config.yaml --provider openstack --cloud jetstream2작업은 https://potato-<name>.<allocation>.projects.jetstream-cloud.org에서 제공되며, <name>은 작업 이름에서 만들어집니다. Jetstream2는 유동 IP가 연결되고 1~2분 뒤에 DNS 이름을 게시하며, Potato는 이를 기다렸다가 90일 동안 유효한 Let's Encrypt 인증서를 요청합니다. 배포는 마지막에 URL과, 설정 옆에 있는 관리자 키 파일 .potato/secrets.json의 경로를 출력합니다. 관리자 키로 /admin의 관리자 대시보드를 열 수 있습니다.
연구가 진행되는 동안 potato deploy status는 서버와 인증서가 정상인지 보고하고, potato deploy logs myproject/config.yaml -f는 서버 로그를 계속 따라가며 보여 줍니다. 설정을 수정한 뒤 up을 다시 실행하면 새 버전이 같은 인스턴스에 업로드됩니다.
연구 마무리하기
주석은 인스턴스의 디스크에 있으며, 이 디스크는 인스턴스와 함께 삭제됩니다. 먼저 내 컴퓨터로 pull해 내용을 확인한 다음 인스턴스를 삭제하십시오.
potato deploy pull myproject/config.yaml
potato deploy destroy myproject/config.yamlpull은 배포가 수집한 모든 것을 새 potato-pull-<name>-<timestamp> 디렉터리에 기록합니다. destroy는 한 번도 pull하지 않은 배포에서는 실행되지 않습니다. 삭제가 끝나면 인스턴스는 더 이상 SU를 쓰지 않습니다.
학내 OpenStack 클라우드
같은 공급자는 학내 OpenStack 클라우드에서도 동작합니다. 해당 클라우드의 clouds.yaml 항목을 아무 이름으로나 저장하고 그 이름을 --cloud에 넘기십시오. Jetstream2 기본값이 없으면 Potato는 m1.small 플레이버, Ubuntu 24.04 이미지, public 외부 네트워크를 쓰며, --size, --os-image, --network로 각각 바꿀 수 있습니다. 학내 클라우드는 인스턴스에 DNS 이름을 주지 않으므로, 작업은 AWS Lightsail 대상과 마찬가지로 유동 IP와 유효 기간이 짧은 IP 인증서로 제공됩니다.
문제 해결
**"No --network given and this project has no auto-allocated network"**는 할당에 기본 네트워크가 없다는 뜻입니다. Horizon이나 Exosphere에서 네트워크와 라우터를 만들고 --network <name>을 넘기십시오.
첫 배포에서는 인증서 발급에 몇 분이 걸립니다. Let's Encrypt가 인증서를 발급하려면 먼저 DNS 이름이 조회되어야 하기 때문입니다.
더 읽을거리
- Potato를 로컬 또는 클라우드에서 실행하기: 다른 클라우드 대상
- 주석 서버 배포하기: 호스트 고르기
- Jetstream2와 OpenStack 참조 문서