<译文>RedHat OpenShift的Openjdk 基础镜像入门

2022-04-21 14:22:32 浏览数 (1)

刚刚发布了OpenShift Java S2I镜像,该镜像使您能够自动构建和部署Java微服务,并且现已公开提供。本文介绍如何开始使用Java S2I容器镜像,但首先,让我们讨论为什么拥有Java S2I镜像如此重要。

为什么选择Java S2I?

Java S2I镜像使开发人员只需指定应用程序源代码或编译后的Java二进制文件的位置,即可在OpenShift Container Platform中按需自动构建,部署和运行Java应用程序。

在许多情况下,这些Java应用程序都是可启动的“fat jar”,其中包括应用程序服务器(如嵌入式Tomcat)和其他框架的嵌入式版本。这样的开源项目的一个示例是Spring Boot,Eclipse Vert.x和WildFly Swarm。拥有专门为OpenShift设计的通用Java S2I镜像,通过包含许多有用的功能,使得可启动Fat Jar的开发变得更加容易,例如:

  • 简单而灵活: Java S2I镜像可以处理复杂的构建结构,但是默认情况下,它将假定成功构建后,可以在/target目录中使用要运行的JAR。如果不是这种情况,则可以使用环境变量ARTIFACT_DIR。同样,如果一个构建产生多个JAR文件(在本文后面的Eclipse Vert.x示例中就是这种情况),则可以使用环境变量JAVA_APP_JAR指定要运行的JAR文件。但是,在大多数情况下,您要做的就是直接指向源存储库(如Git仓库),Java S2I镜像将起作用。
  • 自动JVM内存配置:在OpenShift中,资源可能受到配额(quota)等的限制。如果存在这样的限制,则Java S2I镜像将自动采用JVM内存设置,以便JVM使用的内存不会超过允许的范围。依次使用有助于避免OutOfMemory异常。默认情况下启用此功能,但可以通过使用环境变量JAVA_OPTIONS中的-Xmx为堆设置固定值来禁用此功能 。
  • 通过Jolokia公开JMX监控信息:默认情况下,Java S2I镜像将启用Jolokia,该Jolokia通过HTTP公开JMX统计信息和操作。这样可以实现更详细的应用程序监控功能。默认情况下启用此功能,但可以通过将环境变量AB_JOLOKIA_OFF设置为true来禁用此功能。
  • 减小容器镜像的大小:为了使容器镜像的大小最小,可以在构建最终镜像之前让Java S2I镜像删除任何Maven repo 数据。默认情况下禁用此功能以支持增量构建。要从最终容器镜像中删除Maven工件,请将环境变量MAVEN_CLEAR_REPO设置为true

Java S2I入门

以下是分步说明,它们举例说明了使用Java S2I镜像的一种方法。

  1. 创建一个新项目或使用现有项目。
代码语言:javascript复制
oc new-project myproject
  1. 在开始使用Java S2I镜像之前,我们需要告诉OpenShift如何找到它。这是通过创建镜像流(ImageStream)来完成的。我在这里创建了一个镜像流定义,您可以下载和使用它。要将图像流添加到项目中,请运行以下命令:
代码语言:javascript复制
oc create -f openjdk-s2i-imagestream.json
  1. 打开openshift控制台并导航到您创建的项目,然后单击“添加到项目”。
  1. 在“浏览目录”窗口中,在搜索字段中键入openjdk
  1. 单击选择,为应用程序命名,然后指向包含应用程序源代码的git repo。

对于WildFly Swarm示例,可以使用:https://github.com/redhat-helloworld-msa/hola.git1

对于Eclipse Vert.x示例,可以使用:https://github.com/redhat-helloworld-msa/aloha.git2

对于Spring Boot示例,可以使用:https://github.com/redhat-helloworld-msa/ola.git

  1. 等待构建完成,然后单击路由(仪表板右上角的URL)。
  1. 对于WildFly示例应用程序,现在应该显示swagger控制台。
  1. 尝试将/api/hola添加到地址栏(对于Spring Boot示例,为/api/ola),其结果应类似于下图。
  1. 完成

我希望您喜欢Java S2I入门指南。

[1] 请注意,由于WildFly Swarm和Jolokia的已知问题,您还应该单击Show advanced…,然后将一个环境变量添加到Deployment Configuration中,名称为AB_JOLOKIA_OFF且值为true

[2] Eclipse Vert.x的示例项目生成了两个JAR文件,因此我们需要通过单击Show advanced…来告知要使用哪个Java S2I镜像,并将环境变量添加到Deployment Configuration中, 名称为JAVA_APP_JAR且值为aloha-fat.jar

0 人点赞