JHipster Registry

Overview

JHipster Registry是JHipster團隊提供的應用程式。與JHipster產生器一樣,它是一個開源,Apache 2-licensed應用程式,其源程式碼在JHipster組織的GitHub上可用:jhipster/jhipster-registry

JHipster Registry具有三個主要功能:

  • 它是一個Eureka服務,作為應用程式的發現伺服器。該服務器維護並分發可用應用程式實例的動態清單,微服務隨後使用這些清單來執行HTTP請求路由和負載平衡。
  • 它是一個Spring Cloud設定服務,為所有應用程式執行時提供設定。
  • 它還是一台管理服務器,具有用於監視和管理應用程式的儀表板。

所有這些功能都透過基於Angular的現代使用者介面,打包到一個便利的應用程式中。

目錄

  1. 安裝
  2. 使用Eureka進行服務發現
  3. 使用Spring Cloud Config進行應用程式設定
  4. 管理儀表板
  5. 保護JHipster Registry

安裝

Spring設定檔案

JHipster Registry使用常規的JHipsterdevprodSpring設定檔案,以及Spring Cloud Config的標準composite(請參閱官方文件)。

結果是:

  • 使用dev設定檔案將與devcomposite設定檔案一起執行JHipster Registry。dev設定檔案將從檔案系統載入Spring Cloud設定,以查詢與src/main/resources/config/bootstrap.yml檔案中定義的執行目錄相對的central-config目錄。

  • 使用prod設定檔案將執行帶有prod設定檔案和composite設定檔案的JHipster Registry。prod設定檔案將從Git儲存庫載入Spring Cloud設定,該儲存庫預設為https://github.com/jhipster/jhipster-registry-sample-config。在實際使用中,應該透過在src/main/resources/config/bootstrap-prod.yml檔案中重新設定它,或者透過重新設定spring.cloud.config.server.compositeSpring屬性來更改此儲存庫。

JHipster Registry執行後,您可以在Configuration > Cloud Config選單中檢查其設定。請注意,如果您無法登入,則可能是因為JWT簽名金鑰未正確設定,這表明您的設定不正確。

使用預打包的JAR檔案

JHipster Registry在我們的發行頁面頁面上提供了可執行的JAR檔案。

下載JAR檔案,並使用您要使用的設定檔案(通常是JHipster應用程式)執行它(請參閱關於設定檔案的上一節)。例如,要使用儲存在central-config目錄中的Spring Cloud Config設定執行它:

java -jar ./jhipster-registry-<version>.jar --spring.security.user.password=admin --jhipster.security.authentication.jwt.secret=my-secret-key-which-should-be-changed-in-production-and-be-base64-encoded --spring.cloud.config.server.composite.0.type=native --spring.cloud.config.server.composite.0.search-locations=file:./central-config

請注意,透過使用JHIPSTER_SECURITY_AUTHENTICATION_JWT_SECRET環境變數或使用如上所述的引數,向啟動時的registry提供JWT金鑰很重要。另一種可能的方法是在集中式設定源的application.yml檔案中設定此值(該檔案在啟動時由所有應用程式(包括registry)載入)。

請注意,自JHipster 5.3.0起,我們有了一個新的jhipster.security.authentication.jwt.base64-secret屬性,該屬性更安全,但是由於您可能仍使用舊版本,因此我們也使用jhipster.security.authentication.jwt.secret屬性。有關這些屬性的更多訊息,請參考我們的安全性文件

同樣,要使用prod設定檔案執行registry,請根據您的設定調整引數,例如:

java -jar ./jhipster-registry-<version>.jar --spring.profiles.active=prod --spring.security.user.password=admin --jhipster.security.authentication.jwt.secret=my-secret-key-which-should-be-changed-in-production-and-be-base64-encoded --spring.cloud.config.server.composite.0.type=git --spring.cloud.config.server.composite.0.uri=https://github.com/jhipster/jhipster-registry-sample-config

