美文网首页Amazing ArchAmazing .NETKubernetes
持续集成之应用k8s自动部署

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

作者: 天天向上卡索 | 来源:发表于2019-04-08 15:00 被阅读6次

持续集成之应用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: SSH@0
      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的信息确认是否已经成功更新镜像

deployment-pod

Memo

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

相关文章

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

    持续集成之应用k8s自动部署 Intro 上次我们提到了docker容器化及自动化部署,这仅仅适合个人项目或者开发...

  • 详细介绍如何使用Jenkins自动构建化构建SpringBoot

    Jenkins是一个开源的持续集成工具,应用Jenkins搭建持续集成环境,可以进行自动构建、自动编译和部署,非常...

  • docker的典型场景

    自动化的应用程序的封装和部署创建轻量级,私有PaaS环境自动化测试和持续集成/部署部署和缩放网络应用程序,数据库和...

  • 自动化集成部署

    代码持续集成+应用自动化部署 github+jenkins+tomcat, ubuntu 18.04 1. 安装J...

  • Docker 基础

    Docker的应用场景 Web 应用的自动化打包和发布。 自动化测试和持续集成、发布。 在服务型环境中部署和调整数...

  • Docker 简介和安装

    Docker的应用场景 Web 应用的自动化打包和发布。 自动化测试和持续集成、发布。 在服务型环境中部署和调整数...

  • ubuntu下安装docker版jenkins

    前言:自动用了微服务,持续化集成开发/测试/部署就提上日程了,不然部署应用真的是挺伤神的。今天就介绍一下自动构建神...

  • 使用 Visual Studio Team Services 和

    若要将应用程序开发的生成、测试和部署阶段自动化,可以使用持续集成和部署 (CI/CD) 管道。 本教程介绍如何在 ...

  • windows7 安装docker并部署springboot项目

    Docker的应用场景 Web 应用的自动化打包和发布。自动化测试和持续集成、发布。在服务型环境中部署和调整数据库...

  • iOS架构篇-5 CI/CD(持续集成、持续交付、持续部署

    iOS架构篇-5 CI/CD(持续集成、持续交付、持续部署) CI CI是指持续集成,代码的更新会定期自动构建、测...

网友评论

    本文标题:持续集成之应用k8s自动部署

    本文链接:https://www.haomeiwen.com/subject/qjpuiqtx.html