docker运行jenkins挂掉_使用Jenkins在Kubernetes上设置CI/CD管道

DevOps是现代开发的重要组成部分。在Kubernetes上进行CI / CD处理是Kubernetes上的重要任务之一。在本教程中,您将学习如何使用Jenkins在Kubernetes上部署应用程序。以下是在本教程结束时我们将完成的工作的流程。

273854a3807932f469364d335838e596.png

先决条件

  • Kubernetes集群
  • 用于安装Docker和Jenkins的Ubuntu计算机
  • 一个与Kubernetes集群连接的Ubuntu计算机
  • 具备CI / CD和Jenkins的基础知识

安装 Jenkins 和 Docker

要安装Jenkins,您可以预配一台新的Ubuntu计算机,也可以将其安装在访问Kubernetes群集的同一台计算机上。无论如何,以下是在Ubuntu机器上安装Jenkins的命令:

sudo apt update
sudo apt install openjdk-8-jdk
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt update
sudo apt install jenkins

安装Jenkins后,请启动并启用它,以便在服务器重新启动时自动启动。

systemctl start jenkins
systemctl enable jenkins
systemctl status jenkins

Jenkins在端口8080上运行。通过运行以下命令打开该端口:

sudo ufw allow 8080

现在,转到您选择的任何浏览器,然后输入http://<ip-address-of-jenkins-machine>:8080。您应该看到以下内容。

1ea9bcb57b79a5543f28641cd54470c5.png

现在,粘贴通过运行以下命令将获得的密码:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

e0e9f797c4e96fb43a2854864302508f.png

选择“安装建议的插件”。

163b7d9754c3d4d151c9fb6f4de9f2a6.png

您应该在下面的屏幕截图中看到它,可能需要几分钟。

ff47271abf63be76901ae1131cc57253.png

此后,系统将提示您设置管理员用户。填写所需的详细信息,然后单击“保存并完成”。您已经成功安装了Jenkins。

1d33960f5c68a9d0fb14c4607dfcfb37.png

创建一个Jenkins 用户

188ddcf1cdcfdfa49657e75edd30992c.png

安装 Docker

运行以下命令以在您的环境中安装docker。我们需要docker,以便Jenkins可以使用它来构建镜像并将其推送到您的docker注册表。

sudo apt-get update
sudo apt-get install 
    apt-transport-https 
    ca-certificates 
    curl 
    gnupg-agent 
    software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository 
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu 
   $(lsb_release -cs) 
   stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

运行以下命令检查Docker的状态。它应该处于活动和运行状态。

sudo systemctl status docker

在此期间,我们将jenkins添加到docker组,以便它具有与docker服务器交互的适当权限。

sudo usermod -aG docker jenkins

生成个人访问令牌

需要个人访问令牌才能对GitHub进行身份验证。您可以创建个人访问令牌,并在命令行或API上使用Git通过HTTPS执行Git操作时代替密码来使用它。转到设置,然后单击左侧的开发人员设置。

46c2dfd36b4e68f3fff153ca7d56ba11.png

单击个人访问令牌,然后生成新令牌。

c3636687eabd22dda74887aaad5daf52.png

提供令牌描述,并选择admin:repo_hook作为范围,然后单击“生成令牌”。

854c3f0bb7f435d66700a8a0ad6726c7.png

您将获得如下所示的令牌。将其复制到安全的地方,因为您将无法再次看到它。

c24790afead0005af492de3be72fe87f.png

For Github 仓库

转到此存储库:https://github.com/SamPriyadarshi/cicd-pipeline-train-schedule-autodeploy并将此存储库派生到您自己的github帐户。该存储库包含示例应用程序和设置管道所需的文件。该存储库包含一个使用Node.js制作的非常简单的火车时刻表应用程序。

让我们简要看一下应用清单文件。如果您要转到此URL,则会找到yaml文件。它包括:

  • 在端口8080上公开的LoadBalancer类型的服务。
  • 具有两个副本的部署,该副本指定了一个在端口8080上公开并请求200m vCPU的容器。

了解有关请求和限制的更多信息。 让我们看一下Jenkins文件,其中包含CI / CD管道应如何工作的详细信息。转到此URL查看Jenkinsfile。我们在Jenkinsfile中定义了总共4个阶段:

  • 构建阶段:在这个阶段中,我们只是做一堆简单的测试。
  • 构建Docker镜像:在此阶段,我们正在构建应用程序的Docker镜像。
  • 推送Docker镜像:在此阶段,我们将在上一阶段构建的Docker镜像推送到Docker Hub注册表。您将需要您的Docker Hub凭据才能执行此操作,我们将在下一部分中对其进行配置。
  • 部署到Kubernetes集群:在此阶段,我们将应用程序部署在Kubernetes集群中。您将需要kubeconfig文件来部署应用程序。我们将在下一部分中对其进行配置。
