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。