Kubernetes

Kubernetes (K8s)是一个用于自动化部署、扩展和管理集装箱应用程序的开源系统。

Kubernetes集群向Jenkins添加了一个新的自动化层。必威国际有限公司Kubernetes确保资源得到有效利用,服务器和底层基础设施不会过载。Kubernetes编排容器部署的能力确保了Jenkins总是有适当数量的可用资源。必威国际有限公司本节将介绍在Kubernetes上安装/运行Jenkins的不同选项。必威国际有限公司

注意:Minikube的文档化方法是只适合开发和测试目的的快速入门指南。它不应该用于生产实例。配置生产实例Kubernetes指南

先决条件

码头工人

指的是Docker引擎安装说明为您的平台。

Kubernetes

如果您没有正在运行的Kubernetes集群,请参阅创建minikube集群部分。

创建minikube集群

Minikube是一个在计算机上创建单节点Kubernetes集群的工具。如果你没有运行中的Kubernetes集群,请遵循以下步骤:

  1. 安装minikube的步骤安装minikube网站。

  2. 安装kubectl。参见的说明安装和设置kubectl页面。

  3. 现在,您可以通过输入以下命令创建一个minikube集群:

    美元minikube开始
  4. 一旦创建了集群,您可以输入以下命令来验证其状态:

    minikube美元地位

创建一个命名空间

不同的名称空间提供了额外的隔离层和对持续集成环境的更多控制。在终端上输入以下命令,为Jenkins部署创建一个名称必威国际有限公司空间:

创建命名空间Jenkins必威国际有限公司

使用以下命令列出现有的名称空间:

$ kubectl获取名称空间

输出确认jenkins名称空间已成功创建。必威国际有限公司

$ kubectl获取命名空间NAME STATUS AGE default Active 50m jenkins Ac必威国际有限公司tive 30s kube-node-lease Active 50m kube-public Active 50m kube-system Active 50m

用Helm v3必威国际有限公司安装Jenkins

典型的Jenkins必威国际有限公司部署包括一个控制节点和一个或多个代理(可选)。为了简化Jenkins的部署,我们将使用必威国际有限公司部署詹金斯。必威国际有限公司Helm是Kubernetes的包管理器,它的包格式称为图表。上面有许多社区开发的图表GitHub

Helm Charts提供了应用的“按钮”部署和删除功能,让那些没有容器或微服务经验的人更容易采用和开发Kubernetes应用。

先决条件

赫尔姆命令行接口

如果您没有本地安装和配置Helm命令行接口,请参阅下面的章节安装舵而且配置舵

安装舵

要安装Helm CLI,请遵循安装舵页面。

配置舵

一旦头盔安装和设置正确,添加Jenkins回购如下:必威国际有限公司

添加jenkinsci http必威国际有限公司s://charts.jenkins.io $ helm repo更新

Jenkins回购中的舵图可以与命令一起列出:必威国际有限公司

$ helm search repo 必威国际有限公司jenkinsci

创建持久卷

我们想要创建一个持久的卷我们的詹金斯控制必威国际有限公司舱这将防止我们在重新启动迷你库时丢失詹金斯控制器的整个配置和我们的工作。必威国际有限公司这官方minikube医生解释可以使用哪些目录挂载或数据。在多节点Kubernetes集群中,您需要一些解决方案,比如NFS,以使挂载目录在整个集群中可用。但因为我们使用的是minikube,它是一个单节点集群,所以我们不需要为此费心。

我们选择使用/数据目录中。这个目录将包含Jenkins控制器配置。必威国际有限公司

我们将创建一个名为jenkins-pv的卷:必威国际有限公司

  1. 的内容粘贴https://raw.githubusercontent.com/installing-必威国际有限公司jenkins-on-kubernetes/jenkins-volume.yaml转换为YAML格式的文件称为必威国际有限公司jenkins-volume.yaml

  2. 运行以下命令应用规范:

    $ kubectl apply -f 必威国际有限公司jenkins-volume.yaml
值得注意的是,在上述规范中,hostPath使用节点的/data/jenkins-volume/来模拟与网络相连的存储。必威国际有限公司这种方法只适用于开发和测试目的。对于生产环境,您应该提供一个网络资源,比如谷歌计算引擎持久磁盘或Amazon弹性块存储卷。

