<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 持續集成與發布 持續集成與發布,簡稱CI/CD,是微服務構建的重要環節,也是DevOps中推崇的方法論。如何在kubernetes中使用持續構建與發布工具?可以既可以與企業內部原有的持續構建集成,例如Jenkins,也可以在kubernetes中部署一套新的持續構建與發布工具,例如Drone。 眾所周知Kubernetes并不提供代碼構建、發布和部署,所有的這些工作都是由CI/CD工作流完成的,最近TheNewStack又出了本小冊子(117頁)介紹了Kubernetes中CI/CD的現狀。下載本書的PDF請訪問:https://thenewstack.io/ebooks/kubernetes/ci-cd-with-kubernetes/ ![CI/CD with Kubernetes](https://ws1.sinaimg.cn/large/00704eQkgy1fsaxszh01vj30da0j2jvn.jpg) 本書的作者有: - Rob Scott:ReactiveOps公司的SRE - Janakiram MSV:Janakiram & Associates 的首席分析師 - Craig Martin:Kenzan的高級副總裁 - Container Solutions 這本小冊子里主要主要介紹了以下幾點: - DevOps模式 - 云原生應用模式 - 使用Spinnaker做持續交付 - 云原生時代的監控 ### DevOps模式 這一章從一些流行的自動化運維工具講起,比如Chef、Puppet等,引申出CI/CD流水線,進而引出Docker和DevOps,將容器如何解除開發和運維之間的隔閡,但同時也帶來了一些挑戰,比如頻繁的發布變更如何控制,如何控制容器集群的行為,如何拆分應用到容器之中等。這是一個專門用于容器編排調度的工具呼之欲出,Kubernetes的出現徹底改變了局面,可以說它直接改變了應用的基礎架構。 ![Kubernetes改變了應用的基礎架構](https://ws1.sinaimg.cn/large/00704eQkgy1fsayashxz3j31c00w6aed.jpg) Kubernetes細化的應用程序的分解粒度,同時將服務發現、配置管理、負載均衡和健康檢查等作為基礎設施的功能,簡化了應用程序的開發。 而Kubernetes這種聲明式配置尤其適合CI/CD流程,況且現在還有如Helm、Draft、Spinnaker、Skaffold等開源工具可以幫助我們發布Kuberentes應用。 ![Kubernetes中的CI/CD](https://ws1.sinaimg.cn/large/00704eQkgy1fsayfzk3ezj31bu0tkdky.jpg) 有了基于Kubernetes的CI/CD流程后,又誕生了GitOps(<https://www.weave.works>的博客中有很多相關文章)和SecOps(Security Operation)。 ### 云原生應用模式 > 云原生是通過構建團隊、文化和技術,利用自動化和架構來管理系統的復雜性和解放生產力。——Joe Beda,Heotio CTO,聯合創始人 這一章的重點是給出了云原生應用的10條關鍵屬性。 1. 使用輕量級的容器打包 2. 使用最合適的語言和框架開發 3. 以松耦合的微服務方式設計 4. 以API為中心的交互和協作 5. 無狀態和有狀態服務在架構上界限清晰 6. 不依賴于底層操作系統和服務器 7. 部署在自服務、彈性的云基礎設施上 8. 通過敏捷的DevOps流程管理 9. 自動化能力 10. 通過定義和策略驅動的資源分配 作者然后將應用程序架構中的不同組件映射到云原生的工作負載中,如下圖所示: ![云原生工作負載](https://ws1.sinaimg.cn/large/00704eQkgy1fsayrk6vppj31bu0w0gsd.jpg) 這也是DevOps需要關注的部分,如何將云原生的組件映射為Kubernetes的原語(即Kubernetes里的各種資源對象和概念組合)呢?如下圖所示。 ![云原生工作負載映射到Kuberentes原語](https://ws1.sinaimg.cn/large/00704eQkgy1fsaytbabxgj31c00w2n4r.jpg) 總結概括為以下10條: 1. 不要直接部署裸的Pod。 2. 為工作負載選擇合適的Controller。 3. 使用Init容器確保應用程序被正確的初始化。 4. 在應用程序工作負載啟動之前先啟動service。 5. 使用Deployment history來回滾到歷史版本。 6. 使用ConfigMap和Secret來存儲配置。 7. 在Pod里增加Readiness和Liveness探針。 8. 給Pod這只CPU和內存資源限額。 9. 定義多個namespace來限制默認service范圍的可視性。 10. 配置HPA來動態擴展無狀態工作負載。 ### 使用Spinnaker進行持續交付 作者首先講到了Spinnaker的各種特性,比如面向微服務啦,云原生的交付工具啦,可視化的交付和基礎設施啦,支持多個region,支持容器和Kubernetes等等,不一而足,感興趣大家可以自己看下報告或者登陸Spinnaker官網<https://www.spinnaker.io>查看。 下圖是Spinnaker中的組件和角色的交互關系。 ![spinnaker中的組件及角色交互關系](https://ws1.sinaimg.cn/large/00704eQkgy1fsaz2wirz9j31bs0vygsb.jpg) 下圖是Spinnaker的幾種不同環境的流水線。 ![Spinnaker部署流水線](https://ws1.sinaimg.cn/large/00704eQkgy1fsaz3yo227j31c60mgdim.jpg) ![Spinnaker的預發布流水線](https://ws1.sinaimg.cn/large/00704eQkgy1fsaz50k2atj31bs0mitbn.jpg) ![Spinnaker的生產流水線](https://ws1.sinaimg.cn/large/00704eQkgy1fsaz5n5qs9j31by0motbm.jpg) 總之作者就是想說Spinnaker很好很強大啦,足以滿足您對云原生應用CI/CD的需求。 ### 云原生時代的監控 監控是為了實現系統的可觀察性,不要以為監控就是簡單的出個監控頁面,監控其實包括以下部分: - 日志收集 - 監控和指標度量 - 追蹤 - 告警和可視化 要把其中任何一個方面做好都不容器。 ![可觀察性](https://ws1.sinaimg.cn/large/00704eQkgy1fsazabn0b9j31by0w6791.jpg) 作者主要講述的Prometheus和Grafana的開源監控方案。 ![Prometheus生態系統中的組件](https://ws1.sinaimg.cn/large/00704eQkgy1fsazcclee6j31c20w6n5y.jpg) 這一章我不詳述,感興趣大家可以查看報告原文。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看