java -jar ./jhipster-registry-<version>.jar --spring.profiles.active=prod --spring.security.user.password=admin --jhipster.security.authentication.jwt.secret=my-secret-key-which-should-be-changed-in-production-and-be-base64-encoded --spring.cloud.config.server.composite.0.type=git --spring.cloud.config.server.composite.0.uri=https://github.com/jhipster/jhipster-registry --spring.cloud.config.server.composite.0.search-paths=central-config

從原始碼構造

可以直接從jhipster/jhipster-registry克隆/fork/下載JHipster Registry。由於JHipster Registry也是JHipster生成的應用程式,因此您可以像其他任何JHipster應用程式一樣執行它:

  • 使用./mvnw(用於Java伺服器)在開發環境中執行它,並使用yarn start(用於管理前端)執行,預設情況下它將使用dev設定檔案,並且可以從http://127.0.0.1:8761/訪問。

  • 使用./mvnw -Pprod package將其打包到生產環境中,並生成通常的JHipster可執行JAR檔案。然後,您可以使用devprod Spring設定檔案執行JAR檔案,例如:./jhipster-registry-<version>.jar --spring.profiles.active=prod

請注意,要使用devcomposite設定檔案,您需要在設定中包含一個central-config目錄,因此,如果執行java -jar ./jhipster-registry-<version>.jar --spring.profiles.active=dev,您將需要建立該目錄。

使用Docker

如果您希望從Docker映象執行JHipster Registry,則可以在Docker Hub上的jhipster/jhipster-registry上找到它。每個微服務src/main/docker目錄中已經存在一個用於執行該映象的docker-compose檔案:

  • 執行docker-compose -f src/main/docker/jhipster-registry.yml up以啟動JHipster Registry。它將在Docker主機的連接埠8761上可用,因此如果它在您的電腦上執行,​​則應位於http://127.0.0.1:8761/

請閱讀我們的Docker Compose文件以獲取有關將JHipster Registry與Docker Compose結合使用的更多訊息。

在雲端執行

您可以在雲上執行JHipster Registry實例。。這在生產中是必需的,但在開發中也很有用(無需在筆記型電腦上執行它)。

請閱讀生產中的微服務文件,以瞭解如何將JHipster Registry部署到Cloud Foundry或Heroku。

使用Eureka進行服務發現

JHipster登錄檔是Netflix Eureka伺服器,它為所有應用程式提供服務發現。

  • 這對於微服務體系結構非常有用:這是閘道器如何知道哪些微服務可用以及哪些實例已啟動的方式
  • 對於所有應用程式,包括monoliths,這是Hazelcast分散式快取可以自動擴充套件的方式,請參見Hazelcast快取文件

使用Spring Cloud Config進行應用程式設定

JHipster Registry是Spring Config Server:啟動應用程式時,它們將首先連線到JHipster Registry以獲取其設定。閘道器和微服務都是如此。

此設定是Spring Boot設定,就像在JHipsterapplication-*.yml檔案中找到的設定一樣,但是它儲存在中央伺服器中,因此更易於管理。

啟動時,您的閘道器和微服務應用程式將查詢Registry的設定服務器,並用在那裡定義的屬性覆蓋其本地屬性。

可以使用兩種設定源(由spring.cloud.config.server.composite屬性定義):

  • native設定,開發中預設設定(使用JHipsterdev設定檔案),並且使用本地檔案系統。
  • Git設定,該設定在生產中預設使用(使用JHipster prod設定檔案),並將設定儲存在Git伺服器中。這允許使用常用的Git工具來標記,分支或回滾設定,這些工具在此用例中非常強大。

要管理集中式設定,您需在設定源中新增appname-profile.yml檔案,其中appnameprofile對應於您要設定的服務的應用程式名稱和當前設定檔案。 例如,在gateway-prod.yml檔案中新增屬性將僅為以prod設定檔案啟動的名為gateway的應用程式設定這些屬性。此外,將為所有應用程式設定application[-dev|prod].yml中定義的屬性。

由於閘道器路由是使用Spring Boot設定的,因此也可以使用Spring Config Server對其進行管理,例如,您可以將應用程式app1-v1對映到v1分支中的 /app1 URL,並將app1-v2對映到/app1 v2分支中的URL。這是升級微服務的好方法,而最終使用者不會停機。

使用加密的設定值