为hostPath配置的Minikube只将/data的权限设置为root帐户。一旦创建了卷,您将需要手动更改权限,以允许jenkins帐户写入其数据。必威国际有限公司

minikube ssh sudo chown -R 1000:1000 /data/必威国际有限公司jenkins-volume

创建服务帐户

在Kubernetes中,服务帐户用于为pods提供身份。希望与API服务器交互的Pods将使用特定的服务帐户进行身份验证。默认情况下,应用程序将作为默认的运行它们的命名空间中的服务帐户。这意味着,例如,运行在测验命名空间将使用默认的业务帐户测验名称空间。

我们将创建一个名为jenkins的服务帐户:必威国际有限公司

ClusterRole是一组可以分配给给定集群中的资源的权限。Kubernetes API根据与之相关的API对象被划分为API组。在创建ClusterRole时,您可以指定ClusterRole可以对一个或多个API组中的一个或多个API对象执行的操作,就像我们上面所做的那样。clusterrole有多种用途。你可以使用ClusterRole来:

  • 在名称空间资源上定义权限,并在单个名称空间内授予权限

  • 定义名称空间资源上的权限,并跨所有名称空间授予权限

  • 定义集群范围内资源的权限

如果您想在集群范围内定义一个角色,请使用ClusterRole;如果要在名称空间中定义角色,请使用role。

角色绑定将角色中定义的权限授予一个用户或一组用户。它包含主题(用户、组或服务帐户)的列表,以及对被授予的角色的引用。

RoleBinding可以引用同一个命名空间中的任何Role。或者,RoleBinding可以引用ClusterRole并将该ClusterRole绑定到RoleBinding的命名空间。要将一个ClusterRole绑定到集群中的所有名称空间,我们使用ClusterRoleBinding。

  1. 的内容粘贴https://raw.githubusercontent.com/installing-必威国际有限公司jenkins-on-kubernetes/jenkins-sa.yaml转换为YAML格式的文件称为必威国际有限公司jenkins-sa.yaml

  2. 运行以下命令应用规范:

    $ kubectl apply -f 必威国际有限公司jenkins-sa.yaml

安装詹金斯必威国际有限公司

