아티클 관련 제품: SparklingSoDA4.0
이 글을 읽으면
- cli를 통해 python 패키지 업로드를 할 수 있습니다.
사전 작업 및 준비
- 업로드 하고자 하는 파이썬 패키지를 파일을 준비합니다.
- 단, 종속성이 있는 모든 파일이 준비되어 있어야 합니다.
파이썬 패키지 업로드 하기
스파클링소다 설치 파일 중 package_loader 디렉터리가 존재합니다.
해당 디렉터리로 이동하면, job_pypi_upload.yaml 파일과 upload 디렉터리가 존재합니다.
cd <sparklingsoda directory>/package_loader/ ls -al total 4 drwxr-xr-x. 3 root root 48 Aug 29 17:53 . drwxrwxrwx. 13 root root 206 Sep 19 14:02 .. -rw-r--r-- 1 root root 801 Aug 29 17:53 job_pypi_upload.yaml drwxr-xr-x. 2 root root 173 Aug 30 09:49 upload
활용하는 방법은,
upload 디렉터리에 업로드하고자 하는 파이썬 패키지 파일을 넣어준 후, job_pypi_upload.yaml 파일을 실행해주면 됩니다.
예시는 아래와 같습니다.
1. package_loade/upload 하위에 python package를 넣어줍니다.
ll upload/ total 11280 -rw-r--r-- 1 root root 11285953 Aug 29 17:56 pandas-1.3.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
2. job_pypi_upload.yaml 파일을 수정합니다.
spec.template.spec.volumes/hostPath 를 수정합니다.
해당 값은 python package를 넣어 둔 upload 디렉터리를 전체 경로로 작성합니다.
spec.template.spec.nodeSelector 를 수정합니다.
해당 값은 master node의 hostname으로 작성합니다.
아래 명령어를 활용하면, master노드에 적용된 hostname을 알 수 있습니다.
kubectl get node --show-labels | grep kubernetes.io/hostname master Ready master 92d v1.18.19 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=master,kubernetes.io/os=linux,master=true,node-role.kubernetes.io/master=,sodaflow/nginx-proxy=true,sodaflow/sodaflow-master-area=true,sodaflow/sodaflow-worker-area=true worker Ready <none> 85d v1.18.19 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=worker,kubernetes.io/os=linux,sodaflow/gpu-enabled=true,sodaflow/nginx-proxy=true,sodaflow/sodaflow-master-area=true,sodaflow/sodaflow-worker-area=true,testKey=testValue,worker=true
3. package_loader 디렉터리에 있는 job_pypi_upload.yaml을 실행합니다.
kubectl apply -f job_pypi_upload.yaml job.batch/nexus-pypi-loader created
4. 정상적으로 push 가 되었는지 확인합니다.
kubectl get po | grep nexus-pypi-loader nexus-pypi-loader-f787x 0/1 Completed 0 2m27s
pod의 이름을 복사합니다.
kubectl logs -f <pod name> kubectl logs -f nexus-pypi-loader-f787x Start package uploading to devainexus Uploading distributions to http://devainexus/repository/pypi-hosted/ Uploading pandas-1.3.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 100%|██████████| 10.8M/10.8M [00:00<00:00, 25.4MB/s] All Done. upload files 1
만약 추후에 다시 python package를 업로드하게 된다면,
실행했던 job을 내린 후 다시 실행해야 합니다.
kubectl delete -f job_pypi_upload.yaml job.batch "nexus-pypi-loader" deleted kubectl apply -f job_pypi_upload.yaml job.batch/nexus-pypi-loader created
마치며
- cli로 python package를 업로드하는 방법에 대해 알아보았습니다.
- 이렇게 nexus에 python package를 업로드 했다면, 노트북 내에서 해당 패키지를 불러와 import할 수 있습니다.
아티클이 유용했나요?
훌륭합니다!
피드백을 제공해 주셔서 감사합니다.
도움이 되지 못해 죄송합니다!
피드백을 제공해 주셔서 감사합니다.
피드백 전송
소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.