1 단계. 환경 준비¶
이 단계에서는 파이프라인 실행에 필요한 환경을 구성합니다.
이 단계를 마치면 아래 준비가 완료됩니다.
- 모델 파일을 저장할 PVC(영구 볼륨) 생성
- 코드 작성용 Code-server 배포 및 접속
- Python 패키지 설치
- Gitea 액세스 토큰 발급 및
airflow-dag레포 클론
1-1. 스토리지(PVC) 생성¶
Code-server의 작업 공간으로 사용할 PVC를 생성합니다. PVC는 컨테이너가 재시작되어도 데이터가 유지되는 Kubernetes 영구 볼륨으로, Code-server에 마운트하여 코드와 파일을 보관하는 데 사용합니다.
모델 파일은 S3에 저장됩니다
학습이 완료된 모델 파일은 이 PVC가 아니라 MLflow와 연동된 S3(SeaweedFS)에 저장됩니다. Runway가 S3 연동을 이미 구성해두었으므로 별도 설정은 필요하지 않습니다.
프로젝트 > 스토리지 > + 생성
아래 항목을 입력합니다. 표에 표시된 값은 튜토리얼을 위한 추천 값으로 실제 환경에 맞게 조정할 수 있습니다.
| 항목 | 값 | 설명 |
|---|---|---|
| 볼륨 ID | {구분용 문자열}-model-registry |
문자, 숫자, 하이픈(-)만 사용 가능 |
| 스토리지 클래스 | ceph-block |
단일 노드 전용 블록 스토리지 |
| 접근 모드 | ReadWriteOnce |
단일 노드에서 읽기/쓰기 가능 |
| 크기 | 5 (GiB) |
볼륨 ID
같은 프로젝트에서 여러 튜토리얼을 진행할 때 구분할 수 있도록 고유한 접두사를 붙여주세요.
예: ef-02-model-registry
생성 버튼을 클릭하면 목록에 방금 만든 볼륨이 Bound 상태로 나타납니다.
1-2. Code-server 배포¶
코드를 작성하고 Gitea에 push할 개발 환경으로 Code-server를 사용합니다. 카탈로그 메뉴에서 간소화된 Helm chart의 일부를 수정하여 애플리케이션으로 배포합니다.
로컬 PC에 VS Code가 설치되어 있다면
VS Code를 Code-server 대신 사용할 수 있습니다. 이 경우 1-2, 1-3 단계를 건너뛰고 1-4 단계로 바로 진행합니다.
프로젝트 > 카탈로그 > Code server 선택
Code server 카탈로그 상세 페이지에서 애플리케이션 생성을 클릭합니다.
정보 입력 및 베이스 도메인 확인¶
- 이름과 설명(선택)을 입력합니다. ID는 입력한 이름을 기반으로 자동 생성(수정 가능)됩니다.
- 헬름 차트 섹션 오른쪽에 위치한 설정 관련 정보 버튼을 클릭하여 베이스 도메인을 확인합니다. 다음 단계에서 베이스 도메인을 사용합니다. 도메인 주소는 Runway를 실행 중인 환경마다 다릅니다.
애플리케이션 열기 링크 생성¶
앱 상세 페이지의 열기 버튼에 표시될 접속 버튼을 생성합니다. 설정해두면 배포 후 버튼을 클릭하여 Code-server에 바로 접속할 수 있습니다.
애플리케이션 열기 링크 섹션에서 + 링크 추가를 클릭합니다.
이름을 code-server로 입력(선택 가능)하고, URL 필드에 아래 형식을 참고하여, URL을 입력합니다.
- 형식:
{서브도메인}.{베이스-도메인}- (예시)
my-code-server.v2.mrxrunway.ai - 서브도메인은 원하는 값으로 자유롭게 정합니다.
- 베이스 도메인은 설정 관련 정보 패널에서 확인합니다. 베이스 도메인은 Runway가 배포된 환경마다 다릅니다.
- (예시)
이 값은 이후 values.yaml의 httpRoute.hostname에도 동일하게 입력합니다.
배포 설정 구성 (values.yaml)¶
values.yaml은 앱 배포 시 동작 방식을 설정하는 파일입니다. 비밀번호, 접속 URL, 스토리지 연결 등 앱에 필요한 설정을 여기에 입력합니다.
생성 폼 아래쪽 values.yaml 편집 영역에서 아래 항목을 수정합니다.
1) 비밀번호 설정
기본 차트에는 env 섹션이 없습니다. 아래 내용을 직접 추가하세요.
SUDO_PASSWORD는 Code-server 내에서 sudo 명령을 실행할 때 사용하는 비밀번호입니다.
env:
SUDO_PASSWORD: "사용할_비밀번호"
PUID: "1000"
PGID: "1000"
튜토리얼에서는 user1234를 사용합니다.
2) 스토리지 연결
persistence 섹션에서 아래 네 가지를 수정합니다.
enabled:false→truemountPath:/config→/mnt/model-registryaccessMode,storageClassName,size줄 앞에#을 추가하여 주석 처리existingClaim줄의#을 제거하고 볼륨 ID를 입력
수정 후 최종 상태:
persistence:
enabled: true
mountPath: /mnt/model-registry
# New volume settings
#accessMode: ReadWriteOnce
#storageClassName: ""
#size: 1Gi
existingClaim: "{볼륨-ID}"
3) 접속 URL(HTTPRoute) 설정
httpRoute 섹션에서 아래 두 가지를 수정합니다.
enabled를false→true로 변경hostname에 애플리케이션 열기 링크에서 입력한 값과 동일한 접속 URL을 입력합니다.
httpRoute:
enabled: true
hostname: "{서브도메인}.{베이스-도메인}"
hostnames: []
배포 확인¶
생성 버튼을 클릭하면 Code-server 앱 상세 페이지로 이동합니다. 처음에는 Terminated 상태로 보일 수 있습니다.
상태가 Healthy로 바뀌면 정상 배포된 것입니다.
우상단 열기 드롭다운에서 code server를 클릭하면 Code-server가 새 탭에서 열립니다.
1-3. Code-server 초기 설정¶
폴더 신뢰 팝업¶
Code-server에 처음 접속하면 아래와 같은 팝업이 나타납니다. Yes, I trust the authors를 클릭합니다.
setup.sh 실행¶
터미널을 열고 아래 명령을 실행합니다.
bash setup.sh
실행 중 아래와 같이 sudo 비밀번호 입력을 요청하는 프롬프트가 나타납니다.
[sudo] password for abc:
SUDO_PASSWORD에 설정한 값(기본값: user1234)을 입력하고 Enter를 누릅니다.
설치가 완료되면 패키지 목록과 함께 Setup complete! 메시지가 출력됩니다.
1-4. Gitea 토큰 발급 & airflow-dag 레포 클론¶
Code-server에서 Gitea에 push하려면 액세스 토큰이 필요합니다.
Gitea 접속¶
워크스페이스 > 플랫폼 앱 > Gitea
Gitea 메인 페이지에서 우상단 로그인을 클릭합니다.
Sign in with keycloak을 클릭하면 Runway SSO 계정으로 자동 로그인됩니다.
액세스 토큰 발급¶
우상단 프로필 아이콘 > 설정 > 좌측 메뉴 이용리케이션
액세스 토큰 관리 섹션에서 아래와 같이 입력합니다.
| 항목 | 값 |
|---|---|
| 토큰 이름 | code-server-token (예시) |
| repository | Read and Write |
| user | Read and Write |
토큰 생성 버튼을 클릭합니다.
토큰은 생성 즉시 복사하세요
토큰 값은 생성 직후에만 전체를 확인할 수 있습니다. 이후에는 다시 볼 수 없으므로 반드시 안전한 곳에 저장해두세요.
airflow-dag 레포 클론¶
Code-server 터미널로 돌아가서 아래 명령을 실행합니다. {gitea-url}, {username}, {token}, {project-id}는 실제 값으로 바꿔 입력합니다.
git clone https://{username}:{token}@{gitea-url}/{username}/airflow-dag.git
Gitea URL과 레포 경로 확인
Gitea 접속 URL은 플랫폼 앱 > Gitea의 접속 URL을 확인하세요.
airflow-dag 레포는 프로젝트 생성 시 자동으로 만들어지며, Gitea에서 자신의 계정 아래에서 확인할 수 있습니다.
클론이 완료되면 airflow-dag 디렉토리가 생성됩니다.
cd airflow-dag
ls
다음 단계에서는 클론한 레포지토리에 DAG 파일을 작성하고 Gitea에 push합니다.



















