Rancher upgrade webhook之CI/CD

概述

結合你們CI/CD的應用場景,本篇Blog旨在介紹如何經過Rancher的webhook微服務來實現CI/CD的聯動。linux

流程介紹

本次實踐的主要流程以下:nginx

  • CI/CD console從代碼託管、配置中心、第三方依賴平臺拉取應用相應的代碼,配置、依賴、並構建應用鏡像。
  • 將構建好的應用鏡像推送到鏡像倉庫。
  • 經過Rancher Server暴露出來的API/UI/CLI建立並啓動應用棧。
  • 在Rancher Server上建立upgrade類型的webhook。
  • 更新應用、從新構建應用鏡像,同時推送到鏡像倉庫。
  • 觸發Dev環境的webhook,完成Dev環境的服務升級。
  • Dev環境驗證升級是否成功,應用是否正常。
  • 觸發Beta環境的webhook,完成Beta環境的服務升級。
  • Beta環境驗證升級是否成功,應用是否正常。
  • 出發Prod環境的webhook,完成Prod環境的服務升級。
  • Prod環境驗證升級是否成功,應用是否正常。

圖片描述

webhook介紹

Rancher webhook的服務流程大體以下:web

  • router根據用戶提交過來的method和url初始化對應的handler。
  • handler解析請求參數裏面的key和projectid初始化對應的webhook driver。
  • driver調用升級接口,返回並相應觸發webhook的請求。

圖片描述

環境準備

Platform

Mac,Windows,Linux,Docker Cloud,AWS,Azure都可部署。docker

圖片描述

本次準備的平臺是Ubuntu發行版(14.04),爲了兼容docker,選擇linux發行版的時候內核需控制在3.10以上。json

Docker

  • 根據用戶選擇的平臺安裝docker引擎,安裝指導可參考https://docs.docker.com官方文檔,搭配Rancher使用,docker引擎版本最優選擇1.12.6或者1.13.1。
  • 本次準備的docker引擎版本是1.12.6。

Rancher

圖片描述

CI/CD

Build應用鏡像

示例應用基於NGX官方鏡像build,修改了NGX welcome頁面信息瀏覽器

圖片描述

Push應用鏡像

推送NGX應用鏡像到指定的遠程鏡像倉庫app

圖片描述

建立Stack&Service

經過API建立webapp stack,NGX service,命令行以下curl

curl -u "xxx:xxx" \
-X POST \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"description": "validate the upgrade service using webhook",
"name": "webapp",
"system": false,
"dockerCompose": "version: '2'\nservices:\n  NGX:\n    image: anzersy/nginx:20170801\n    stdin_open: 

true\n    tty: true\n    cpuset: \"0\"\n    ports:\n    - 8787:80/tcp\n    cpu_shares: 1024\n    

labels:\n      io.rancher.container.pull_image: always\n      servicename: nginx",
"rancherCompose": "version: '2'\nservices:\n  NGX:\n    scale: 1\n    start_on_create: true",
"binding": null,
"startOnCreate": true
}' 'http://a.b.c.d:e/v2-beta/projects/1a107/stacks'

驗證服務

打開瀏覽器,訪問NGX服務,確認應用的內容。webapp

圖片描述

建立webhook

進入webhook建立頁面,經過UI爲Dev,Beta,Prod 環境建立service upgrade webhook。tcp

(注意設置好對應的鏡像TAG和服務標籤)

圖片描述

更新並push應用鏡像

更新NGX應用、構建鏡像,並推送到遠程倉庫。

圖片描述

觸發upgrade webhook

觸發upgrade webhoook,實現服務自動升級。

curl -u "xxx:xxx" \
-X POST \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
    "push_data": {
        "tag": "20170801"
    },
    "repository": {
        "repo_name": "anzersy/nginx"
    }
}' 'http://a.b.c.d:e/v1-

驗證更新

打開瀏覽器,訪問NGX服務,驗證服務升級內容是否正常。

圖片描述
圖片描述

CD

循環3.7&3.8的步驟,完成並驗證測試環境和線上環境的持續部署。


9月27日,北京海航萬豪酒店,容器技術大會Container Day 2017即將舉行。

CloudStack之父、海航科技技術總監、華爲PaaS部門部長、恆豐銀行科技部總經理、阿里雲PaaS工程總監、民生保險CIO······均已加入豪華講師套餐!

11家已容器落地企業,15位真·雲計算大咖,13場純·技術演講,結合實戰場景,聚焦落地經驗。免費參會+超高規格,詳細議程及註冊連接請戳
圖片描述

相關文章
相關標籤/搜索