1.參數注入java
在OpenShift上配置應用程序的推薦方法是使用ConfigMaps。使用ConfigMap可確保配置與應用程序映像分離,並使應用程序映像保持可移植性。使用ConfigMap,配置數據在運行時注入容器。git
Spring Boot沒有直接支持ConfigMaps。github
另外一種方法是使用Spring Cloud Kubernetes項目,該項目提供與Kubernetes和OpenShift的Spring Cloud集成。 Spring Cloud Kubernetes項目由Red Hat Fabric8團隊啓動,現已轉移到Spring Cloud Incubator保護傘下。spring
https://github.com/spring-cloud-incubator/spring-cloud-kubernetes
安全
Spring Cloud Kubernetes項目經過提供ConfigMapPropertySource爲Kubernetes和OpenShift ConfigMaps提供支持。 ConfigMapPropertySource搜索Kubernetes ConfigMap。 ConfigMap的名稱是Spring應用程序的名稱,由spring.application.name屬性定義。 若是找到這樣的ConfigMap,則經過處理各個配置屬性來處理它。經過將名爲application.properties的任何屬性的內容應用爲屬性文件來處理這些單獨的屬性。服務器
2.使用Spring Cloud Kubernetesapp
要使用Spring Cloud Kubernetes,您須要在此處顯示Maven依賴項。 groupId是org.springframework.cloud。 artifactId`是`spring-cloud-starter-kubernetes-config。ide
要使用Spring Cloud Kubernetes,您須要一個必需的屬性文件。您的application.properties文件必須包含應用程序名稱的條目,如此處所示。 而後使用spring.application.name屬性(本例中爲cart-service)定義的相同條目建立ConfigMap。 oc create命令用於建立ConfigMap。spring-boot
部署應用程序時,瞭解它是否可用以及是否能夠開始處理傳入請求很是重要。經過實施運行情況檢查模式,您能夠監視應用程序的運行情況,從而檢查應用程序是否可用而且可以爲請求提供服務。ui
3.健康檢查
有關健康服務檢查有五個關鍵概念:
Liveness
Readiness
Failover
Resilience and stability
Probe
Liveness定義應用程序是否正在運行。有時正在運行的應用程序會進入無響應或中止狀態,必須從新啓動。檢查活動有助於肯定是否須要從新啓動應用程序。 Readiness狀況定義正在運行的應用程序是否能夠服務請有時,正在運行的應用程序會進入錯誤或損壞的狀態,在該狀態下它沒法再處理請求。檢查準備狀況有助於肯定是否能夠繼續將請求路由到該應用程序。
故障轉移能夠正常處理服務請求中的失敗。若是應用程序沒法爲請求提供服務,則該請求和未來的請求能夠進行故障轉移,這意味着它們將路由到另外一個應用程序。這一般是同一應用程序的冗餘副本。 彈性和穩定性使服務請求失敗得以優雅地處理。若是應用程序因爲鏈接丟失而沒法爲請求提供服務,則在彈性系統中,能夠在從新創建鏈接後重試該請求。 探針是Kubernetes操做,可按期對正在運行的容器執行診斷。
您的應用程序能夠公開REST端點以報告準備狀況和活躍度。 爲了準備就緒,請公開/ health / readyiness REST端點。若是應用程序已準備好處理請求,請讓它返回HTTP狀態代碼200.若是不是,請讓它返回HTTP狀態代碼503(若是可能)。 爲了活躍,暴露/ health / liveness REST端點。若是應用程序處於活動狀態,請讓它返回HTTP狀態代碼200.若是不是,請讓它返回HTTP狀態代碼503(若是可能)。
spring Boot公開用於管理和監視的HTTP和Java Management Extensions或JMX端點。
彈簧啓動 - 啓動器 - 執行器啓動器啓用此功能。 執行器須要Spring MVC。 如下是一些Actuator端點: autoconfig顯示一個自動配置報告,顯示全部自動配置候選項以及它們應用或未應用的緣由。 beans顯示應用程序中全部Spring bean的完整列表。 健康顯示應用健康信息。 指標顯示當前應用程序的「指標」信息。 當Jolokia在類路徑上時,jolokia經過HTTP公開JMX bean。
從全部HealthIndicator bean收集健康情況。 Spring Boot包含許多自動配置的HealthIndicator。 默認狀況下,僅返回運行情況。完整細節須要驗證。 您能夠爲運行情況和信息端點添加自定義HealthIndicators或InfoContributors。 Actuator端點是徹底可配置的,包括服務器地址,路徑,端口,SSL和安全性。
Spring Boot應用程序一般打包爲可執行JAR或WAR歸檔。 Spring Boot Maven插件的從新打包目標將在Maven的打包階段構建的JAR存檔重寫爲可執行的JAR。這裏顯示了一個例子。 Spring Boot可執行的自包含JAR文件與着色的uber-JAR不一樣。 還有可用於可部署WAR的替代包裝。
Spring Boot JAR內部結構支持嵌套JAR。這裏顯示了一個例子。
使用java命令啓動Spring Boot應用程序,以下所示。 您能夠指定帶有雙連字符的環境屬性命令行參數。 您可使用Spring Boot Maven插件編譯和運行應用程序。
使用java命令啓動Spring Boot應用程序:
$ java -jar my-app-1.0.0.jar
環境屬性命令行參數前綴爲 - :
$ java -jar my-app-1.0.0.jar --server.port = 9000
使用Spring Boot Maven插件編譯並運行應用程序:
$ mvn spring-boot:run
Fabric8 Maven插件是爲Docker,Kubernetes和OpenShift構建和部署Java應用程序的一站式商店。它將您的Java應用程序帶到Kubernetes和OpenShift。它提供了與Maven的緊密集成,並從已提供的構建配置中獲益。它側重於三個任務:
構建Docker鏡像
建立OpenShift和Kubernetes資源
在Kubernetes和OpenShift上部署應用程序
Fabric8 Maven插件支持如下目標:
fabric8:resource建立Kubernetes和OpenShift資源描述符。
fabric8:build構建Docker鏡像。
fabric8:push將Docker鏡像推送到註冊表。
fabric8:deploy將OpenShift資源對象部署到集羣。
fabric8:觀察重建和重啓的狀況。
Fabric8 Maven插件支持Kubernetes和OpenShift描述符。 它還支持使用二進制源的OpenShift Docker構建。 該插件還提供靈活的自定義。 Generators分析Maven構建併爲某些系統生成自動Docker鏡像配置,包括spring-boot,plain Java和Apace Karaf。 Enchers使用SCM標籤等額外信息擴展Kubernetes和OpenShift資源描述符,並能夠添加服務等默認對象。能夠單獨配置發生器和濃縮器並將其組合到配置文件中。
Fabric8 Maven插件還支持各類配置樣式:
零配置:用於快速提高預先肯定默認值的默認值。
內聯配置:在XML語法的插件配置中。
外部配置:插件豐富的實際部署描述符的模板。
Docker Compose配置:提供Docker組合文件,並在Kubernetes / OpenShift集羣上啓動Docker組合部署。
資源描述符能夠做爲指定骨架的外部YAML文件提供。而後,這個骨架由濃縮物填充,這些濃縮物能夠添加標籤等。這些文件中的Maven屬性將解析爲其值。使用此模型,您可使用每一個Kubernetes或OpenShift資源對象的全部靈活性,但仍然能夠得到添加構建信息的好處。
默認狀況下,Fabric8插件從src / main / fabric8目錄中讀取資源片斷。
fabric8:deploy是構建Docker鏡像的主要目標。
此目標旨在在部署以前運行fabric8:build和fabric8:資源。
它生成OpenShift資源並將它們部署到OpenShift服務器。