使用SDM快速部署Spring Boot應用到Kubernetes
即使在使用Kubernetes超過3年後,想到我需要編寫的YAML數量 - 或者複製和修改 - 來執行新服務,我仍然害怕。幸運的是,Atomist可以消除這種痛苦。
在這篇文章中,我將展示如何在幾分鐘內將新的或現有的Spring Boot應用程式部署到Kubernetes叢集,而無需編寫任何YAML,Dockerfile或shell指令碼。您將獲得沒有任何CI檔案的強大CD。
本文假設您可以訪問Kubernetes叢集和正確配置的kubectl,並且您可以在本地模式下執行Atomist Software Delivery Machine(簡稱SDM)(需要Node.js> = 8.1.0和npm)。如果您的系統滿足這些要求,則可以跳過下一部分。
安裝Minikube
探索Kubernetes的最快方式是透過Minikube,它允許您在膝上型電腦上設定和執行群集。如果您沒有準備好使用Kubernetes群集,請按照以下說明設定。
對於每個作業系統,安裝Minikube都是不同的,因此我
建議遵循安裝指南。以下是允許我在Mac上安裝Minikube的步驟:
1. 為作業系統安裝VirtualBox或其他受支援的虛擬機器監控程式
2. 安裝Kubernetes命令列客戶端kubectl
3. 透過執行安裝Minikube with Homebrew brew cask install minikube
安裝完成後,啟動Minikube以建立新群集:
$ minikube start
安裝ingress外掛:
$ minikube addons enable ingress
現在執行以下命令檢查本地Kubernetes叢集的狀態:
$ kubectl get pods --all-namespaces
幾分鐘後,所有系統內部窗格都應顯示Running狀態,並且已準備好1/1。
安裝Atomist CLI
按如下方式安裝Atomist CLI:
$ npm install -g @atomist/cli
如果還沒有Node.js和npm,請參閱Node.js 安裝指南。有關Atomist CLI的更多詳細資訊,請參閱開發人員快速入門。
建立軟體交付計算機
當地SDM是一個程式:做繁重的事情,把
你的Spring應用程式轉到到一個Docker映象,並將其部署到Kubernetes叢集。使用以下命令建立新的SDM:
$ atomist create sdm
從可能的SDM選項列表選擇spring to k8,並輸入GitHub的組織和儲存庫名稱。(此時我們實際上並沒有向GitHub提交任何內容。)
建立SDM後,切換到建立SDM的目錄。
預設情況下,它將$HOME/atomist/<owner>/<repository>. 透過執行以下命令啟動SDM:
$ atomist start --local
在SDM編譯和啟動時,開啟另一個終端並啟動Atomist feed監聽器,這將允許您使用剛剛啟動的SDM執行構建,停靠和部署專案的過程:
$ atomist feed --goals
部署Spring Boot示例專案
現在新的SDM正在執行,我們可以使用它從Spring Boot Rest 種子專案建立一個新的Spring Boot 專案:
$ atomist create spring
此命令將建立一個Spring Boot專案並將其提交到本地Git儲存庫中$HOME/atomist/<owner>/<repository>。SDM將對此儲存庫上的提交作出反應,將Maven構建和測試,docker構建和部署等目標安排到Minikube叢集中。
然後deploy to testing目標已經完成,Spring Boot應用程式應起來了,並在Kubernetes叢集開始接受訪問。您可以透過執行來驗證這一點:
$ kubectl get pods -n testing
當pod處於Running狀態並顯示就緒計數時,就可以透過導航到Atomist feed檢視中輸出的URL來進入應用端點。在當前這種情況下,它是:
http://spring-rest.atomist.testing.192.168.99.100.nip.io
如果該URL無法解析,則可能是您的ISP或DNS阻止了此類萬用字元地址,在這種情況下,你必須向本地/etc/hosts檔案新增一個條目,以將主機名對映到本地Minikube IP地址。
spring-rest.atomist.testing.192.168.99.100.nip.io 192.168.99.100
從現在開始,如果本地SDM正在執行,每次提交到Spring Boot應用程式都會觸發向Kubernetes叢集的交付。
現在我們已經成功地將一個Spring Boot應用程式部署到了Kubernetes。
相關文章
- 部署Dotnet Core應用到Kubernetes(一)
- 部署Dotnet Core應用到Kubernetes(二)
- Kubernetes中部署Spring Boot專案(七)Spring Boot
- 在Spring Boot應用程式中使用Kubernetes ConfigMapSpring Boot
- Spring Boot 2.0(四):使用 Docker 部署 Spring BootSpring BootDocker
- 使用 Docker 部署 Spring BootDockerSpring Boot
- 在 Kubernetes 上使用Spring Boot+ActiveMQSpring BootMQ
- 使用 Docker 部署 Spring Boot 專案DockerSpring Boot
- 使用Docker部署Spring Boot專案DockerSpring Boot
- 使用Kubernetes,Spring Boot和Flyway實現零停機部署原始碼專案Spring Boot原始碼
- Spring Boot 2.0(四):使用 Docker 部署 SprSpring BootDocker
- Spring Boot 2.0(六):使用 Docker 部署 Spring Boot 開源軟體雲收藏Spring BootDocker
- Spring Boot系列(一):Spring Boot快速開始Spring Boot
- 使用 Docker 部署 Spring Boot 專案,帶勁!!DockerSpring Boot
- 使用Spring Boot開發基於Kubernetes的Zeebe工作流應用 – SalaboySpring Boot
- Spring Boot(十二):Spring Boot 如何測試打包部署Spring Boot
- 使用Spring Cloud Kubernetes基於Kubernetes、Spring Boot和Docker構建微服務架構 - MoriohCloudSpring BootDocker微服務架構
- Spring Boot應用在kubernetes的sidecar設計與實戰Spring BootIDE
- Spring-Boot快速上手Springboot
- Spring Boot 快速整合SwaggerSpring BootSwagger
- spring boot快速入門Spring Boot
- 【Spring Boot】快速整合SwaggerSpring BootSwagger
- Spring Boot Serverless 實戰系列“部署篇” | Mall 應用Spring BootServer
- 使用Spring Boot 2.0快速構建服務元件Spring Boot元件
- Spring boot入門(一):快速搭建Spring boot專案Spring Boot
- 使用Intellij中的Spring Initializr來快速構建Spring Boot工程IntelliJSpring Boot
- 使用Spring Boot, Istio和Cert Manager實現Kubernetes的HTTPSSpring BootHTTP
- 拒做工具人!教你一鍵快速部署應用到容器映象倉庫
- Spring Boot整合熱部署框架Spring Boot熱部署框架
- Jenkins自動部署spring bootJenkinsSpring Boot
- 在GraalVM中部署執行Spring Boot應用 - Indrek OtsLVMSpring Boot
- Spring Boot中快速操作MongodbSpring BootMongoDB
- Spring Boot (一)快速入門Spring Boot
- 雲原生應用持續交付入門:基於雲效部署java應用到kubernetes叢集Java
- 使用 CodeGalaxy Cli 快速部署 Hyperf 應用
- Kubernetes(二) 應用部署
- 《Spring Boot從零開始學(視訊教學版)》快速入門Spring Boot應用開發Spring Boot
- Spring Boot的五種部署方式Spring Boot