官术网_书友最值得收藏!

管理開發的復雜性

Kubernetes原生開發中最關鍵的領域之一就是開發環境的管理。為了成功部署或提升(staging)至多個環境,需要執行的任務變得越來越多。其中一個原因就是獨立應用或微服務的數量在不斷增加。另外一個原因則是針對必要基礎設施的特定應用的配置。圖1-1給出了一個示例開發環境的概覽,其中包括了實現完全自動化所需的工具。在本書中,我們會討論其中的一部分,從而能夠讓你在新環境中快速起步。核心的開發任務并沒有什么變化。你依然需要合適的框架來編寫應用或服務,比如我們在本書中所使用的Quarkus(網址見鏈接列表1.17條目)。這一部分的開發工作流通常被稱為“內循環”開發。

在本書中,我們會用大多數的時間來討論“外循環”中的變化和機會。外循環會涉及構建和測試應用程序,并通過各種機制將其投入生產。有必要提醒大家,本書旗幟鮮明地表達了我們源于實踐給出的觀點;推薦的工具和技術,我們在體驗后認為它們能夠使Java開發人員變得更高效、快捷,甚至心情更愉悅。如圖1-1所示,你在某些方面擁有一到兩個選擇。在本書中,我們為開發人員選擇了更為傳統的方式。比如,使用Maven而不是Gradle來構建應用,使用podman而不是Docker來構建容器鏡像。我們還使用OpenJDK而不是GraalVM,并在例子中堅持使用JUnit而不是Testcontainers(網址見鏈接列表1.18條目)。

但是,正如CNCF全景圖(網址見鏈接列表1.19條目)所描繪的那樣,云原生生態系統有更多工具供我們選擇。你可以把本書看作是企業級Java開發者的線索圖。

圖1-1 內循環與外循環開發,以及作者推薦的工具

除了技術選擇,我們還必須決定如何使用這個新的生態系統。隨著各種工具的出現,我們用另外一個維度來衡量Kubernetes的采用程度。如圖1-2所示,我們將其區分為“預置傾向性”和“靈活性”。作為一個癡迷于細節的開發人員,你可能想要從實戰中學習各種例子,編寫YAML文件并使用“普通”的Kubernetes。

最初,YAML的含義是“另外一種標記語言(Yet Another Markup Language)”。這個名稱的目的是表明它是一種標記語言,是一種調侃的說法。但是,后來它被重定義為“YAML不是一種標記語言(YAML Ain't Markup Language)”,這是一種遞歸的縮寫,以強調它面向數據的目的。

你可能只關注源碼,不想在實現業務邏輯時分心,這可以通過使用一些發行版所提供的開發工具來實現。取決于開發過程中事情的重要性,可以有多種選擇。你可以使用主要的Kubernetes命令行接口(CLI)kubctl來取代特定產品的工具,比如OpenShift的CLI oc。如果你想要更完整的產品,那么建議你嘗試一下CodeReady Containers(網址見鏈接列表1.20條目),這是一個能夠在筆記本電腦上運行的OpenShift集群,可以提供簡單的入門體驗。但是,選擇權在你。

我們推薦的另一個好工具是o d o(網址見鏈接列表1.21條目),它是一個通用的開發者CLI,適用于基于Kubernetes的項目?,F有的工具,如kubectloc,更注重于運維,需要對底層概念有深刻的理解。odo為開發人員抽象出了復雜的Kubernetes概念。外循環開發的示例選擇了持續集成(CI)解決方案。本書使用了Tekton(網址見鏈接列表1.22條目),在第6章中可以學習如何使用它。另一種可能是借助Jenkins Operator(網址見鏈接列表1.23條目)或者借助Jenkins X在Kubernetes上使用Jenkins。無論怎么選,你才是Kubernetes原生旅程的主人。

圖1-2 “預置傾向性”和“靈活性”:在開發內循環和外循環中的技術選擇

主站蜘蛛池模板: 油尖旺区| 综艺| 甘泉县| 尼玛县| 太康县| 遵义县| 阿拉善左旗| 屯门区| 西丰县| 枣阳市| 巴中市| 西乌| 张家港市| 电白县| 陇川县| 田阳县| 贵德县| 顺昌县| 资溪县| 杭州市| 财经| 静宁县| 阆中市| 婺源县| 开封市| 平顺县| 商洛市| 开平市| 高淳县| 海兴县| 罗甸县| 蓬溪县| 云龙县| 巴塘县| 武乡县| 萍乡市| 于田县| 利川市| 富顺县| 巴彦淖尔市| 哈尔滨市|