PyPI 패키지 설치 문제 해결

Cloud Composer 1 | Cloud Composer 2

이 페이지에서는 커스텀 PyPI 패키지를 설치할 때 종속 항목 충돌 문제를 해결하는 방법을 설명합니다.

Cloud Composer에서 발생할 수 있는 PyPI 패키지와 관련된 가장 일반적인 문제는 종속 항목 충돌입니다.

설치할 새 커스텀 PyPI 패키지를 지정할 때 이 패키지 또는 해당 버전이 다른 커스텀 PyPI 패키지 또는 해당 환경에 사전 설치된 패키지와 종속 항목 충돌을 일으킬 수 있습니다. 이 경우 환경 업데이트 작업이 오류와 함께 실패합니다.

Cloud Build 및 클러스터 내 빌드 오류

패키지 관련 문제가 발생하면 해당 환경의 배포 방법에 따라 두 가지 방법으로 오류 메시지가 표시됩니다.

  • Cloud Build. 오류 메시지 및 Cloud Build 로그에 대한 링크가 표시됩니다. 예를 들면 다음과 같습니다.

    UPDATE operation on this environment failed 25 minutes ago with the
    following error message:
    Failed to install PyPI packages.  Check the Cloud Build log at ...
    
  • 클러스터 내 빌드. 오류 메시지 및 빌드 로그의 위치가 표시됩니다. 예를 들면 다음과 같습니다.

    UPDATE operation on this environment failed 17 minutes ago with the
    following error message:
    Failed to install PyPI packages.  Check the in-cluster build logs for
    details. They can be found in the Environment logs under the build-log-*
    log name.
    

자세한 오류 메시지 보기

패키지 설치에 실패하면 pip가 자세한 오류 메시지를 보고합니다. 이 오류 메시지는 빌드 로그에서 찾을 수 있습니다.

Cloud Build 로그에서 pip 오류 찾기

Cloud Build 오류 메시지에서 링크를 따라가거나 빌드 로그를 찾을 수 있습니다.

  1. 빌드 로그를 찾습니다.

    1. Google Cloud 콘솔에서 빌드 기록 페이지로 이동합니다.

      빌드 기록으로 이동

    2. 실패한 빌드를 선택하여 해당 로그를 확인합니다.

  2. 빌드 로그에서 pip에서 오류 메시지를 찾습니다. 예를 들면 다음과 같습니다.

    ERROR: apache-airflow-backport-providers-google 2021.2.5 has requirement
    google-cloud-logging<3.0.0,>=2.1.1, but you'll have google-cloud-logging
    1.15.0 which is incompatible.
    

클러스터 내 빌드 로그에서 pip 오류 찾기

  1. 빌드 로그를 찾습니다.

    1. Google Cloud 콘솔에서 환경 페이지로 이동합니다.

      환경으로 이동

    2. 환경을 선택합니다.

    3. 로그 탭을 엽니다.

    4. 모든 로그 > Composer 로그 > 빌드 > 작업자 및 스케줄러 이미지를 선택합니다.

    5. 심각도 드롭다운 목록에서 정보를 선택합니다.

  2. 표시된 로그에서 다음을 수행합니다.

    1. installer.sh 오류 메시지를 찾습니다. 예를 들면 다음과 같습니다.

      The command '/bin/sh -c bash installer.sh $COMPOSER_PYTHON_VERSION
      fail' returned a non-zero code: 1
      
    2. 앞의 정보 메시지에는 자세한 pip 오류가 포함되어 있습니다. 예를 들면 다음과 같습니다.

      apache-airflow-backport-providers-google 2021.2.5 has requirement
      google-cloud-logging<3.0.0,>=2.1.1, but you have
      google-cloud-logging 1.15.0.
      

사전 설치된 PyPI 패키지와 충돌

사용자가 설치하는 커스텀 PyPI 패키지와 사전 설치된 패키지 사이에 일부 패키지 충돌이 발생합니다.

Cloud Composer 버전 페이지에서 사용자의 Cloud Composer 버전에 대한 사전 설치된 패키지 전체 목록을 볼 수 있습니다.

이 문제를 해결하려면 다음을 수행하면 됩니다.

  • 커스텀 PyPI 패키지의 다른 버전을 설치합니다.

  • 사전 설치된 패키지의 다른 버전을 설치합니다. 이렇게 하려면 사전 설치된 패키지 이름으로 커스텀 PyPI 패키지를 설치하고 필요한 버전을 지정합니다. 사전 설치된 패키지를 다운그레이드하는 것은 추천하지 않습니다.

  • 이후의 Cloud Composer 버전에 다른 버전의 사전 설치된 패키지가 사용되는지 확인합니다. 이후 버전의 Cloud Composer로 환경을 업그레이드하기 전에 잠재적 PyPI 패키지 충돌을 확인할 수 있습니다.

  • PythonVirtualenvOperator를 사용하여 패키지 충돌을 일으키는 코드 스니펫을 격리합니다.

PyPI 패키지 설치 시 메타데이터 서버를 사용할 수 없음

환경에서 커스텀 pip.conf 파일을 사용하는 경우 환경에 새 PyPI 패키지를 설치할 수 없는 문제가 발생할 수 있습니다. 패키지 설치 오류와 관련된 Cloud Build 로그에 다음 경고 메시지가 표시됩니다.

WARNING: Compute Engine Metadata server unavailable on attempt 3 of 3. Reason:
timed out
WARNING: Authentication failed using Compute Engine authentication due to
unavailable metadata server.

이 문제는 http://pypi.org/simple기본 패키지 색인에 대한 액세스를 허용하지 않는 pip.conf 파일로 인해 발생합니다. 예를 들어 pip.conf 파일에서 재정의된 index-url 매개변수로 인해 커스텀 Artifact Registry 저장소의 패키지 설치만 허용하는 경우 기본 패키지 색인에서 패키지를 설치할 수 없습니다.

이 문제를 해결하려면 http://pypi.org/simple 패키지 색인이 pip.conf 파일에 추가되어 있는지 확인합니다. 예를 들어 기본 패키지 색인이 index-url 매개변수에 정의되어 있으면 extra-index-url 매개변수에 http://pypi.org/simple 색인을 추가합니다.

다음 단계