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

Intro

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

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

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

k8s 自动部署介绍

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

自动部署流程:

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

示例应用

这里有一个 示例应用[3]

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

wget https://raw.githubusercontent.com/WeihanLi/AccountingApp/dev/accountingapp-k8s-deployment.yaml
kubectl apply -f accountingapp-k8s-deployment.yaml

配置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: SSH@0  displayName: 'Run shell inline on remote machine' inputs: sshEndpoint: 'weihanli-vm'    runOptions: inline  inline: |   kubectl set image deployment/accountingapp-deployment accountingapp=$(imageName) --record=true‍

提交代码触发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

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

References

[1] docker容器化及自动化部署: https://www.jianshu.com/p/ce10bb128539[2]https://www.kubernetes.org.cn/docs[3] 示例应用: https://github.com/WeihanLi/AccountingApp[4] 示例应用: https://accounting.weihanli.xyz/Account/Login?ReturnUrl=%2F

持续集成之应用k8s自动部署相关推荐

  1. ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(三

    在上文ASP.NET Core应用程序容器化.持续集成与Kubernetes集群部署(二)中,我介绍了如何使用Azure DevOps为ASP.NET Core应用程序案例:tasklist搭建持续集 ...

  2. ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(二)

    在上文中我介绍了ASP.NET Core应用程序容器化时需要注意的几个问题,并给出了一个案例应用程序:tasklist.今天接着上文的内容,继续了解一下如何使用Azure DevOps进行ASP.NE ...

  3. kubernetesV1.13.1一键部署脚本(k8s自动部署脚本)

    kubernetesV1.13.1一键部署脚本(k8s自动部署脚本)  devops的那些事 https://www.jianshu.com/p/c26af5647865 请关注公众号,技术获得k8s ...

  4. Springboot 项目通过 gitlab CI/CD 集成 k8s 自动部署

    本章节主要讲的是 springboot 项目发到 gitlab 仓库,触发 gitlab ci/cd 实现项目自动集成和部署,其中部署是以 k8s 方式部署 关于 gitlab-runner 安装和注 ...

  5. ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(一)

    上个月15日,上海MVP做了一次线下的技术分享活动,我分享的主题是<快速构建容器化的ASP.NET Core应用程序>,有关这次活动的简报,可以参考这里.另外,我的主题分享的PPT也可以点 ...

  6. Centos+Gitlab+Jenkins 针对.NET项目持续集成环境搭建和自动化部署

    目录 一.前言 二.系统环境 三.Gitlab安装 3.1 安装依赖软件 3.2 开启postfix 3.3 安装Gitlab 3.4 设置服务器IP和端口 3.5 重置并启动GitLab 3.6 浏 ...

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

    大家在运维过程中,网站部署是运维的工作之一,中小型公司传统网站部署的流程大致分为如下方法: 需求分析-原型设计-开发代码-提交测试-内网部署-确认上线-备份数据-外网更新-最终测试,如果发现外网部署的 ...

  8. K8S 自动部署工具

    本文永久链接: https://www.xtplayer.cn/kubernetes/automatic-k8s-deployment-tool/ 你或者你的团队是否正在寻找下一代架构?或者你已经拥有 ...

  9. 猪齿鱼k8s自动部署卸载了本地部署的docker

    客户方隔一段时间就来找,一开始以为是有人手动卸了我的服务,公共的服务器上都是root用户登录,也没分组.前两天才部署的服务和镜像都被一起干掉了,生气阿. 所以就查了起来 看下最近的登录人员有哪些用户 ...

最新文章

  1. 设计模式之四:抽象工厂(披萨店生产披萨模拟流程)
  2. Centos 7.2搭建MariaDB数据库服务器应用与管理
  3. c语言结构体老师信息管理系统,C语言课程设计职工信息管理系统结构体数组实现程序源代码.doc...
  4. java 获取当前目录_java获得当前文件路径
  5. maven 可执行 jar_Maven提示:有关可执行jar的所有信息
  6. hibernate envers实践总结
  7. LLVM Bitcode File Format - LLVM 比特流文件格式
  8. usb linux 内核,Linux内核USB驱动架构:USB设备驱动架构.pdf
  9. 个人博客作业-Week2 (代码规范, 代码复审)
  10. html:form、 html:text、html:password、html:submit 标签
  11. 联想云计算机终端,联想云桌面
  12. Day11:股市风险
  13. EXCEL表格F4绝对引用突然失效,无反应
  14. JavaScript的通用库与动画特效
  15. 【转载】Python 数据皮尔逊相关性分析
  16. 每日一课 | 数据分析的本质是什么?
  17. Android开发技术框架和编码规范
  18. 计算机怎么样返回桌面,电脑如何快速返回桌面
  19. Week8学习总结-数据库
  20. dicom文件的处理

热门文章

  1. 《Android开发从零开始》——25.数据存储(4)
  2. 男人别让爱你的女孩流泪
  3. alexa语音实现_如何通过语音删除Alexa录音
  4. Linux 环境下 jdk1.8 maven3.2.3 Git2.8.0 安装脚本
  5. 剑指OFFER的跳台阶问题
  6. PHP截取IE浏览器并缩小原图的方法
  7. 简单链接Simplelink 传感器标签SensorTag
  8. 非常不错 Hadoop 的HDFS (Hadoop集群(第8期)_HDFS初探之旅)
  9. 每扇区2048字节的U盘乱码的数据恢复
  10. Nemuria UML架构图 第3次迭代. 重构