全部产品
阿里云办公

在云效中使用Kubernetes发布应用

更新时间:2018-11-01 14:40:50

环境准备

  • 容器仓库:用户可以使用阿里云容器镜像仓库服务,在镜像仓库服务创建相应的命名空间以及仓库即可。
  • Kubernetes集群:使用阿里云自建或者通过阿里云容器服务创建的Kubernetes集群,需要确保Kubernetes集群能够被云效访问,对于开启了白名单访问限制的用户可以开放网段地址60.205.89.1/24。并将该集群导入到云效中,导入方式请参考 部署到容器服务的Kubernetes集群

创建应用

应用基本信息

在云效中我们使用应用管理一个应用程序以及其相关的所有发布过程,应用需要归属于某一个特定的项目,如下所示:

屏幕快照 2018-10-29 上午10.32.06.png

在本教程中,笔者使用的开发模式是自由模式,在自由模式中用户可以使用任意的分支进行打包,发布等操作。

关于自有模式和分支模式的区别读者可参考:开发模式概述

配置代码库

通过内置的代码托管服务在创建应用的过程中云效可以自动准备应用相关的代码仓库,对于以有代码的项目用户也可以选择管理已有代码仓库:

屏幕快照 2018-10-30 上午9.26.56.png

云效目前支持自有的代码托管服务以及码云,用户可以根据自己的情况选择

使用项目模板

对于新建的代码库可是直接使用云效内置的代码模板生成代码库方式。云效目前内置了Java,Nodejs,PHP,Python以及Go语言等的支持。如下所示:

屏幕快照 2018-10-30 上午9.29.43.png

对于容器化的项目,我们需要勾选Docker构建选项,并且选择发布的目标仓库。 对于使用了阿里云容器镜像仓库服务的用户,可以直接使用RAM授权的方式直接选择阿里云容器镜像仓库中已有的仓库即可。

云效会自动将这一步骤中配置的内容以<应用名>.release文件的方式写入到代码库中,在代码生成之后用户也可以直接修改该文件。

关于build.release文件的详细内容可以参考:Release文件配置键的完整列表

应用部署方式

由于我们选择了”Docker构建“,默认情况下对于容器部署目前支持阿里云容器服务服务和Kubernetes两种模式,这里我们选择Kubernetes部署,如下所示:

屏幕快照 2018-10-30 上午9.37.52.png

完成应用创建

如下所示,云效会自动根据配置导航的内容创建生成代码仓库以及应用:

屏幕快照 2018-10-30 上午9.39.39.png

定义日常/预发/以及生产环境部署

进入应用列表,可以看到新建的应用:

屏幕快照 2018-10-30 上午9.43.58.png

在云效中我们通过应用管理与其相关的所有发布流程(持续交付流水线)以及部署环境等信息:

屏幕快照 2018-10-30 上午9.46.09.png

一般情况下,一个应用通常会包含3个环境:日常,预发,生产。关于环境的更多使用仓库可以参考文档环境与环境级别

屏幕快照 2018-10-30 上午9.47.09.png

这里我们以日常环境为例,点击部署配置,修改该环境的部署内容如下所示:

屏幕快照 2018-10-30 上午9.48.42.png

用户可以选择以导入的Kubernetes集群,并且选择目标命名空间(Namespace)以及服务(Service),云效在部署时会自动更新或者创建于该服务相关的Deployment资源。当前云效支持Kubernetes原生的滚动升级策略,后期后继续开放分批发布的功能。

运行持续交付流水线

在完成日常环境的部署配置后,用户就可以开始使用流水线的方式完成应用的构建,镜像发布以及应用部署的流程。点击发布进入该应用的流水线:

屏幕快照 2018-10-30 上午9.52.57.png

在构建阶段中云效会根据build.release文件定义的内容完成项目的源码编译以及容器镜像构建,点击运行流水线按钮,触发流水线:

屏幕快照 2018-10-30 上午9.54.48.png

完成构建阶段后,默认流水线会自动触发下日常环境部署阶段,日常部署阶段会使用日常环境的部署配置完成Kubernetes应用的发布,如下所示:

屏幕快照 2018-10-30 上午9.56.34.png

点击部署单,查看部署详情:

屏幕快照 2018-10-30 上午9.57.40.png

用户也可以使用kubectl命令行工具查看该应用的部署状态:

屏幕快照 2018-10-30 上午10.06.54.png

到此,我们就已经从0开始创建了一个应用程序,并且通过云效的持续交付能力完成了该应用的端到端发布。