Nexus Connector
Nexus Connector 是一个平台无关的连接器,您可以使用它连接到 Nexus 仓库。
您可以使用 Nexus Connector 在 CICD 流水线或 Kubernetes 工作负载中安全地执行 Maven、NPM 和 PyPI 操作,而无需凭证。
此外,您可以集中管理跨命名空间的 Nexus 访问配置,避免在每个命名空间中重复配置 Nexus 凭证。
目录
OverviewIntegration RequirementsCreating a Nexus ConnectorFields ReferenceCapabilities of Nexus ConnectorAuthentication使用基本认证所需凭证权限代理和配置文件代理地址Maven:settings.xml 配置NPM:.npmrc 配置Yarn:.yarnrc.yml 配置PyPI 下载:pip.conf 配置PyPI 发布:.pypirc 配置使用 Connectors CSI DriverNexus 的 configuration.paramsFurther ReadingReferencesOverview
本文档涵盖:
- 集成要求:目标 Nexus 仓库的先决条件
- 创建 Nexus Connector
- 高级功能:代理功能及 Maven、NPM 和 PyPI 的配置文件
Integration Requirements
Nexus 仓库先决条件
- Nexus 服务器必须能从集群访问。
- 支持的仓库类型:Maven(hosted/proxy/group)、NPM(hosted/proxy/group)、PyPI(hosted/proxy/group)。
客户端先决条件
对于 Maven 客户端,执行 mvn 操作前,必须信任连接器代理服务器的证书:
mvn 客户端还必须使用 wagon 传输:
Creating a Nexus Connector
以下是创建基础 Nexus Connector 的示例:
Fields Reference
spec.connectorClassName:
nexus(固定值),指定用于 Nexus 集成的 ConnectorClass 名称。
spec.address:
目标 Nexus 服务器地址,例如:https://nexus.example.com。这是 Nexus 服务器的根地址,不是具体仓库的 URL。
spec.auth:
指定 Nexus 服务器的认证方式。
spec.auth.name:Nexus 连接器应为basicAuth。spec.auth.secretRef:指定包含认证信息的 Secret。Secret 应创建在与连接器相同的命名空间中。如果您的 Nexus 服务器不需要认证,可以省略此字段。
可选元数据字段:
-
cpaas.io/description:连接器的描述信息,例如:
Capabilities of Nexus Connector
Authentication
Nexus Connector 支持以下认证类型:
basicAuth:基于用户名和密码的认证,对应的 Secret 类型为kubernetes.io/basic-auth
使用基本认证
如果 Secret 不正确,连接器的 status.conditions 字段会显示错误信息。
有关完整状态信息,请参见 Connector Status Documentation。
所需凭证权限
所需权限取决于您如何使用连接器:
- 仅下载:凭证只需对目标仓库具有读取权限。
- 上传/部署:凭证必须对目标仓库具有读写权限。
为安全起见,请创建权限最小化的凭证。
代理和配置文件
为了让客户端无需凭证即可访问 Nexus 仓库,Nexus Connector 提供了一个自动注入认证信息的代理服务器。
Nexus ConnectorClass 提供以下配置文件,可通过 Connectors CSI Driver 挂载到 Pod 中:
代理地址
创建连接器后,系统会自动为目标 Nexus 服务器创建代理服务。
代理端点记录在 status.proxy.httpAddress 中:
Maven:settings.xml 配置
settings 配置提供通过 Connectors CSI Driver 挂载的 settings.xml 和 ca.cert 文件。
生成的 settings.xml 示例:
可选参数:mirrorRepository — 用作 Maven 镜像的 Nexus 仓库。设置后,生成的 settings.xml 会包含指向 {address}/repository/{mirrorRepository} 的 <mirrors> 部分。
挂载 settings 配置示例:
NPM:.npmrc 配置
npmrc 配置提供用于 NPM 包操作的 .npmrc 文件。
必填参数:registry — Nexus NPM 代理仓库名称(例如 npm-proxy)。
可选参数:strictSSL — 是否要求 SSL(默认值为 "true")。
Yarn:.yarnrc.yml 配置
yarnrc 配置提供用于 Yarn 包操作的 .yarnrc.yml 文件。
必填参数:registry — Nexus NPM 代理仓库名称。
可选参数:strictSSL — 是否要求 SSL(默认值为 "true")。
PyPI 下载:pip.conf 配置
pipconf 配置提供用于下载 PyPI 包的 pip.conf 文件。
必填参数:repository — Nexus PyPI 代理仓库名称(例如 pypi-proxy)。
PyPI 发布:.pypirc 配置
pypirc 配置提供用于发布 PyPI 包的 .pypirc 文件。
必填参数:deployRepository — Nexus PyPI hosted 仓库名称(例如 pypi-hosted)。
使用 Connectors CSI Driver
CSI 卷属性参数:
csi.readOnly:固定值truecsi.driver:固定为connectors-csicsi.volumeAttributes:connector.name:Nexus Connector 的名称connector.namespace:Nexus Connector 所在命名空间;如果未指定,则使用 Pod 所在命名空间configuration.names:要挂载的配置(例如settings、npmrc、yarnrc、pipconf、pypirc)configuration.params:每个命名配置的运行时参数的 JSON 字符串(详见下文)
多个配置可以用逗号分隔一起挂载:
Nexus 的 configuration.params
关于 configuration.params 的格式、校验规则及默认注入行为,请参见 Connectors CSI Driver 文档中的 configuration.params。
各 Nexus 配置接受的参数如下: