728x90
안녕하세요?
Kubernetes에서 작업을 하다 보면, 종종 GIT에서 소스를 가져와서 간단한 Job들을 돌릴 경우가 있습니다. 제가 그랬는데요. CronJob을 돌리기 위한 소스를 매번 GIT에서 가져와서 실행을 하고자 했습니다. 소스가 변경되는 것에 따라서 컨테이너 이미지를 매번 빌드할 정도의 Job 보다는 빠른 반영을 위해서, Kubernetes에서 제공하는 ephemeral storage 중 하나인 emptyDir과 init container를 활용해서 만들어 보기로 했습니다.
init container에서 ephemeral storage에 git clone한 소스를 저장하고, 메인 container에서는 해당 소스를 기반으로 python code를 실행시키는 Pod/Cronjob을 만들면 됩니다. 간단한 작업이기 때문에 바로 아래 소스를 보면 됩니다.
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
initContainers:
- name: git
image: alpine/git
command:
- git
- clone
- "git-url"
- /workdir
- -b
- "master"
volumeMounts:
- name: workdir
mountPath: /workdir
containers:
- name: job
image: python:3.8
env:
- name: ENV
value: master
volumeMounts:
- name: workdir
mountPath: /workdir
command: ["/bin/sh"]
args: ["-c", "cd /workdir;pip3 install -r requirements.txt;python main.py"]
restartPolicy: OnFailure
volumes:
- name: workdir
emptyDir:
sizeLimit: 500Mi
위 Pod/CronJob을 실행하게 되면, 별도의 이미지 빌드 없이 공식적으로 제공되는 slim화된 container 이미지를 사용해서 GIT에 있는 python 코드를 실행시킬 수 있습니다.
'개발 > AWS EKS' 카테고리의 다른 글
[EKS] Gatekeeper (1) | 2024.04.15 |
---|---|
[K8S] Ephemeral Container (0) | 2024.03.07 |
[EKS] Knative volume support - PVC (0) | 2024.03.06 |
DockerHub 이미지를 Private Registry에 업로드 (0) | 2024.02.19 |
Containerd와 AWS ECR login 방법 (1) | 2024.01.31 |