openshift k8s_带有DIY的Openshift上的Spring Boot / Java 8 / Tomcat 8
openshift k8s
DIY盒帶是一種實驗性盒帶,提供了一種在OpenShift上測試不受支持的語言的方法。 它提供了最小限度的自由形式的支架,將墨盒的所有細節留給了應用程序開發人員 。 這篇博客文章說明了結合了PostgreSQL服務的Spring Boot / Java 8 / Tomcat 8應用程序的使用。
創建新的應用程序
先決條件
在開始構建應用程序之前,我們需要安裝一個OpenShift免費帳戶和客戶端工具。
步驟1:建立DIY應用程式
要使用客戶端工具創建應用程序,請鍵入以下命令:
rhc app create boot diy-0.1此命令使用DIY盒式磁帶創建應用程序引導 ,并將存儲庫克隆到引導目錄。
步驟2:將PostgreSQL墨盒添加到應用程序
我們正在創建的應用程序將使用PostgreSQL數據庫,因此我們需要向該應用程序添加適當的盒式磁帶:
rhc cartridge add postgresql-9.2 --app boot創建盒帶后,可以使用以下命令檢查其狀態:
rhc cartridge status postgresql-9.2 --app boot步驟3:刪除模板應用程序源代碼
OpenShift創建一個可以自由刪除的模板項目:
git rm -rf .openshift README.md diy misc提交更改:
git commit -am "Removed template application source code"步驟4:從GitHub提取源代碼
git remote add upstream https://github.com/kolorobot/openshift-diy-spring-boot-sample.git git pull -s recursive -X theirs upstream master步驟5:推送變更
基本模板隨時可以推送:
git push初始部署(構建和應用程序啟動)將花費一些時間(最多幾分鐘)。 盡管在小型Gear上啟動Spring Boot應用程序可能要花2分鐘以上的時間,但后續部署要快一些:
Tomcat started on port(s): 8080/http Started Application in 125.511 seconds現在,您可以瀏覽到: http : //boot-yournamespace.rhcloud.com/manage/health ,您應該看到:
{"status": "UP","database": "PostgreSQL","hello": 1 }您也可以瀏覽API。 要了解您擁有哪些選項,請導航至應用程序的根目錄。 您應該看到資源根目錄,其中包含指向可用資源的鏈接:
{"_links" : {"person" : {"href" : "http://boot-yournamespace.rhcloud.com/people{?page,size,sort}","templated" : true}} }導航到http://boot-yournamespace.rhcloud.com/people應該從數據庫返回所有人員。
第6步:添加詹金斯
使用詹金斯有一些優勢。 其中之一是構建是在其自己的Gear中進行的。 要使用Jenkins進行構建,OpenShift需要服務器和連接到應用程序的Jenkins客戶端盒。 創建Jenkins應用程序:
rhc app create ci jenkins并將Jenkins客戶端附加到應用程序:
rhc cartridge add jenkins-client --app boot現在,您可以瀏覽到: http:// ci- .rhcloud.com并使用提供的憑據登錄。 當您進行下一個更改并將其推送時,構建將由Jenkins觸發:
remote: Executing Jenkins build. remote: remote: You can track your build at https://ci-<namespace>.rhcloud.com/job/boot-build remote: remote: Waiting for build to schedule.........而且,當您觀察到構建結果時,該應用程序在Jenkins上的啟動速度會更快一些。
引擎蓋下
為什么要DIY?
可以將Spring Boot應用程序部署到OpenShift上的Tomcat盒中。 但是目前沒有Tomcat 8和Java 8支持,因此選擇了DIY。 DIY有局限性:例如,無法縮放。 但這是嘗試和玩新事物的完美選擇。
應用結構
該應用程序是一個常規的Spring Boot應用程序,可以使用http://start.spring.io進行引導。 使用的構建系統是Maven,包裝類型是Jar。 使用Java 8的Tomcat 8。 Spring Boot默認使用Tomcat 7,要對其進行更改,添加了以下屬性:
<properties><tomcat.version>8.0.9</tomcat.version> </properties>之所以選擇Maven,是因為目前只能在OpenShift上使用Gradle 1.6。 這是由于Gradle中的錯誤所致。 Gradle 2.2解決了此問題。
Maven settings.xml
settings.xml文件非常重要,因為它包含Maven存儲庫的位置: ${OPENSHIFT_DATA_DIR}/m2/repository 。
在OpenShift上,寫入權限僅在$ OPENSHIFT_DATA_DIR中。
數據源配置
該應用程序使用Spring Data REST通過REST導出存儲庫。 所需的依賴項是:
- spring-boot-starter-data-jpa –存儲庫配置
- spring-boot-starter-data-rest –公開基于REST的存儲庫
- hsqldb –用于嵌入式數據庫支持
- postgresql –用于PostgreSQL支持。 由于當前OpenShift使用PostgreSQL 9.2,因此使用了適當的驅動程序版本
通用屬性– application.properties
默認情況下(默認配置文件src/main/resources/application.properties ),應用程序將使用嵌入式HSQLDB并使用src/main/resources/data.sql 。 數據文件可以在HSQLDB和PostrgeSQL上運行,因此我們不需要提供特定于平臺的文件(Spring Boot可以實現)。
- spring.datasource.initialize = true必須使用spring.datasource.initialize = true ,因此Spring Boot會拾取數據文件并將其加載到數據庫中。
- spring.jpa.generate-ddl = true可確保將導出架構。
OpenShift屬性– application-openshift.properties
特定于OpenShift的配置( src/main/resources/application-openshift.properties )允許使用PostgreSQL服務。 該配置使用OpenShift env變量來設置連接屬性:
- $ OPENSHIFT_POSTGRESQL_DB_HOST –用于數據庫主機
- $ OPENSHIFT_POSTGRESQL_DB_PORT –用于數據庫端口
- $ OPENSHIFT_APP_NAME –數據庫名稱
- $ OPENSHIFT_POSTGRESQL_DB_USERNAME –用于數據庫用戶名
- $ OPENSHIFT_POSTGRESQL_DB_PASSWORD –用于數據庫密碼
Spring允許直接使用${}語法在屬性中使用env變量,例如:
spring.datasource.username = ${OPENSHIFT_POSTGRESQL_DB_USERNAME}為了讓Spring Boot激活OpenShift配置文件,在啟動時將spring.profiles.active屬性傳遞給應用程序: java -jar <name>.jar --spring.profiles.active=openshift 。
登錄OpenShift
日志文件將存儲在$ OPENSHIFT_DATA_DIR中:
logging.file=${OPENSHIFT_DATA_DIR}/logs/app.log執行器
執行器的默認管理上下文路徑為/ 。 更改為/manage ,因為OpenShift公開了/health端點本身,該端點涵蓋了Actuator的/health端點。
management.context-path=/manageOpenShift action_hooks
OpenShift在部署過程中的特定位置執行動作掛鉤腳本文件。 所有掛鉤都放置在應用程序存儲庫的.openshift/action_hooks目錄中。 文件必須是可執行的。 在Windows中,可以在Git Bash中使用以下命令:
git update-index --chmod=+x .openshift/action_hooks/*部署應用程序
deploy腳本下載Java和Maven,創建一些目錄,并導出正確運行Java 8 / Maven構建所需的幾個環境變量。
部署的最后命令是運行Maven目標:
mvn -s settings.xml clean install啟動應用程序
deploy腳本成功完成后, target目錄將包含一個組裝了Spring Boot應用程序的jar。 該應用程序已啟動,并綁定到OpenShift提供的服務器地址和端口。 另外,提供了概要文件名稱,因此將創建有效的數據源。 運行該應用程序的最終命令:
nohup java -Xms384m -Xmx412m -jar target/*.jar --server.port=${OPENSHIFT_DIY_PORT} --server.address=${OPENSHIFT_DIY_IP} --spring.profiles.active=openshift &停止應用
stop腳本正在尋找Java進程,當找到它時…您知道會發生什么。
摘要
我對“自己動手做”墨盒對OpenShift的評估感到非常滿意。 并非所有事情都像我預期的那樣順利,主要是由于小型Gear的內存限制。 我花了一些時間弄清楚并進行了正確的配置。 但是,帶有DIY的OpenShift值得嘗試一小會兒。 尤其是,完全免費開始。
參考資料
- 在整篇文章中使用的項目源代碼可以在GitHub上找到: https : //github.com/kolorobot/openshift-diy-spring-boot-sample 。
- Spring Boot文檔: http : //docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#cloud-deployment-openshift
- 創建本文時使用了一些OpenShift參考:
https://blog.openshift.com/run-gradle-builds-on-openshift
https://blog.openshift.com/tips-for-creating-openshift-apps-with-windows
翻譯自: https://www.javacodegeeks.com/2014/10/spring-boot-java-8-tomcat-8-on-openshift-with-diy.html
openshift k8s
總結
以上是生活随笔為你收集整理的openshift k8s_带有DIY的Openshift上的Spring Boot / Java 8 / Tomcat 8的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安装linux分区详解图文(安装linu
- 下一篇: java 性能调优_Java性能调优调查