- OpenShift開發(fā)指南(原書第2版)
- (美)約書亞·伍德等
- 2582字
- 2023-07-24 18:12:07
前言
與以往任何時候相比,現(xiàn)在的軟件用戶群體更大,其重要性也更突出。這兩類需求通常被概括為擴展性(也可稱為規(guī)模性)和可靠性。在過去的十年里,軟件行業(yè)通過各種技術(shù)措施、基礎(chǔ)設(shè)施以及類似DevOps譯注1的開發(fā)文化舉措來尋求軟件的擴展性和可靠性。
其中一組常用的策略就是運維自動化:通過(編寫)運維軟件來運行你的軟件,從而實現(xiàn)運維工作的自動化。重復性工作的自動化是網(wǎng)站可靠性工程(Site Reliability Engineering,SRE)的基石之一,SRE是一種用于IT運維的軟件工程方法,O'Reilly出版社出版的Site Reliability Engineering一書系統(tǒng)地介紹了SRE的定義、原理和實踐。DevOps和更新的GitOps譯注2則將SRE的自動化思想應(yīng)用于開發(fā)軟件和構(gòu)建軟件的實踐中。其中最簡單的形式可能是:每當應(yīng)用程序的源代碼發(fā)生變化,就會觸發(fā)自動構(gòu)建和部署過程。
現(xiàn)代軟件基礎(chǔ)設(shè)施通過分布式計算尋求擴展性和可靠性。盡管實際上有非常多獨立的計算機,但分布式計算能夠讓這么多獨立的計算機像一臺巨大的超級計算機一樣工作。通過這種方式,整合在一起的超級計算機可以做更多的工作(擴展性),同時又可以迅速剔除潛在的故障點(可靠性)。
Kubernetes是一個管理分布式計算機上的應(yīng)用程序的系統(tǒng),它將應(yīng)用程序封裝在離散的、可以被快速替換的構(gòu)件(稱為容器)中。Kubernetes可以在不了解容器及其依賴項的情況下管理容器的運行地點和時間。因此,Kubernetes被稱為容器編排系統(tǒng)。
OpenShift以Kubernetes為核心,將一組計算機(可以是物理機或虛擬機)整合成一個集群。組成集群的計算機稱為節(jié)點。OpenShift定義了這些節(jié)點之間的關(guān)系,以及如何在這些節(jié)點上執(zhí)行或運行工作負載。通過將核心分布式計算能力與使用它們的工具、策略和接口封裝在一起,OpenShift能夠幫助開發(fā)團隊使用來源于DevOps和GitOps的最佳實踐,并根據(jù)SRE規(guī)則實現(xiàn)重復流程的自動化處理。
本書的目標讀者
如果你是一個熟悉數(shù)據(jù)結(jié)構(gòu)和函數(shù)并知道如何將它們構(gòu)建到應(yīng)用程序中,但對容器、Kubernetes和應(yīng)用平臺還很陌生的軟件開發(fā)人員,那么本書就是為你準備的。本書將告訴你如何使用OpenShift來構(gòu)建、部署、擴展和管理應(yīng)用程序,以及如何利用OpenShift的特性(比如構(gòu)建觸發(fā)器、流水線和自動伸縮器)來自動處理這些工作。
本書涵蓋的內(nèi)容
本書解釋了什么是OpenShift以及如何使用它來構(gòu)建應(yīng)用程序、運行它們,并使它們能夠通過業(yè)務(wù)需求改變、系統(tǒng)故障恢復和持續(xù)的新版本發(fā)布(新版本發(fā)布可以是功能修復或者新產(chǎn)品特性)等保持運行。
·第1章和第2章介紹OpenShift及其組件和基本概念。
·第3章告訴你如何在計算機上運行OpenShift,這樣你就有一個虛擬集群來進行本書的練習。
·在第4章中,你將配置OpenShift來獲取一個簡單的Hello World應(yīng)用程序的源代碼,將其構(gòu)建為一個容器鏡像,并運行它。
·第5章介紹OpenShift流水線——一個用于持續(xù)集成(Continuous Integration,CI)和持續(xù)部署(Continuous Deployment,CD)的框架,并告訴你如何將流水線添加到集群中。
·在第6章中,你將部署一個具有多層架構(gòu)和多個組件的更接近現(xiàn)實情況的應(yīng)用程序。
·在第7章中,你將改造應(yīng)用程序的后端模塊添加新功能,改造好的后端模塊能夠保持會話之間的狀態(tài),將有狀態(tài)數(shù)據(jù)存儲到數(shù)據(jù)庫中。
·第8章將告訴你如何通過手動和自動的方式檢查、操作和擴展正在運行的應(yīng)用程序,如何設(shè)置OpenShift以定期檢查應(yīng)用程序的健康狀況,以及如何管理應(yīng)用程序的新版本發(fā)布。
·第9章是對OpenShift的監(jiān)控和告警功能的概要介紹。
·第10章分析OpenShift的自動化特性,通過讓平臺自動做重復性工作來消除人工操作。
排版約定
本書中使用以下排版約定:
斜體(Italic)
表示新的術(shù)語、URL、電子郵件地址、文件名和文件擴展名。
等寬字體(Constant width)
用于程序清單,以及段落中的程序元素,例如變量名、函數(shù)名、數(shù)據(jù)庫、數(shù)據(jù)類型、環(huán)境變量、語句以及關(guān)鍵字。
粗體( Bold)
顯示應(yīng)該由用戶按字面意思直接輸入的命令或其他文本。
該圖示表示提示或建議。
該圖示表示一般性說明。
該圖示表示警告或注意。
示例代碼
你可以從https://github.com/openshift-for-developers下載本書的補充材料(包括源代碼、練習等)。
本書提供的代碼是為了幫助你更好地理解本書的內(nèi)容。通常,你可以在程序或文檔中使用本書提供的代碼,而不需要聯(lián)系O'Reilly獲得許可,除非需要大段地復制代碼。例如,使用本書中所提供的幾個代碼片段來編寫一個程序不需要得到我們的許可,但銷售或發(fā)布O'Reilly圖書提供的示例代碼則需要獲得許可。引用本書的示例代碼來回答問題也不需要許可,將本書中的很大一部分示例代碼放到自己的產(chǎn)品文檔中則需要獲得許可。
非常歡迎讀者使用本書中的代碼,希望(但不強制)注明出處。注明出處時包含書名、作者、出版社和ISBN,例如:
OpenShift for Developers, Second edition,作者Joshua Wood和Brian Tannous,由O'Reilly出版,書號978-1-098-10336-1。
如果讀者覺得對示例代碼的使用超出了上面所給出的許可范圍,歡迎通過permission@oreilly.com聯(lián)系我們。
O'Reilly在線學習平臺(O'Reilly Online Learning)
40多年來,O'Reilly Media致力于提供技術(shù)和商業(yè)培訓、知識和卓越見解,來幫助眾多公司取得成功。
我們擁有獨一無二的專家和革新者組成的龐大網(wǎng)絡(luò),他們通過圖書、文章、會議和我們的在線學習平臺分享他們的知識和經(jīng)驗。O'Reilly的在線學習平臺允許你按需訪問現(xiàn)場培訓課程、深入的學習路徑、交互式編程環(huán)境,以及O'Reilly和200多家其他出版商提供的大量文本和視頻資源。有關(guān)的更多信息,請訪問http://oreilly.com。
如何聯(lián)系我們
對于本書,如果有任何意見或疑問,請按照以下地址聯(lián)系本書出版商。
美國:
O'Reilly Media,Inc.
1005 Gravenstein Highway North
Sebastopol,CA 95472
中國:
北京市西城區(qū)西直門南大街2號成銘大廈C座807室(100035)
奧萊利技術(shù)咨詢(北京)有限公司
本書配套網(wǎng)站https://oreil.ly/openshift-for-developer-2上列出了勘誤表、示例以及其他信息。
如果你需要詢問技術(shù)問題或?qū)Ρ緯岢鼋ㄗh,請發(fā)送電子郵件至errata@oreilly.com.cn。
關(guān)于書籍、課程和新聞的更多信息,請訪問我們的網(wǎng)站http://oreilly.com。
我們在Facebook上的地址:http://facebook.com/oreilly
我們在Twitter上的地址:http://twitter.com/oreillymedia
我們在YouTube上的地址:http://www.youtube.com/oreillymedia
致謝
我們要感謝Red Hat OpenShift團隊,特別是OpenShift Developer Advocates小組,感謝他們在我們創(chuàng)作本書時提供的支持,以及自2011年OpenShift首次發(fā)布以來,他們?yōu)楦倪M和增強OpenShift所做的不懈努力。在OpenShift從一個早期采用專用容器和容器編排技術(shù)的應(yīng)用開發(fā)平臺發(fā)展到后來采用Kubernetes作為應(yīng)用平臺核心的過程中,其目標始終如一:在現(xiàn)代大規(guī)模和可擴展的基礎(chǔ)設(shè)施上實現(xiàn)應(yīng)用程序運行的自動化和流程化,讓開發(fā)人員專注于業(yè)務(wù)應(yīng)用代碼。而這也正是本書的目標。
我們也感謝那些曾經(jīng)編輯、審核、提出建議的人,其中包括Jason Dobies、Daniel Hinojosa和Tero Ahonen。Sun Seng David Tan(https://github.com/sunix)創(chuàng)建了原始代碼,我們在此基礎(chǔ)上編寫了本書的主要示例應(yīng)用程序“Noted”。我們還要感謝家人和朋友,他們在我們創(chuàng)作本書時非常包容和支持我們。
譯注1:DevOps,即開發(fā)運維一體化,開發(fā)人員需要分擔維持應(yīng)用程序運行的責任。
譯注2:GitOps是一種云原生應(yīng)用實現(xiàn)持續(xù)部署的方式,是一套使用Git來管理基礎(chǔ)設(shè)施和應(yīng)用部署、配置的最佳實踐。
- 數(shù)據(jù)科學實戰(zhàn)手冊(R+Python)
- Android項目開發(fā)入門教程
- 編程的修煉
- Eclipse Plug-in Development:Beginner's Guide(Second Edition)
- Hands-On Automation Testing with Java for Beginners
- AIRIOT物聯(lián)網(wǎng)平臺開發(fā)框架應(yīng)用與實戰(zhàn)
- Mastering Git
- Learning YARN
- 響應(yīng)式Web設(shè)計:HTML5和CSS3實戰(zhàn)(第2版)
- PHP 7從零基礎(chǔ)到項目實戰(zhàn)
- PHP Microservices
- 3D Printing Designs:Octopus Pencil Holder
- Python Linux系統(tǒng)管理與自動化運維
- Delphi Cookbook
- The C++ Workshop