做者周明,騰訊雲容器產品工程師。目前主要負責騰訊雲TKE、TCR等產品控制檯的相關研發工做。nginx
當你使用雲廠商提供的容器服務部署業務服務後,是否對交付部署全鏈路的效率有更高的需求,例如實現基於容器的 DevOps 服務,自動化地完成鏡像構建以及集羣內容器的鏡像版本更新。騰訊雲容器鏡像服務 TCR 提供雲原生應用交付流水線功能,全鏈路可追蹤、可觀測、可自主配置,讓用戶能夠輕鬆實現代碼提交變動後,自動觸發鏡像的構建和推送,並將鏡像更新到容器服務 TKE、彈性容器服務 EKS 等平臺建立的集羣中,完成最終的交付,爲企業級用戶在騰訊雲上提供一體化雲原生 DevOps 解決方案。本文主要介紹如何使用容器鏡像服務 TCR 輕鬆實現容器 DevOps。正則表達式
容器鏡像服務(Tencent Container Registry,TCR)是騰訊雲提供的安全獨享、高性能的容器鏡像託管分發服務,支持 Docker 鏡像、Helm Chart 存儲分發及鏡像安全掃描,爲企業級客戶提供了細顆粒度的訪問權限管理和網絡訪問控制。docker
DevOps 是 Development 和 Operations 的組合詞,表明着重視「軟件開發人員(Dev)」和「IT 運維技術人員(Ops)」之間溝通合做的文化;旨在透過自動化「軟件交付」和「架構變動」的流程,使得構建、 測試、發佈軟件的過程可以更加地快捷、頻繁和可靠。TCR 與容器服務 TKE、CODING DevOps 等產品無縫集成,在騰訊雲上提供一體化雲原生 DevOps 解決方案,容器 DevOps 的基本業務流程如圖所示。安全
準備 TCR 企業版實例,建立鏡像倉庫。網絡
前往實例列表頁面,新建企業版實例,關於如何建立可參考文檔建立企業版實例,並在生成的實例中建立一個鏡像倉庫。架構
準備 TKE 標準集羣,並部署容器應用運維
前往 容器服務控制檯,新建 TKE 標準集羣,可參考文檔 建立集羣。性能
當前容器服務 TKE 已支持在控制檯內選擇容器鏡像服務 TCR 企業版鏡像建立工做負載。同時,TKE 標準集羣可安裝 TCR 專屬插件,實現內網及免密拉取 TCR 企業版內鏡像,參考文檔 使用 TCR 企業版實例內容器鏡像建立工做負載。測試
開通 CODING DevOps 服務。ui
支持用戶配置流水線,在代碼變動後,自動構建鏡像,並觸發自動部署到容器平臺。
登陸容器鏡像服務 TCR 控制檯,選擇左側導航欄中的【交付流水線】,在「交付流水線」頁面中,單擊【新建】。
在「基本信息」步驟中,配置如下參數,而後單擊【下一步:鏡像配置】。
在「鏡像配置」步驟中,配置如下參數,單擊【下一步:應用部署】。
鏡像倉庫:選擇交付流水線關聯的鏡像倉庫,將自動配置鏡像構建及推送,用於託管應用部署所須要的鏡像。
鏡像版本過濾
:支持對執行交付流水線中鏡像的版本進行限制,能夠過濾掉不須要執行部署的鏡像版本。
鏡像來源:支持平臺構建鏡像和本地推送鏡像。平臺構建鏡像容許用戶關聯不一樣代碼託管平臺的代碼倉庫,當代碼變更時自動觸發交付流水線,完成自動構建、推送鏡像以及應用部署;本地推送鏡像支持用戶在手動推送鏡像時,也能觸發應用部署。場景一中咱們選擇平臺構建鏡像。
代碼源、代碼倉庫:選擇用於構建鏡像的代碼倉庫,流水線將拉取該代碼倉庫內源代碼進行編譯及構建,首次選擇須要受權。目前已支持GitHub、公有GitLab、私有GitLab、碼雲以及工蜂等代碼託管平臺。
觸發規則
:鏡像構建被自動觸發的規則條件。目前支持如下四種場景:
^refs/heads/master$
,可匹配 master 分支進行觸發。Dockerfile 路徑:鏡像構建執行的操做基於代碼倉庫內的 Dockerfile,需指定該 Dockerfile 文件的路徑。如不指定,默認爲代碼倉庫根目錄下名爲 Dockerfile 的文件。
構建目錄:鏡像構建執行的工做目錄,即上下文環境(context),默認爲代碼倉庫的根目錄。
版本規則:定義鏡像構建生成的鏡像名稱,即鏡像版本(tag)。支持配置自定義前綴,並組合加入「分支/標籤」,「更新時間」,「commit號」 三個環境變量。其中,更新時間爲執行 docker tag 指令時構建服務的系統時間。
在「應用部署」步驟中,配置如下參數,單擊【肯定】。
完成以上配置後,可在「交付流水線」 列表頁查看新建的流水線。
完成以上配置後,便可在更新應用代碼後,自動觸發鏡像構建,推送及應用更新。
更新源代碼
更新源代碼,並提交至遠端代碼倉庫。
執行流水線
源代碼推送完成後,如符合鏡像配置中鏡像構建的觸發條件,將觸發流水線執行。可點擊流水線查看該流水線執行記錄,並查看具體步驟進度。
查看應用更新狀態
前往容器服務 TKE 控制檯,進入上述集羣及工做負載詳情頁,並選擇修訂歷史,可查看應用更新狀態。以下圖所示,v1版本是一開始手動部署的nginx鏡像,流水線執行完成後更新爲 v2 版本,使用的是自動構建出來的新的鏡像。
能夠直接訪問該應用服務,查看是否已更新。經過查看 Servce 暴露到公網的地址,查看結果,能夠看到服務已經更新。
在某些場景可能不須要使用 TCR 鏡像自動構建能力,但又但願能夠在推送鏡像後可以自動部署到容器平臺。TCR 支持用戶配置本地推送鏡像後,經過觸發器的能力,自動觸發鏡像部署。
參考場景一配置新建一條交付流水線,與場景一的區別在「鏡像配置」步驟中,將」鏡像來源「選擇爲」本地推送鏡像「。
完成配置後,便可在本地使用命令行指令推送鏡像,觸發自動部署。
本地推送鏡像
經過快捷指令咱們能夠登陸騰訊雲容器鏡像服務 Docker Registry 並向 Registry 中推送鏡像。例如這裏推送一個 nginx 鏡像。
執行流水線
本地推進鏡像完成後,如符合鏡像配置中鏡像構建的觸發條件,將觸發流水線執行,因爲此時鏡像已經準備好,所以流水線只須要執行自動部署。
查看應用更新狀態
同場景一,咱們能夠前往容器服務 TKE 控制檯,進入上述集羣及工做負載詳情頁,並選擇修訂歷史,可查看應用更新狀態,也可直接訪問該應用服務,查看是否已更新。
本文分兩個場景介紹瞭如何使用容器鏡像服務 TCR 實現容器 DevOps。場景一是代碼變更後,自動觸發鏡像構建以及應用部署;場景二是本地推送鏡像後自動觸發應用部署。想要快速上手使用容器鏡像服務 TCR、容器服務 TKE 實踐 CD 流程,本文是個很好的參考。
【騰訊雲原生】雲說新品、雲研新術、雲遊新活、雲賞資訊,掃碼關注同名公衆號,及時獲取更多幹貨!!