注意:请确保将DOCKER_IMAGE_NAME从sampriyadarshi / train-schedule更改为<YOUR-DOCKER-USERNAME> / train-schedule。否则,您的构建将失败。

d79b3413d2530924e4bf0a79b6b9e506.png

配置 Jenkins Pipeline

现在让我们继续配置Jenkins,以便我们可以设置CI / CD管道。
首先,通过单击右侧的Manage Jenkins,然后单击Manage Plugins安装Kubernetes插件。

22be0540a7751a6c399dc8e3805f53a2.png

转到顶部的“可用”标签。在搜索框中输入kubernetes,您应该会看到Kubernetes Continuous Deploy的插件。单击复选框,然后单击不重新启动即可安装。等待它安装。

ba136b2674721fd2dac982dcd53675fe.png

安装完插件后,我们现在添加一些凭据以对Docker Hub,Github和Kubernetes API Server进行身份验证。

Docker Hub:单击左侧的Credentials,然后单击Jenkins,然后单击Global Credentials(不受限制),最后单击Add Credentails。提供您的Docker Hub登录凭证,如下图所示。

8c4f4d53f6433fc48c9db2da8dee78cf.png

a560570d8b8eed37fde9d81801340aef.png

Github用户名和密码:再次单击Add Credentails并提供您的Github凭据,如以下屏幕截图所示:

eddd2f1b28efd8035f18a06abdc46b6a.png

Kubeconfig:再次单击Add Credentails添加您的kubeconfig详细信息。转到用于连接到Kubernetes集群的服务器,然后运行以下命令以获取负责向Kubernetes API服务器进行身份验证的kubeconfig内容。复制内容并将其粘贴到内容部分,如下面的屏幕快照所示。

cat ~/.kube/config

2d66a71b76963978a77e42239f129ad3.png

现在让Jenkins访问我们的Github,以便它可以管理钩子。我们将使用之前生成的个人访问令牌。
单击管理Jenkins,然后单击配置系统。

7d0a6e1c1624cef1737a1adb53326199.png

向下滚动到Github部分,然后单击Add Github Server,然后从下拉列表中选择Github Server。

ad4d264a697b40ee8a57d4744434e0e2.png

单击添加,然后从下拉列表中选择Jenkins。

8cd9205eed0d2f5279b58b0fd7e16f85.png

在“种类”中,从下拉列表中选择“秘密”文本,然后将您在上方的“个人访问令牌”粘贴到“秘密”部分。在ID中输入您的github用户名。请参阅下面的屏幕截图。

b1220c152e269fbeff6be04a9eb11b1f.png

在凭据中,选择您刚刚配置的凭据。并确保选中“管理挂钩”部分。

74a14bf6f53d6329a3681d0062d3457b.png

现在向下滚动到Global Pipeline Libraries,并进行以下配置,如屏幕快照所示。选择名称为jenkins-shared-library。检索方法与现代单片机。源代码管理为Github。选择Github API密钥作为凭据,并在所有者中提供用户名,然后选择包含代码的存储库。

8b9131212796e7c607f1f241f2b74ba1.png

点击保存。您完成了。
现在,我们进入拼图的最后一步。创造新工作。
单击新项目。

ae12797574fe52d8749d74848178be56.png

输入项目名称,然后选择“多分支管道”,然后单击“确定”。

ea2780b73666b6f2d81d79ba6796c3ae.png

单击添加源,然后选择Github,然后将自动出现一个下拉列表,列出您的所有存储库。选择上面您分叉的那个。

5f466cc890e54c7d160bbd02fe74fd58.png

之后,单击“保存”,您应该在Jenkins仪表板中看到一个项目。

7a0641950d08bd9112c069e88472b3b1.png

单击该作业,然后选择主分支。您应该看到正在进行的构建,如下所示。

0a08a66b45fa40addfbebb53fe06301f.png

并且在一段时间内它将成功。而且,如果单击“控制台输出”,则应该看到所有日志。

80e4ff73dff5d1fda56f2ba18b3dce38.png

如果向下滚动到末尾,则将显示成功状态。

872224a4820d4563bcf18517e7d18d3e.png

通过运行以下命令,列出集群中所有正在运行的Pod和服务:

kubectl get pods
kubectl get svc

您应该看到2个Pod正在运行,并且Service类型为LoadBalancer。

3a21ff367f6e08fccf32d63ccaf3ae08.png

如果您在端口8080上单击LoadBalancer,例如:-<LoadBalancerIPorDNS>:8080。您应该看到您的应用程序已启动并正在运行。

4cd5430374e7d09c3ba7e1a816a802be.png

如果要再次测试,只需更改app.js中的内容,Jenkins便会自动构建,并通过此新更改启动并运行您的应用程序。
恭喜你!您已经了解了如何使用Kubernetes和Jenkins配置CI / CD管道。

PS: 本文属于翻译,原文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值