Created
December 16, 2020 08:56
-
-
Save Taehun/3111ee9335f832530288164116c602e0 to your computer and use it in GitHub Desktop.
Argo Workflow 프레임 추출
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
apiVersion: argoproj.io/v1alpha1 | |
kind: Workflow | |
metadata: | |
generateName: media-works- | |
spec: | |
entrypoint: media-works-ffmpeg | |
volumes: | |
- name: workdir | |
persistentVolumeClaim: | |
claimName: azure-managed-disk | |
templates: | |
- name: media-works-ffmpeg | |
container: | |
image: briankim/ffmpeg:v1 | |
command: [ffmpeg] | |
args: ["-i", "/mnt/vol/big_file.mp4","-r", "1/1", "/mnt/vol/$frame%03d.jpg"] | |
volumeMounts: | |
- name: workdir | |
mountPath: /mnt/vol |
- PVC 설정 파일
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: azure-managed-disk
spec:
accessModes:
- ReadWriteOnce
storageClassName: managed-premium
resources:
requests:
storage: 5Gi
PVC 접근을 위한 더미 Pod 설정 파일
- data_access.yaml
apiVersion: v1
kind: Pod
metadata:
name: dataaccess
spec:
containers:
- name: alpine
image: alpine:latest
command: ['sleep', 'infinity']
volumeMounts:
- name: workdir
mountPath: /mnt/vol
volumes:
- name: workdir
persistentVolumeClaim:
claimName: azure-managed-disk
저 파일을 kubectl apply -f data_access.yaml
로 띄운 다음,
$ kubectl cp small_file.mp4 dataaccess:/mnt/vol/small_file.mp4
식으로 Persistent Volumne에 파일 복사
프레임 추출 Job 실행을 위한 컨테이너 Dockerfile (briankim/ffmpeg:v1 이미지, Docker Hub에 올려놨어요.)
- Dockerfile
FROM ubuntu:20.04
LABEL maintainer="Brian Kim"
RUN apt update && apt install -y ffmpeg
- 병렬 처리를 위한 Dag 설정
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: dag-diamond-
spec:
entrypoint: diamond
volumes:
- name: workdir
persistentVolumeClaim:
claimName: azure-managed-disk
templates:
- name: ffmpeg
container:
image: briankim/ffmpeg:v1
command: [ffmpeg]
args: ["-i", "/mnt/vol/small_file.mp4","-r", "1/1", "/mnt/vol/$frame%03d.jpg"]
volumeMounts:
- name: workdir
mountPath: /mnt/vol
- name: diamond
dag:
tasks:
- name: A
template: ffmpeg
- name: B
template: ffmpeg
- name: C
template: ffmpeg
- name: D
template: ffmpeg
- name: E
template: ffmpeg
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
미디어 파일 올리기 위해 AKS에 Persistent Volumne 만들고, 업로드하고 워커 pod에서 마운트해서 사용하는 등 설정이 조금 복잡하네요.
k8s 사용법과 거의 동일하기때문에 k8s 익숙하신 분들을 위해서는 좋은것 같습니다.