Jenkins 系统设置

Jenkins 强大而灵活,已经成为 CI/CD 工作流的事实标准。但是,许多插件要求用户先设置系统级配置,然后才能使用。

KubeSphere DevOps 系统提供基于 Jenkins 的容器化 CI/CD 功能。为了向用户提供可调度的 Jenkins 环境,KubeSphere 使用 Configuration-as-Code 进行 Jenkins 系统设置,这要求用户登录 Jenkins 仪表板并在修改配置后重新加载。Jenkins 系统设置在 KubeSphere 当前版本的控制台上不可用,即将发布的版本将支持该设置。

本教程演示如何在 Jenkins 仪表板上设置 Jenkins 并重新加载配置。

准备工作

您已启用 KubeSphere DevOps 系统

修改 ConfigMap

建议您通过 Configuration-as-Code (CasC) 在 KubeSphere 中配置 Jenkins。内置 Jenkins CasC 文件存储为 ConfigMap

  1. admin 身份登录 KubeSphere,点击左上角的平台管理,然后选择集群管理

    集群管理

  2. 如果您已经启用多集群功能并已导入 Member 集群,您可以选择一个特定集群来编辑 ConfigMap。如果您尚未启用多集群功能,请直接参考下一步。

  3. 在左侧导航栏中选择配置中心下的配置。在配置页面上,从下拉列表中选择 kubesphere-devops-system,然后点击 jenkins-casc-config

    编辑 ConfigMap

  4. 在详情页面上,点击更多操作,在下拉列表中选择编辑配置文件

    more-list

  5. jenkins-casc-config 的配置模板是一个 YAML 文件,如下图所示。您可以在 ConfigMap 的代理 (Kubernetes Jenkins Agent) 中修改容器镜像、标签等内容,或者在 podTemplate 中添加容器。完成操作后,点击更新

    编辑 Jenkins

登录 Jenkins 重新加载配置

修改 jenkins-casc-config 后,您需要在 Jenkins 仪表板的 Configuration as Code 页面上重新加载更新后的系统配置。这是因为直接通过 Jenkins 仪表板配置的系统设置可能在 Jenkins 重新调度之后被 CasC 配置覆盖。

  1. 执行以下命令获取 Jenkins 的地址。

    1. export NODE_PORT=$(kubectl get --namespace kubesphere-devops-system -o jsonpath="{.spec.ports[0].nodePort}" services ks-jenkins)
    2. export NODE_IP=$(kubectl get nodes --namespace kubesphere-devops-system -o jsonpath="{.items[0].status.addresses[0].address}")
    3. echo http://$NODE_IP:$NODE_PORT
  2. 您可以看到如下所示的预期输出,获取 Jenkins 的 IP 地址和端口号。

    1. http://10.77.1.201:30180
  3. 使用地址 http://Node IP:Port Number 访问 Jenkins。安装 KubeSphere 时,默认情况下也会安装 Jenkins 仪表板。Jenkins 还配置有 KubeSphere LDAP,这意味着您可以直接使用 KubeSphere 帐户(例如 admin/P@88w0rd)登录 Jenkins。

    Jenkins 仪表板

    备注

    取决于您的实例的部署位置,您可能需要设置必要的端口转发规则并在您的安全组中放行端口 30180,以便访问 Jenkins。

  4. 登录仪表板后,点击导航栏中的 Manage Jenkins

    manage-jenkins

  5. 向下翻页并点击 Configuration as Code.

    configuration-as-code

  6. 要重新加载 ConfigMap 中已修改的配置,请点击 Apply new configuration

    应用配置

  7. 有关如何通过 CasC 设置 Jenkins 的更多信息,请参见 Jenkins 文档

    备注

    在当前版本中,并非所有插件都支持 CasC 设置。CasC 仅会覆盖通过 CasC 设置的插件配置。