持续集成之应用k8s自动部署
持續集成之應用k8s自動部署
Intro
上次我們提到了docker容器化及自動化部署[1],這僅僅適合個人項目或者開發環境部署,如果要部署到生產環境,必然就需要考慮很多因素,比如訪問量大了如何調整部署,如何更好的應對大并發的情況,如何不停機更新應用,如果想要將Docker應用于具體的業務實現,是存在困難的——編排、管理和調度等各個方面,都不容易。于是,人們迫切需要一套管理系統,對Docker及容器進行更高級更靈活的管理,于是 k8s 就出現了。
K8S,就是基于容器的集群管理平臺,它的全稱,是kubernetes。
k8s 十分強大,可以幫助我們很方便的實現應用的伸縮,也可以很輕易的實現不停機更新,更好更方便的實現服務高可用,還有很多很實用的功能,例如服務發現/負載均衡/配置中心等,更多 k8s 的介紹請參考https://www.kubernetes.org.cn/docs[2]。
k8s 自動部署介紹
這里只是我自己的一些實踐,不一定是最合適的,僅供參考。
自動部署流程:
?自己在 k8s 集群上手動創建 deployment 和 service?CI 自動構建新的 docker 鏡像?CI 推送新的 docker 鏡像到 docker hub 或者自己的 docker registry?更新 k8s 應用對應的 deployment 的鏡像
示例應用
這里有一個?示例應用[3]
?
在部署了 k8s 集群環境的服務器上部署應用
wget https://raw.githubusercontent.com/WeihanLi/AccountingApp/dev/accountingapp-k8s-deployment.yaml kubectl apply -f accountingapp-k8s-deployment.yaml?
配置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) --record=true??
提交代碼觸發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的信息確認是否已經成功更新鏡像
Memo
希望對你有幫助,作者水平有限,如有疏漏或者錯誤,還望指出。
References
[1]?docker容器化及自動化部署:?https://www.jianshu.com/p/ce10bb128539[2]:?https://www.kubernetes.org.cn/docs[3]?示例應用:?https://github.com/WeihanLi/AccountingApp[4]?示例應用:?https://accounting.weihanli.xyz/Account/Login?ReturnUrl=%2F
總結
以上是生活随笔為你收集整理的持续集成之应用k8s自动部署的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谈谈“学习”这件事儿
- 下一篇: 持续集成之应用容器化及自动化部署