12.2. 配置 Jenkins 镜像
OpenShift Container Platform 为运行 Jenkins 提供容器镜像。此镜像提供 Jenkins 服务器实例,可用于为连续测试、集成和交付设置基本流程。
该镜像基于 Red Hat Universal Base Images(UBI)。
OpenShift Container Platform 遵从 Jenkins 的 LTS 的发行版本。OpenShift Container Platform 提供一个包含 Jenkins 2.x 的镜像。
OpenShift Container Platform Jenkins 镜像在 Quay.io 或 registry.redhat.io 上提供。
例如:
$ podman pull registry.redhat.io/openshift4/ose-jenkins:<v4.3.0>
要使用这些镜像,您可直接从这些 registry 访问镜像或将其推送(push)到 OpenShift Container Platform 容器镜像 registry 中。另外,您还可在容器镜像 registry 或外部位置创建一个指向镜像的镜像流。然后,OpenShift Container Platform 资源便可引用镜像流。
但为方便起见,OpenShift Container Platform 会在 openshift
命名空间中为核心 Jenkins 镜像以及针对 OpenShift Container Platform 与 Jenkins 集成提供的示例代理镜像提供镜像流。
12.2.1. 配置和自定义
您可采用两种方式管理 Jenkins 身份验证:
- 由 OpenShift Container Platform Login 插件提供的 OpenShift Container Platform OAuth 身份验证。
- 由 Jenkins 提供的标准身份验证。
12.2.1.1. OpenShift Container Platform OAuth 身份验证
OAUTH 身份验证激活方法:配置 Jenkins UI 中 Configure Global Security 面板上的选项,或者将 Jenkins Deployment configuration 上的 OPENSHIFT_ENABLE_OAUTH
环境变量设置为非 false
。这会激活 OpenShift Container Platform Login 插件,该插件从 Pod 数据或通过与 OpenShift Container Platform API 服务器交互来检索配置信息。
有效凭证由 OpenShift Container Platform 身份提供程序控制。
Jenkins 支持浏览器和非浏览器访问。
登录时,有效用户会自动添加到 Jenkins 授权列表中,其中的 OpenShift Container Platform 角色规定了用户拥有的特定 Jenkins 权限。默认使用的角色是预定义的 admin
、edit
和 view
。登录插件对 Jenkins 正在其中运行的项目或命名空间中的那些角色执行自身 SAR 请求。
具有 Admin
角色的用户拥有传统 Jenkins 管理用户权限,而具有 edit
或 view
角色的用户的权限逐渐减少。
默认的 OpenShift Container Platform admin
、edit
和 view
角色以及这些角色在 Jenkins 实例中分配的 Jenkins 权限均可配置。
在 OpenShift Container Platform pod 中运行 Jenkins 时,登录插件会在 Jenkins 正在其中运行的命名空间中查找名为 openshift-jenkins-login-plugin-config
的配置映射。
如果该插件找到并可以在该配置映射中读取,您可以定义到 Jenkins 权限映射的角色。具体来说:
- 登录插件将配置映射中的键值对视为 Jenkins 权限到 OpenShift Container Platform 角色映射。
- 其中,键是 Jenkins 权限组短 ID 和 Jenkins 权限短 ID,两者之间用连字符隔开。
-
如果要向 OpenShift Container Platform 角色添加
Overall Jenkins Administer
权限,键应为Overall-Administer
。 - 要了解有哪些权限组和权限 ID 可用,请转至 Jenkins 控制台中的列表授权页,并在它们提供的表中查找组 ID 和个别权限。
- 键值对的值是权限应当应用到的 OpenShift Container Platform 角色的列表,各个角色之间用逗号隔开。
-
如果要将
Overall Jenkins Administer
权限添加到默认的admin
和edit
角色以及您创建的新 Jenkins 角色,则Overall-Administer
键的值将为admin,edit,jenkins
。
使用 OpenShift Container Platform OAuth 时,OpenShift Container Platform Jenkins 镜像中预填充了管理特权的 admin
用户不会被授予这些特权。要授予这些权限,OpenShift Container Platform 集群管理员必须在 OpenShift Container Platform 身份提供程序中显式定义该用户,并为该用户分配 admin
角色。
最初建立用户后,可对存储的 Jenkins 用户权限进行更改。OpenShift Container Platform Login 插件轮询 OpenShift Container Platform API 服务器以获取权限,并使用从 OpenShift Container Platform 检索的权限更新存储在 Jenkins 中的每个用户的权限。如果 Jenkins UI 用于为 Jenkins 用户更新权限,则权限更改将在插件下次轮询 OpenShift Container Platform 时被覆盖。
您可通过 OPENSHIFT_permissions_poll_interval
环境变量来控制轮询频率。默认轮询间隔为五分钟。
使用 Oauth 身份验证创建新的 Jenkins 服务的最简单方式是借助模板。
12.2.1.2. Jenkins 身份验证
如果镜像未使用模板直接运行,则默认使用 Jenkins 身份验证。
Jenkins 首次启动时,配置与管理员用户和密码一同创建。默认用户凭证为 admin
和 password
。在使用标准 Jenkins 身份验证时,且仅这种情况下,通过设置 JENKINS_PASSWORD
环境变量来配置默认密码。
流程
创建使用标准 Jenkins 身份验证的 Jenkins 应用程序:
$ oc new-app -e \ JENKINS_PASSWORD=<password> \ openshift4/ose-jenkins