持续集成之应用k8s自动部署

原文:持续集成之应用k8s自动部署

持续集成之应用k8s自动部署

Intro

上次我们提到了docker容器化及自动化部署,这仅仅适合个人项目或者开发环境部署,如果要部署到生产环境,必然就需要考虑很多因素,比如访问量大了如何调整部署,如何更好的应对大并发的情况,如何不停机更新应用,如果想要将Docker应用于具体的业务实现,是存在困难的——编排、管理和调度等各个方面,都不容易。于是,人们迫切需要一套管理系统,对Docker及容器进行更高级更灵活的管理,于是 k8s 就出现了。

K8S,就是基于容器的集群管理平台,它的全称,是kubernetes。

k8s 十分强大,可以帮助我们很方便的实现应用的伸缩,也可以很轻易的实现不停机更新,更好更方便的实现服务高可用,还有很多很实用的功能,例如服务发现/负载均衡/配置中心等,更多 k8s 的介绍请参考https://www.kubernetes.org.cn/docs

k8s 自动部署介绍

这里只是我自己的一些实践,不一定是最合适的,仅供参考。

自动部署流程:

  1. 自己在 k8s 集群上手动创建 deployment 和 service
  2. CI 自动构建新的 docker 镜像
  3. CI 推送新的 docker 镜像到 docker hub 或者自己的 docker registry
  4. 更新 k8s 应用对应的 deployment 的镜像

示例应用

这里有一个 示例应用

  1. 在部署了 k8s 集群环境的服务器上部署应用

    wget https://raw.githubusercontent.com/WeihanLi/AccountingApp/dev/accountingapp-k8s-deployment.yaml
    kubectl apply -f accountingapp-k8s-deployment.yaml
  2. 配置CI,这里以 Azure Pipeline 为例

    Azure pipeline 示例配置:

    pool:
      vmImage: 'Ubuntu 16.04'
    
    variables:
      tagName: '$(Build.BuildNumber)'
      imageName: '$(dockerId)/accountingapp:$(tagName)'
    
    steps:
    
    - script: docker build -f Dockerfile -t $(imageName) .
      displayName: 'Docker build Script'
    
    - script: |
        docker login -u $(dockerId) -p $(pswd)
        docker push $(imageName)
      displayName: 'Push docker image'
    
    - task: [email protected]
      displayName: 'Run shell inline on remote machine'
      inputs:
        sshEndpoint: 'weihanli-vm'
        runOptions: inline
    
        inline: |
          kubectl set image deployment/accountingapp-deployment accountingapp=$(imageName)
  3. 提交代码触发CI
    docker build -f Dockerfile -t weihanli/accountingapp:20190407.3 .
    # 此处省略N行代码...
    deployment.extensions/accountingapp-deployment image updated
  4. 查看效果

    访问 示例应用,刷新几次可以看到类似效果。

查看 pod 信息,执行 kubectl get pod 获取 pod 信息,再使用 kubectl describe pod <podName> 获取pod的信息确认是否已经成功更新镜像

Memo

希望对你有帮助,作者水平有限,如有疏漏或者错误,还望指出。

原文地址:https://www.cnblogs.com/lonelyxmas/p/10850723.html

时间: 2024-09-30 14:31:14

持续集成之应用k8s自动部署的相关文章

Jenkins持续集成案例之-运维部署方式

大家在运维过程中,网站部署是运维的工作之一,中小型公司传统网站部署的流程大致分为如下方法: 需求分析-原型设计-开发代码-提交测试-内网部署-确认上线-备份数据-外网更新-最终测试,如果发现外网部署的代码有异常,需要及时回滚.(如下图所示) 案例演示:部署LAMP网站,同时更新网页内容,检查效果! 更新完后的网站内容: 目前主流网站部署方法,通过Hudson/Jenkins工具平台实现全自动部署+测试,是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集

gitlab+jenkins+maven+docker持续集成(三)——自动构建

