##初探在容器上构建持续部署( 二 )
下面我们通过一个具体的实例来展示如何完成持续部署 。 我们用Jenkins来做为持续部署工具 , 用它部署一个Go程序到k8s环境 。
我们的流程基本是上面讲的狭义流程 , 但由于没有Nexus , 我们稍微变通了一下 , 改由从源码库直接下载源程序 , 步骤如下:
下载源码:从github下载源代码到Jenkins的运行环境
测试:这一步暂时没有实际内容
生成镜像:创建镜像 , 并上传到Docker hub 。
部署镜像:将生成的镜像部署到k8s
在创建Jenkins项目之前 , 先要做些准备工作:
- 建立Docker Hub账户
- 在Jenkins上创建凭证(Credentials)
用管理员账户登录 Jenkins主页面后 , 找到 Manage Jenkins-》Credentials-》System -》Global Credentials -》Add Credentials , 如下图所示输入你的Docker Hub的用户名和口令 。 “ID”是后面你要在脚本里引用的 。
本文插图
- 创建预装Docker和k8s的Jenkins镜像
下面是镜像文件(Dockerfile-modified-jenkins)
FROM jenkins/jenkins:lts
USER root
ENV DOCKERVERSION=19.03.4
RUN curl -fsSLO https://download.docker.com/linux/static/stable/x86_64/docker-${DOCKERVERSION}.tgz
&& tar xzvf docker-${DOCKERVERSION}.tgz --strip 1
-C /usr/local/bin docker/docker
&& rm docker-${DOCKERVERSION}.tgz
RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
&& chmod x ./kubectl
&& mv ./kubectl /usr/local/bin/kubectl
上面的镜像在“jenkins/jenkins:lts”的基础上又安装了Docker和kubectl , 这样就支持这两个软件了 。 镜像里使用的是docker的19.03.4版本 。 这里装的只是“Docker CLI” , 没有Docker引擎 。 用的时候还是要把虚拟机的卷挂载到容器上 , 使用虚机的Docker引擎 。 因此最好保证容器里的Docker版本和虚机的Docker版本一致 。
使用如下命令查看Docker版本:
vagrant@ubuntu-xenial:/$ docker version
详细情况请参见Configure a CI/CD pipeline with Jenkins on Kubernetes:https://developer.ibm.com/tutorials/configure-a-cicd-pipeline-with-jenkins-on-kubernetes/
准备工作已经完成 , 现在要正式创建Jenkins项目:
- Jenkins脚本:
本文插图
如果你不熟悉安装和创建Jenkins项目 , 请参阅在k8s上安装Jenkins及常见问题
下面就是jenkins-k8sdemo脚本文件:
def POD_LABEL = ''k8sdemopod-${UUID.randomUUID.toString}''
- 「预计 3 分钟读完」助力构建基于AI的服务生态体系,第四范式完成2.3亿美元C+轮融资
- 人员防控:合肥:构建五道硬核“监督网” 筑牢境外输入“防疫墙”
- PingWest品玩:Gartner报告:阿里云容器产品布局全球第一
- 【腾讯科技】微软谷歌亚马逊云竞争开启新战线 无需编写代码短时间内构建应用
- Gartner报告:阿里云容器产品布局全球第一
- 『腾讯科技』265亿美元!美国第三、第四大运营商正式合并 努力构建最好的5G网络
- 『中国经济网』构建中国云生态|华云数据携手云新信息推出数据中心设备管理平台DCM联合解决方案
- 「滕州房产超市网」滕州亿和广场2020年3月工程播报,一砖一瓦构建幸福
- 如何借助openEuler 20.03 LTS版本构建企业级服务器操作系统
- [科技女王范儿]后者致力于构建世界范围的三维建模,Niantic宣布收购AR点云技术公司6D.ai