Chapter 3. Features

3.1. New and Changed features

3.1.1. Deploying example applications on OpenShift provisioned on IBM Power Systems infrastructure

To deploy the example applications on OpenShift environments provisioned on IBM Power Systems infrastructure, specify the relevant IBM Power Systems image name in the pom.xml file and commands.

Some of the example applications also require other products, such as Red Hat Data Grid to demonstrate the workflows. In this case, you must also change the image names of these products to their relevant IBM Power Systems image names in the YAML file of the example applications.

3.1.2. New Spring Boot OAuth2 Client and Resource Server Starters

A tested and verified build of OAuth2 Spring Security Starters replaces the Spring Boot Keycloak Starter included with previous Spring Boot releases. The set of new Starters introduced in this release includes the Spring Security OAuth2 Client Starter and the Spring Security OAuth2 Resource Server Starter. Both of the new Starters are supported by Red Hat.

3.1.3. Support for OpenJDK 8 and OpenJDK 11 RHEL 8 Universal Base Images (UBI8)

Spring Boot 2.3 introduces support for building and deploying Spring Boot applications to OpenShift with OCI-compliant Universal Base Images for Red Hat OpenJDK 8 and Red Hat OpenJDK 11 on RHEL 8. The RHEL 8 OpenJDK Universal Base Images replace the RHEL 8 OpenJDK builder images supported by Red Hat for use with earlier releases of Red Hat Build of Spring Boot. The previously supported RHEL 8 OpenJDK base images are no longer supported for use with Red Hat Build of Spring Boot.

3.1.4. Dekorate version upgraded to 2.4.1

In Spring Boot 2.3, the version of Dekorate included with the Spring Boot BOM is upgraded to 2.4.1.

New features in Dekorate 2.4.1
  • Configurable logging threshold

    You can control how verbose the Dekorate output is by setting the log-level threshold, using the io.dekorate.log.level system property-drawer. The following values are supported:

    • OFF
    • ERROR
    • WARN
    • INFO (default)
    • DEBUG
  • Configurable vcs properties

    In Dekorate 1.x, the vcs labels that were added to the generated manifests contained the property remote hard-coded as origin and URL converted to the http protocol.

    In Dekorate 2.4.1, the property remote is configurable and the URL is not converted to HTTP unless explicitly specified. You can configure these programmatically using io.dekorate.option.annotation.VcsOptions as follows:

    public @interface VcsOptions {  /**
       * The remote to use.
       *
       * @return the name of the remote, defaults to 'origin'.
       */
      String remote() default "origin";  /**
       * Flag that specifies that https is preferred.
       * When use vcs url that use 'git+ssh' will be converted to https.
       *
       * @return true, if https is prefered.
       */
      boolean httpsPreferred() default false;
    }

    You can also configure the property as follows:

    dekorate.option.vcs.remote=<your remote here>
    dekorate.option.vcs.https-preferred=true
  • Changes to port mapping

    The earlier versions of Dekorate did not allow port mapping on Service resources, except Ingress and Route resources. Because of this, the internal consumers of the Service had to know the exact containerPort an application used. Dekorate 2.4.1 provides port mapping to allow loose-coupling for HTTP and HTTPS.

    http services are now mapped to port 80 and https services to port 443. Port mapping is done using the following criteria:

    • Ports named http, web and http1 are mapped to port 80.
    • Ports named https or h2c are mapped to port 443.
    • Ports numbered 8080 are mapped to port 80.
    • Ports numbered 8443 are mapped to port 443.
Changes to annotation naming in Dekorate 2.4.1

The following table lists the changes in annotation names:

Dekorate 1.xDekorate 2.4.1

DockerBuild

EnableDockerBuild

S2iBuild

EnableS2iBuild

JibBuild

EnableJibBuild

Modules removed in Dekorate 2.4.1

The following modules have been removed from Dekorate in version 2.4.1:

  • service-catalog
  • halkyon
  • application-crd
  • CRD generator

    This functionality has been moved to the fabric8 kubernetes-client.

  • dependencies uberjar

    The earlier versions of Dekorate provided shadowed uberjar with all dependencies. From Dekorate 2.4.1 onward, the shadowed uberjar containing all dependencies is no longer available.

    If you use the libraries io.dekorate.deps.xxx, you must update these to the original packages.

3.1.5. Spring Boot metering labels for OpenShift

You can add metering labels to your Spring Boot pods and check Red Hat subscription details with the OpenShift Metering Operator.

Note

Do not add metering labels to any pods that an operator deploys and manages.

Spring Boot should use the following metering labels:

  • com.redhat.component-name: "Spring_Boot"
  • com.redhat.component-type: application
  • com.redhat.component-version: 2.3.10
  • com.redhat.product-name: "Red_Hat_Runtimes"
  • com.redhat.product-version: 2021-Q3

See Metering documentation for more information.

For more information on labels, see Understanding how to update labels on nodes.

3.1.6. Support for Spring Boot Runtime on IBM Power Systems

The Red Hat support for Spring Boot for ppc64le platform is supported only in OpenShift environments provisioned on IBM Power Systems infrastructure. Running an Spring Boot application on a stand-alone installation of RHEL on IBM Power Systems is not supported.

OpenJ9 Java images for IBM Power Systems and new images for products supported on IBM Power Systems are available in the Red Hat Container Catalog.

3.2. Deprecated features

No features or functionalities are marked as deprecated in this release.

3.3. Technology Preview

3.3.1. Dekorate build hooks for deploying Spring Boot applications to OpenShift Container Platform

You can use Dekorate to configure a Source-to-image build of your application that starts automatically after you compile your application with Maven. This functionality is provided as Technology Preview in Dekorate version 1.0.0 and later. Red Hat does not provide support for using this functionality in a production environment.