我们将部署Jenkins,包括必威国际有限公司Jenkins Kubernetes插件。看到官方图为更多的细节。

  1. 为了启用持久性,我们将创建一个覆盖文件,并将其作为参数传递给Helm CLI。的内容粘贴raw.githubusercontent.com/必威国际有限公司jenkinsci/helm-charts/main/charts/jenkins/values.yaml转换为YAML格式的文件称为必威国际有限公司jenkins-values.yaml

    必威国际有限公司jenkins-values.yaml用作模板,以提供设置所需的值。

  2. 打开必威国际有限公司jenkins-values.yaml在你最喜欢的文本编辑器中存档并修改以下内容:

    • nodePort:因为我们正在使用minikube,所以我们需要使用nodePort作为服务类型。只有云提供商提供负载平衡器。我们将端口32000定义为端口。

    • storageClass:

      storageClass必威国际有限公司jenkins-pv
    • serviceAccount: jenkins-values的serviceAccount部分。必威国际有限公司Yaml文件应该如下所示:

      serviceAccount创建#服务帐号名默认自动生成的名字必威国际有限公司注释{}
      其中“name: jenk必威国际有限公司ins”指的是为jenkins创建的serviceAccount。
    • 我们还可以定义我们想要在Jenkins上安装哪些插件。必威国际有限公司我们使用一些默认的插件,比如git和pipeline插件。

  3. 现在可以通过运行必威国际有限公司舵安装命令并将以下参数传递给它:

    • 发行版的名称必威国际有限公司

    • 带有覆盖的YAML文件的-f标志必威国际有限公司jenkins-values.yaml

    • 图表的名称必威国际有限公司jenkinsci /詹金斯

    • - n用命名空间的名称标记必威国际有限公司

      $ chart=必威国际有限公司jenkinsci/jenkins $ helm install jenkins -n jenkins -f jenkins-values。yaml美元图表
      这将输出类似于以下内容:
      NAME: 必威国际有限公司jenkins LAST部署:Wed 9月16日11:13:10 2020 NAMESPACE: jenkins STATUS: DEPLOYED REVISION: 1
  1. 通过运行以下命令获取“admin”用户密码:

    美元jsonpath = " {. data。必威国际有限公司Jenkins -admin-password}" $secret =$(kubectl get secret -n Jenkins Jenkins -o jsonpath=$jsonpath) $ echo $(echo $secret | base64——decode)
  2. 通过在同一个sh必威国际有限公司ell中运行以下命令来访问Jenkins URL:

    美元jsonpath = " {.spec.ports[0]。$ NODE_PORT=$(kubectl get -n jenkins -o 必威国际有限公司jsonpath=$jsonpath services jenkins) $jsonpath ="{.items[0].status.addresses[0]. jenkins . "$NODE_IP =$(kubectl get nodes -n jenkins -o必威国际有限公司 jsonpath=$jsonpath) $ echo http://$NODE_IP:$NODE_PORT/login
  3. 使用步骤1中的密码和用户名:admin登录

  4. 通过在你必威国际有限公司的值中指定configScripts来使用Jenkins配置代码。yaml文件。看到配置为代码文档而且例子

参观必威国际有限公司Jenkins在Kubernetes解决方案页面查看在Kubernetes上运行Jenkins的更多信息。必威国际有限公司参观必威国际有限公司Jenkins配置为代码项目有关配置为代码的更多信息。。根据您的环境,Jenkins启动可能需要一些时间。必威国际有限公司输入以下命令检查Pod的状态:

kubectl得到豆荚-n Jenkins必威国际有限公司

Jenki必威国际有限公司ns安装完成后,状态应该设置为Running,如下所示:

$ kubectl get pods -n 必威国际有限公司jenkins NAME READY STATUS重启AGE jenkins-645fbf58d6-6xfvj 1/1运行0 2m
  1. 要访问詹金斯服务器,你必须找回必威国际有限公司密码。您可以使用以下两个选项中的任意一个来检索您的密码。

    选项1

    运行如下命令:

    美元jsonpath = " {. data。必威国际有限公司Jenkins -admin-password}" $secret =$(kubectl get secret -n Jenkins Jenkins -o jsonpath=$jsonpath) $ echo $(echo $secret | base64——decode)

    输出应该如下所示:

    Um1kJLOWQY

    注意,您的密码将有所不同。

    选项2

    运行如下命令:

    美元jsonpath = " {. data。必威国际有限公司$ kubectl get secret -n Jenkins Jenkins -o jsonpath=$jsonpath

    输出应该是abase64编码的字符串是这样的:

    WkIwRkdnbDZYZg = =

    解码base64字符串,就得到了密码。您可以使用这个网站解码你的输出。

  2. 使用以下命令获取正在运行Jenkins的Pod的名称:必威国际有限公司

    kubectl得到豆荚-n Jenkins必威国际有限公司
  3. 使用kubectl命令设置端口转发:

    $ kubectl -n 必威国际有限公司jenkins port-forward  8080:8080 Forwarding from 127.0.0.1:8080 -> 8080 Forwarding from [::1]:8080 -> 8080

访问127.0.0.1:8080 /并使用管理与前面检索到的用户名和密码相同。

用YAML文件安必威国际有限公司装Jenkins

本节描述如何使用一组YAML (Yet Another Markup Language)文件在Kubernetes集群上安装Jenkins。必威国际有限公司YAML文件很容易被跟踪、编辑,并且可以无限重用。

创建Jenki必威国际有限公司ns部署文件

复制内容在这里到您喜欢的文本编辑器中,并创建jenkins部署。必威国际有限公司我们在这里创建的“jenkins”命必威国际有限公司名空间中的Yaml文件部分以上。

  • 部署文件定义部署是由种类字段。

  • 部署指定一个副本。这确保了在发生故障时复制控制器将维护一个且仅一个实例。

  • 容器映像名称为jenkins,版本为2.32.2必威国际有限公司

  • 规范中指定的端口列表是在Pods IP地址上从容器公开的端口列表。

    • 必威国际有限公司Jenkins在(http)端口8080上运行。

    • 豆荚暴露了詹金斯集装箱的8080端口。必威国际有限公司

  • 文件的volumeMounts部分创建了一个持久卷。这个卷挂载在容器的/var/jenkins_home路径上,因此对/var/jenkins_home中的数据的修改被写入卷必威国际有限公司中。持久卷的作用是存储基本的Jenkins数据,并将其保存到豆荚的生命周期之后。必威国际有限公司

将内容添加到Jenkins部署文件后,退出并保存更改。必威国际有限公司

部署詹金斯必威国际有限公司

要创建部署执行:

$ kubectl create -f 必威国际有限公司jenkins-deployment。yaml - n必威国际有限公司詹金斯

该命令还指示系统在Jenkins命名空间中安装Jenkins。必威国际有限公司

为了验证创建部署是否成功,你可以调用:

$ kubectl get部署-n Jenkins必威国际有限公司

授予Jenkins服务的访问权限必威国际有限公司

我们部署了一个Jen必威国际有限公司kins实例,但它仍然不可访问。Jenk必威国际有限公司ins Pod被分配了一个位于Kubernetes集群内部的IP地址。可以登录到Kubernetes节点并从那里访问Jenkins,但这不是一个非常有用的访问服务的方式。必威国际有限公司

为了使Jenki必威国际有限公司ns能够在Kubernetes集群之外访问,Pod需要作为服务公开。Service是一个抽象,它将Jenkins暴露给更广泛的网络。必威国际有限公司它允许我们保持到pod的持久连接,而不管集群中发生什么变化。对于本地部署,这意味着创建NodePort服务类型。NodePort服务类型公开集群中每个节点的端口上的服务。通过节点IP地址和服务nodePort访问服务。定义了一个简单的服务在这里

  • 服务文件定义的服务是由种类字段。

  • 服务的类型是NodePort。其他选项是ClusterIP(只在集群内访问)和LoadBalancer(由云提供商分配的IP地址,例如AWS Elastic IP)。

  • 规范中指定的端口列表是由该服务公开的端口列表。

    • 端口是服务将公开的端口。

    • 目标端口是访问此服务所针对的Pods的端口。还可以指定端口名称。

  • 选择器为此服务的目标Pods指定选择标准。

要创建服务,执行:

$ kubectl create -f 必威国际有限公司jenkins-service。yaml - n必威国际有限公司詹金斯

要验证服务的创建是否成功,可以运行:

$ kubectl get services -n 必威国际有限公司jenkins NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE jenkins NodePort 10.103.31.217  8080:32664/TCP 59s

访问詹金斯仪表必威国际有限公司板

现在我们已经创建了部署和服务,我们如何访问Jenkins?必威国际有限公司

从上面的输出中,我们可以看到服务已经在端口32664上公开。我们还知道,因为服务的类型是NodeType,所以服务将把发送到该端口上任何节点的请求路由到Jenkins pod。必威国际有限公司剩下要做的就是确定minikube VM的IP地址。Minikube通过包含一个特定的命令来输出正在运行的集群的IP地址,使这一点变得非常简单:

$ minikube IP 192.168.99.100

现在我们可以访问Jenkins实例必威国际有限公司192.168.99.100:30104 /

要访问Jenkins必威国际有限公司,您首先需要输入您的凭证。新安装的默认用户名是admin。密码可以通过多种方式获取。本例使用Jenkins部署舱名称。必威国际有限公司

要查找pod的名称,输入以下命令:

kubectl得到豆荚-n Jenkins必威国际有限公司

一旦你找到了吊舱的名字,用它来查看吊舱的日志。

$ kubectl logs  -n 必威国际有限公司Jenkins

密码在日志的末尾,格式化为一个长长的字母数字字符串:

************************************************************* ************************************************************* ************************************************************* 必威国际有限公司詹金斯初始设置是必需的。已创建admin用户并生成密码。请使用以下密码进行安装:94 b73ef6578c4b4692a157f768b2cfef也可以在这个网站上找到:/var/jenkins_home /机密/ initialAdminPassword  *************************必威国际有限公司************************************ ************************************************************* *************************************************************

您已经成功地在Kubernetes集群上安装了Jenkins,并必威国际有限公司可以使用它创建新的、高效的开发管道。

使用Jenkin必威国际有限公司s操作符安装Jenkins

必威国际有限公司詹金斯运营商是一个Kubernetes本地操作符,它管理Jenkins在Kubernetes上的操作。必威国际有限公司

它在构建时将不可变性和声明性配置作为代码,以自动化在Kubernetes上部署和运行Jenkins所需的许多手动任务。必威国际有限公司

必威国际有限公司Jenkins Operator易于安装,只需应用几个yaml清单或使用Helm。

有关在Kubernetes集群上安装Jenkins Opera必威国际有限公司tor以及在那里部署和配置Jenkins的说明,请参见詹金斯操作员的官方文件必威国际有限公司

安装后的设置向导

在下载、安装并使用上面的一个过程运行Jenkins之后(使用Jenkins Oper必威国际有限公司ator安装除外),安装后设置向导开始。

这个设置向导带您通过几个快速的“一次性”步骤来解锁Jenkins,用插件自定义它,并创建第一个管理员用户,通过该用户您可以继续访问Jenkins。必威国际有限公司

解锁詹金斯必威国际有限公司

当您第一次访问一个新的Jenkins实例时,系统会要求您必威国际有限公司使用自动生成的密码解锁它。

  1. 浏览到http://localhost:8080(或安装时为Jenkins配置的任何端口)并等待必威国际有限公司解锁詹金斯必威国际有限公司页面出现。

    解锁詹金斯页面必威国际有限公司

  2. 从Jenkins控必威国际有限公司制台日志输出中,复制自动生成的字母数字密码(在两组星号之间)。

    复制初始admin密码
    注意:

    • 命令:sudo猫/var/lib/jenk必威国际有限公司ins/secrets/initialAdminPassword将在控制台打印密码。

    • 如果你在Docker中运行Jenkin必威国际有限公司s使用官方必威国际有限公司詹金斯/詹金斯你可以使用的图像sudo docker exec ${CONTAINER_ID or CONTAINER_NAME} cat /var/必威国际有限公司jenkins_home/secrets/initialAdminPassword . sudo docker exec ${CONTAINER_ID or CONTAINER_NAME在控制台中打印密码,而不必在容器中执行。

  3. 解锁詹金斯必威国际有限公司页,将此密码粘贴到管理员密码字段并单击继续
    注:

    • 你总是可以从Docker日志中访问Jenkins控制必威国际有限公司台日志(以上).

    • Jenk必威国际有限公司ins控制台日志指出可以在Jenkins主目录中获得此密码的位置。在访问Jenkins的主UI之前,必须在新的Jenkins安装的安装向导中输入此密码。必威国际有限公司如果您碰巧跳过安装向导中后续的用户创建步骤,此密码还用作默认的管理员帐户密码(用户名为“admin”)。

使用插件定制詹金斯必威国际有限公司

解锁詹金斯必威国际有限公司,定制詹金斯必威国际有限公司页面出现。在这里,您可以安装任何数量的有用插件作为初始设置的一部分。

单击所示两个选项中的一个:

  • 建议安装插件-安装推荐的插件集,这些插件是基于最常见的用例。

  • 选择要安装的插件-选择最初安装的插件组。当您第一次访问插件选择页面时,默认选择了建议的插件。

如果您不确定需要什么插件,请选择建议安装插件.您可以安装(或删除)额外的Jenkins插件在稍后的时间点通过必威国际有限公司管理詹金斯必威国际有限公司>管理插件詹金斯的页面。必威国际有限公司

安装向导显示正在配置的Jenkins的进程和正在安装的选定的Jenkins插件集。必威国际有限公司这个过程可能需要几分钟。

创建第一个管理员用户

最后,经过自定义詹金斯与插件必威国际有限公司, 必威国际有限公司Jenkins要求您创建第一个管理员用户。

  1. 创建第一个Admin用户页出现,在各自的字段中为管理员用户指定详细信息,然后单击保存并完成

  2. 必威国际有限公司詹金斯已经准备好了页面出现时,单击开始使用詹金斯必威国际有限公司
    注:

    • 本页可能说明必威国际有限公司詹金斯快准备好了!如果是,请单击重新启动

    • 如果一分钟后页面没有自动刷新,请使用web浏览器手动刷新页面。

  3. 如果需要,使用刚刚创建的用户的凭证登录到Jen必威国际有限公司kins,就可以开始使用Jenkins了!



这个页面有帮助吗?

请通过此提交您对此页的反馈快速形成

或者,如果您不想填写快速表单,您可以简单地说明您是否认为此页面有帮助?


看到现有的反馈在这里

Baidu