PyPI Connector
PyPI connector — это платформонезависимый коннектор, который можно использовать для подключения к любому реестру PyPI.
Вы можете использовать PyPI Connector для безопасного выполнения операций PyPI в CICD пайплайнах или использовать его в kubernetes workload для выполнения операций PyPI без учётных данных.
Кроме того, вы можете централизованно управлять конфигурациями доступа PyPI по пространствам имён, избегая необходимости повторять учётные данные PyPI в каждом пространстве имён.
Содержание
OverviewIntegration RequirementsCreating a simple PyPI connectorFields ReferenceCapabilities of PyPI ConnectorAuthenticationUsing Basic AuthenticationCredential Permissions RequiredProxy and pip.conf, .pypirc ConfigurationProxy Addresspip.conf configuration file.pypirc configuration fileUsing Connectors CSI Driver to mount pip.conf and .pypirc fileFurther ReadingReferencesOverview
В этом документе рассматриваются:
- Integration Requirements: Предварительные требования для целевых реестров PyPI
- Creating PyPI connector
- Advanced Features: Возможности прокси и конфигурационные возможности PyPI connector
Integration Requirements
PyPI Registries Prerequisites
- Реестр PyPI должен поддерживать Simple Repository API
Creating a simple PyPI connector
Вот как создать базовый PyPI Connector:
Fields Reference
spec.connectorClassName:
pypi (константа), указывает имя ConnectorClass для интеграции с PyPI.
spec.address:
Адрес целевого реестра PyPI, например: https://pypi.org.
spec.auth(optional):
устанавливает метод аутентификации реестра PyPI
-
spec.auth.name: должен бытьbasicAuthдля PyPI connector. -
spec.auth.secretRef: указывает секрет, содержащий информацию для аутентификации в реестре PyPI, секрет должен быть создан в том же пространстве имён, что и коннектор. Если ваш реестр PyPI не требует аутентификации, это поле можно опустить.
Optional Metadata fields:
-
cpaas.io/description: Описание для PyPI connector, например:
Capabilities of PyPI Connector
Authentication
PyPI connector поддерживает следующие типы аутентификации:
basicAuth: аутентификация по имени пользователя и паролю, соответствующий тип секрета:kubernetes.io/basic-auth
Using Basic Authentication
Например:
Если секрет неверен, поле status.conditions в PyPI connector покажет сообщение об ошибке.
Для подробной информации о статусе смотрите Connector Status Documentation.
Если реестр PyPI не требует аутентификации, можно опустить поле secretRef:
Credential Permissions Required
Необходимые права для настроенных учётных данных зависят от того, как вы планируете их использовать в Pods/Pipelines.
Например:
- Установка пакетов: Если вам нужно только устанавливать пакеты с помощью
pip install, учётные данные требуют только права на чтение целевого реестра PyPI. - Загрузка пакетов: Если необходимо загружать пакеты с помощью
twine uploadили аналогичных инструментов, учётные данные должны иметь права на чтение и запись для целевого реестра.
Для обеспечения безопасности рекомендуется создавать учётные данные с минимально необходимыми правами. При необходимости дополнительных привилегий создавайте отдельные Connectors с более привилегированным секретом и используйте изоляцию по пространствам имён для контроля доступа пользователей к каждому Connector.
Proxy and pip.conf, .pypirc Configuration
Чтобы предоставить клиентам возможность доступа к реестру PyPI без учётных данных, PyPI connector предоставляет прокси-сервер для автоматической подстановки информации аутентификации.
Клиенты могут использовать этот прокси-сервер для доступа к реестру PyPI без необходимости настраивать учётные данные на стороне клиента.
Для упрощения использования класс PyPI connector предоставляет файлы pip.conf и .pypirc, которые можно смонтировать в Pods через CSI. В Pod при выполнении операций PyPI прокси-сервис автоматически подставит информацию аутентификации.
Proxy Address
При создании Connector система автоматически создаёт прокси-сервис для целевого реестра PyPI.
Адрес прокси записывается в status.proxy.httpAddress:
Например:
pip.conf configuration file
PyPI connector предоставляет следующую конфигурацию:
pip.conf:
- Предоставляет конфигурационный файл
pip.conf. В сочетании с connector-csi-driver этот файл монтируется в Pod, что позволяет обращаться к реестру PyPI через прокси без необходимости настраивать учётные данные на стороне клиента.
Пример конфигурационного файла, сгенерированного в Pod:
.pypirc configuration file
-
Предоставляет конфигурационный файл
.pypirc. В сочетании с connector-csi-driver этот файл монтируется в Pod, что позволяет обращаться к реестру PyPI через прокси без необходимости настраивать учётные данные на стороне клиента.
Для подробностей о механике прокси смотрите How It Works в руководстве Quick Start.
Using Connectors CSI Driver to mount pip.conf and .pypirc file
PyPI connector предоставляет файлы pip.conf и .pypirc, которые можно смонтировать в Pod через Connector CSI Driver.
Например:
Описание параметров:
csi.readOnly: фиксированное значениеtruecsi.driver: Connector CSI Driver, фиксированное значениеconnectors-csi.csi.volumeAttributes: атрибуты CSI Volumeconnector.name: имя PyPI Connectorconnector.namespace: пространство имён PyPI Connector; если не указано, используется пространство имён Podconfiguration.names: имя конфигурации, предоставляемое PyPI Connector. Поддерживаютсяpipconfиpypirc.
Для подробной информации о том, как использовать файлы pip.conf и .pypirc в Pod с помощью connectors-csi-driver, смотрите Using PyPI Connectors in kubernetes jobs
Further Reading
- Using PyPI Connectors as Distribution Management Repository
- Using PyPI Connectors in Tekton Pipelines