文档中心 Tencent Hub 最佳实践 容器服务 CICD 工作流

容器服务 CICD 工作流

最近更新时间:2019-09-11 11:48:19

实践-容器服务CI/CD工作流

本文主要叙述如何通过 Tencent Hub 实现容器服务 CI/CD 工作流,以部署开源 PHP 游戏网页游戏 2Moons 为例。

前期资源

说明:

例子中为了方便测试,数据库也部署在 TKE 里面,生产环境一般会使用 TencentDB 实例。

准备工作

  1. fork 游戏源码到自己的 github 方便后续修改和提交。这里 fork 到https://github.com/Kevin-Qiu/2Moons并新建tencent_cloud分支。
  2. 准备好 Dockerfile,可以参考https://github.com/Kevin-Qiu/2Moons/blob/tencent_cloud/docker-compose.yml

    https://github.com/Kevin-Qiu/2Moons/blob/tencent_cloud/Dockerfile
  3. 准备好 TKE 集群,对于这个例子来说,集群里面建议最好有4核 8G 的空闲资源,集群开启外网访问并记下账号/密码/证书/地址。

  4. 预先在 TKE 里面部署好 2Moon 需要的数据库,服务名 mariadb,1C2G,环境变量可以参考 https://github.com/Kevin-Qiu/2Moons/blob/tencent_cloud/docker-compose.yml,端口 3306,只允许集群内访问。




持续集成 CI

  1. 先在 Tencent Hub 里面绑定 github。
  2. 在 Tencent Hub 里面建立一个组织和仓库 demo/game,并记录下仓库地址/镜像地址。


  3. 准备好需要部署到 TKE 的 yaml 文件。
    https://github.com/Kevin-Qiu/2Moons/blob/tencent_cloud/deploy.yaml

  4. 在仓库下面建立工作流,填入工作流名称,选择 github 项目,绑定自动和手动触发分支。






    5.推送代码到https://github.com/Kevin-Qiu/2MoonsTencent_Cloud分支测试一下前面的 CI 结果,单击查看执行历史可以查看执行明细。



    或者可以手动单击立即执行进行手动构建。


持续部署 CD

  1. 单击查看与编辑继续完成 CD 部分,创建一个 CD 的 stage。
  2. 修改 Job 名为 deploy,选择工作流组件为 kubectl_cmd 组件。
  3. 把前面准备好的集群信息填入环境变量。
  4. 把前面准备好的 deploy 模板填入输入参数(这里支持多行文本)。
  5. 从前面的 Job 里面选择输出注入到输入参数 IMAGE_DIGEST 中。



  6. 最后构建 CD 的执行命令,参考命令如下:
    echo "$DEPLOY_TEMPLATE" | sed 's?$IMAGE_DIGEST?'"$IMAGE_DIGEST"'?g' >> /tmp/deploy.yaml
    cat /tmp/deploy.yaml
    kubectl apply -f /tmp/deploy.yaml

    填写完毕后保存。
  7. 推送代码到 https://github.com/Kevin-Qiu/2MoonsTencent_Cloud 分支测试一下前面的 CICD 结果,单击查看执行历史可以查看执行明细。




    可以在执行参数这里查看参数传递是否有误。

    执行结果为成功。
    8.切换到 TKE 查看一下部署情况。



    Deploy 已经顺利执行。
    配置一下 game.tdemo.net 域名指向为 ingress 的外网 IP。




    游戏到这里就部署好了。