Kubernetes 이야기

Nexus에 Pypi 저장소 구축 본문

Kubernetes/devops

Nexus에 Pypi 저장소 구축

kmaster 2023. 12. 29. 11:15
반응형

 

PyPi 는 Python의 온라인 저장소이며 pip install 을 실행할 때 라이브러리가 다운로드되는 곳이다.

 

Nexus 에 Pypi 저장소를 구축하는 방법을 알아보좌. 우선 Nexus 에 Repository -> Create repository 를 선택한다.

 

3가지 모드가 있다.

  1. Proxy
    Nexus를 PyPI 프록시로 설정하여 PyPI 서버로부터 패키지를 캐싱한다. 이 방법은 네트워크 대역폭을 절약하고 빠른 속도로 패키지를 제공할 수 있다.
  2. Group
    여러 저장소를 그룹으로 묶어서 하나의 저장소처럼 사용하는 방법이다. 그룹 저장소를 통해 여러 소스로부터 패키지를 가져올 수 있다.
  3. Hosted
    Nexus에서 직접 PyPI 저장소를 호스팅하는 방법이다. 이 방법은 독립적인 저장소를 만들어 직접 관리하고 사용할 수 있다.

폐쇄망 환경에서 주로 구축하는 Hosted 모드로 생성해 보자.

 

우선, Pypi를 통해 공유되는 파일 저장 공간을 설정해야 한다. Blob Store 메뉴로 이동해 보자.

 

이제 Pypi 저장소를 생성해보자.

 

이제 저장소에 파일을 등록해 보자. 먼저 whl 파일을 다운로드 받아보자.

# mkdir download
# cd download
# pip download requests
# ls -al
total 592
drwxr-xr-x   2 root root   4096 Dec 28 23:19 .
drwxrwxr-x 173 root root  53248 Dec 28 23:19 ..
-rw-r--r--   1 root root 162530 Dec 28 23:19 certifi-2023.11.17-py3-none-any.whl
-rw-r--r--   1 root root 140273 Dec 28 23:19 charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
-rw-r--r--   1 root root  61567 Dec 28 23:19 idna-3.6-py3-none-any.whl
-rw-r--r--   1 root root  62574 Dec 28 23:19 requests-2.31.0-py3-none-any.whl
-rw-r--r--   1 root root 104579 Dec 28 23:19 urllib3-2.1.0-py3-none-any.whl

 

 

Upload ( Installing )

 

다음과 같이 whl 파일을 업로드 할 수 있다.

 

 

UI가 아닌 좀 더 쉽게 사용하려면 Twine을 설치한다. Twine은 Python 패키지를 PyPI 및 기타 저장소에 게시하기 위한 유틸리티이다.

# pip install twine
# twine upload --repository-url http://nexusip:port/repository/pypi/

 

 

upload 시 아래와 같은 경고가 발생하는 경우에는 deployment policy를 확인한다.
 HTTPError: 400 Bad Request from http://10.140.0.111:30200/repository/pypi/
         Repository does not allow updating assets: pypi​

 

Deployment policy를 Allow redeploy 로 설정한다.

 

 

rest api로는 다음과 같이 호출한다.

curl -v -u admin:admin -F "pypi.asset0=@requests-2.31.0-py3-none-any.whl" "http://nexus/service/rest/v1/components?repository=pypi"

 

 

Download

 

Nexus에서 패키지를 다운로드 하려면 구성 파일을 pip편집해야 한다.

$HOME/.config/pip/pip.conf

[global]
index = https://nexus/repository/pypi
index-url = https://nexus/repository/pypi/simple
no-cache-dir = false

 

또는, 직접 nexus 주소를 입력할 수도 있다.

pip install --index-url http://nexus/repository/pypi/simple 패키지명

 

 

참고

https://help.sonatype.com/repomanager3/

https://help.sonatype.com/repomanager3/integrations/rest-and-integration-api/components-api

 

 

반응형

'Kubernetes > devops' 카테고리의 다른 글

Kubernetes에 Nexus 설치  (0) 2023.12.29
tekton과 argocd를 이용한 GitOps 구축하기  (0) 2023.01.12
Giblab install on kubernetes  (0) 2022.10.09
Backstage  (0) 2022.10.02
dapr  (0) 2022.09.30
Comments