JHipster Registry具有特定的configuration > encryption頁面,可對設定值進行加密和解密。

要加密設定值(例如,資料庫密碼),您需要:

  • 下載JCE並按照下載檔案中的說明進行安裝(僅在使用Oracle JDK時才需要)。
  • bootstrap.yml(而不是application.yml)中設定encrypt.key屬性,或在對稱金鑰密碼中使用ENCRYPT_KEY環境變數。

如果一切設定正確,則您應該能夠使用特定的Configuration > Encryption頁面,並且還可以將您要處理的文字傳送到/config/encrypt/config/decrypt端點的POST請求中,並在請求的body中進行操作。

For example: curl localhost:8761/config/encrypt -d mypassword 例如:curl localhost:8761/config/encrypt -d mypassword

密文必須以password= '{cipher}myciphertextafterencryotion'的形式放置在任何*.yml設定檔案中,並且在設定服務器將其傳送到用戶端之前,它將被解密。這樣,您的設定檔案(儲存在Git或『本地』儲存在檔案系統中)就沒有純明文值。

有關更多訊息,請參閱Spring Cloud Config的加密和解密文件

管理儀表板

JHipster Registry提供了用於所有應用程式型別的管理儀表板。一旦應用程式在Eureka伺服器上註冊,它就會在儀表板中可見。

為了從應用程式訪問敏感訊息,JHipster Registry將使用JWT令牌(這就是JHipster Registry僅適用於使用JWT的應用程式的原因)。用於簽署請求的JWT金鑰對於應用程式和JHipster Registry應該是相同的:預設情況下,JHipster Registry透過Spring Cloud Config設定應用程式,這應該是開箱即用的,因為它將傳送相同的金鑰給所有應用程式。

指標儀表板

指標儀表板使用Micrometer來提供應用程式效能的詳細檢視。

它提供以下指標:

  • JVM狀態
  • HTTP請求
  • cache使用率
  • database連線池

透過單擊JVM執行緒指標旁邊的Expand按鈕,您將獲得正在執行的應用程式的堆疊跟蹤,這對於找出阻塞的執行緒非常有用。

注意:當我們切換JHipster Registry以監視來自Micrometer的度量標準而不是Dropwizard度量標準時,這意味著應將所有使用5.7.2或更早版本生成的JHipster應用程式遷移到Micrometer,以使用JHipster Registry進行監視。如果您不想遷移應用程式,請使用JHipster Registry v4.0.6或更舊的版本。

要遷移應用程式,可以使用JHipster升級子產生器

健康狀況儀表板

執行狀況儀表板使用Spring Boot Actuator的執行狀況端點來提供有關應用程式各個部分的執行狀況訊息。 Spring Boot Actuator提供了許多開箱即用的健康檢查,您可以新增特定於應用程式的健康檢查。

設定儀表板

設定儀表板使用Spring Boot Actuator的設定端點來提供當前應用程式的Spring設定的完整檢視。

日誌儀表板

日誌儀表板允許在執行時管理正在執行的應用程式的Logback設定。 您可以透過單擊按鈕來更改Java套件的日誌級別,這在開發和生產中都非常方便。

保護JHipster Registry

預設情況下,JHipster Registry是安全的。您可以使用普通JHipster應用程式中使用的”admin/admin”登入名和密碼登入。

應用程式也使用同一”admin”使用者連線到JHipster Registry,但使用了HTTP Basic身份驗證。因此,如果您的微服務無法訪問登錄檔,並且看到一些”401 authentication error”訊息,那是因為您錯誤地設定了那些應用程式。

為了保護您的JHipster Registry,請執行以下操作:

  • 您必須更改預設的”admin”密碼。此密碼是使用標準的Spring Boot屬性spring.security.user.password設定的,因此您可以使用常規的Spring Boot機制對其進行修改:您可以修改專案的application-*.yml檔案,或新增SPRING_SECURITY_USER_PASSWORD環境變數。Docker Compose子產生器使用環境變數方法。
  • 由於您的應用程式將使用HTTP連線到registry,因此保護該連線通道非常重要。有很多方法可以做到這一點,最簡單的方法就是使用HTTPS。