具体原理图,如下,构建项目配置,这里略过,我们直接配置gitlab的自动构建 通过webhook可以实现自动构建,当然jenkins的强大之处在于插件,我们先安装插件 Jenkins-->插件管理 Gitlab Hook Plugin GitLab Plugin 安装后,就可以开始 了 在项目--配置--构建触发器 选择, Build when a change is pushed to GitLab 这样我们就得到了URL和一串Secret token 然后在gitlab配置webhook ,

持续集成 Jenkins +Gitlab + SSH 自动发布 HTML 代码

一.整体流程 二.Jenkins 配置 2.1.首先安装插件 Gitlab Hook Plugin GitLab Plugin Publish Over SSH 2.2.配置目标服务器 系统管理 ---> 系统设置 ---> Publish over SSH 如果不想使用密钥认证登陆,也可以使用 账户密码登陆. 2.3.创建 job 我们创建一个自由风格的 job,配置好 git 源,这里也可以配置无密钥登陆,我这里使用账户密码. 创建触发器,用于自动构建,我们需要把其中的 url 添加到我们

Tomcat+Jenkins持续集成工具的安装与部署

1.Tomcat下载地址:http://tomcat.apache.org/download-70.cgi#7.0.91 将下载好的Tomcat压缩包解压至你要存放的路径下即可: 在Tomcat文件夹下,双击运行startup.bat文件 这样就可以启动Tomcat应用服务器了 此时在浏览器中输入:localhost:8080,进入该8080端口页面,如果能成功加载该页面,则证明Tomcat安装有效. 2.接下来安装Jenkins Jenkins下载地址:https://jenkins.io 解

Jenkins从零开始搭建持续集成+自动化部署详细说明

说明:该说明文档的案例是:在windows上部署Jenkins服务,最终将持续集成的war包自动部署到远程服务器(Centos 7)上. 一.Jenkins安装 1. Jenkins下载地址:https://jenkins.io/download/,如图,我现在的是windows版本的: 2. 下载之后,解压点击msi文件运行,如图: 3. 我已经安装过一次了,这儿就不详细描述,安装教程请参考百度经验:https://jingyan.baidu.com/article/cbcede077f62b

使用Hudson进行持续集成

http://www.cnblogs.com/AlanLee/p/5372283.html 说到Hudson就不得不提一下jenkins,目前来说用jenkins的应该要比Hudson多吧,毕竟jenkins的更新频率还是要比Hudson快,两者其实是五十步笑百步,会玩Hudson,jenkins也难不到哪去,所以jenkins暂时就不多介绍了. 在介绍Hudson之前给大家推荐一本书,这本书是来自许晓斌老师的<Maven实战>,本篇文章会借鉴该书的内容,小Alan也把这本书看完了,这是一本非

接口自动化平台搭建(四),自动化项目Jenkins持续集成

一.Jenkins的优点 1.传统网站部署流程 ??一般网站部署的流程 这边是完整流程而不是简化的流程 需求分析-原型设计-开发代码-内网部署-提交测试-确认上线-备份数据-外网更新-最终测试 ,如果发现外网部署的代码有异常,需要及时回滚. 一般是运维来做 1.功能测试 2.上线的时间 3. jenkins 4.运维 5.功能测试 2.Jenkins部署流程 ??我们可以通过jenkins工具平台实现全自动部署+测试,是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台

Jenkins+Gitlab配置Webhook实现提交自动部署

一.概述 在上一篇文章,链接如下: https://www.cnblogs.com/xiao987334176/p/11434849.html 已经实现了 Jenkins+harbor+gitlab+k8s 自动部署功能,但是最终发布的时候,是手动的. 现在需要实现每次GitLab上有提交事件的时候,都能触发Jenkins执行相应的操作,比如:构建并自动部署. 二.Jenkins配置 安装Gitlab Hook插件 登录后台,点击 Manage Jenkins --> Manage Plugin

ARTS-S gitlab与jenkins实现持续集成

jenkins配制 系统管理->管理插件->可选插件->选择安装 Gitlab Hook Plugin和Build Authorization Token Root Plugin插件. jenkins主界面->新建任务->输入一个任务名称(如myproject)->构建一个自由风格的软件项目. 进入myproject,点"配制". 在"源代码管理"选项中填上项目源代码在gitlab上的地址.如http://www.abc.com/