Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions .secrets.baseline
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"files": "^.secrets.baseline$",
"lines": "REPLACE|PWD_TRUST|SECRET|keyStore|secret"
},
"generated_at": "2026-01-13T17:13:54Z",
"generated_at": "2026-02-10T18:19:57Z",
"plugins_used": [
{
"name": "AWSKeyDetector"
Expand Down Expand Up @@ -397,7 +397,7 @@
"verified_result": null
}
],
"releases/26.0.0.1/full/helpers/build/configuration_snippets/keystore.xml": [
"releases/26.0.0.2/full/helpers/build/configuration_snippets/keystore.xml": [
{
"hashed_secret": "3cacc7bfac0a382c669a884c953d0401a689785d",
"is_secret": false,
Expand All @@ -407,7 +407,7 @@
"verified_result": null
}
],
"releases/26.0.0.1/full/helpers/build/configuration_snippets/truststore.xml": [
"releases/26.0.0.2/full/helpers/build/configuration_snippets/truststore.xml": [
{
"hashed_secret": "662e721e5b6494888b2792ea3b8a1fa310f6ea45",
"is_secret": false,
Expand All @@ -417,7 +417,7 @@
"verified_result": null
}
],
"releases/26.0.0.1/full/helpers/runtime/docker-server.sh": [
"releases/26.0.0.2/full/helpers/runtime/docker-server.sh": [
{
"hashed_secret": "ad321232b1e4e90a29208e1f70d06aad788caa16",
"is_secret": false,
Expand All @@ -427,7 +427,7 @@
"verified_result": null
}
],
"releases/26.0.0.1/full/server.xml": [
"releases/26.0.0.2/full/server.xml": [
{
"hashed_secret": "d1bbd0d69a08402e6c1fc2d1bc5a5ea5c3a7ea13",
"is_secret": false,
Expand All @@ -437,7 +437,7 @@
"verified_result": null
}
],
"releases/26.0.0.1/kernel-slim/helpers/build/configuration_snippets/keystore.xml": [
"releases/26.0.0.2/kernel-slim/helpers/build/configuration_snippets/keystore.xml": [
{
"hashed_secret": "3cacc7bfac0a382c669a884c953d0401a689785d",
"is_secret": false,
Expand All @@ -447,7 +447,7 @@
"verified_result": null
}
],
"releases/26.0.0.1/kernel-slim/helpers/build/configuration_snippets/truststore.xml": [
"releases/26.0.0.2/kernel-slim/helpers/build/configuration_snippets/truststore.xml": [
{
"hashed_secret": "662e721e5b6494888b2792ea3b8a1fa310f6ea45",
"is_secret": false,
Expand All @@ -457,7 +457,7 @@
"verified_result": null
}
],
"releases/26.0.0.1/kernel-slim/helpers/runtime/docker-server.sh": [
"releases/26.0.0.2/kernel-slim/helpers/runtime/docker-server.sh": [
{
"hashed_secret": "ad321232b1e4e90a29208e1f70d06aad788caa16",
"is_secret": false,
Expand Down
50 changes: 50 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,7 @@ The Liberty session caching feature builds on top of an existing technology call
* **Setup Infinispan Service** - Configuring Liberty session caching with Infinispan depends on an Infinispan service being available in your Kubernetes environment. It is preferable to create your Infinispan service by utilizing the [Infinispan Operator](https://infinispan.org/docs/infinispan-operator/main/operator.html). The [Infinispan Operator Tutorial](https://github.com/infinispan/infinispan-simple-tutorials/tree/main/infinispan-remote/operator/openshift) provides a good example of getting started with Infinispan in OpenShift.

* **Install Client Jars and Set INFINISPAN_SERVICE_NAME** - To enable Infinispan functionality in Liberty, the container image author can use the Dockerfile provided below. This Dockerfile assumes an Infinispan service name of `example-infinispan`, which is the default used in the [Infinispan Operator Tutorial](https://github.com/infinispan/infinispan-simple-tutorials/tree/main/infinispan-remote/operator/openshift). To customize your Infinispan service see [Creating Infinispan Clusters](https://infinispan.org/docs/infinispan-operator/main/operator.html#creating-clusters). The `INFINISPAN_SERVICE_NAME` environment variable must be set at build time as shown in the example Dockerfile, or overridden at image deploy time.

* **TIP** - If your Infinispan deployment and Liberty deployment are in different namespaces/projects, you will need to set the `INFINISPAN_HOST`, `INFINISPAN_PORT`, `INFINISPAN_USER`, and `INFINISPAN_PASS` environment variables in addition to the `INFINISPAN_SERVICE_NAME` environment variable. This is due to the Liberty deployment not having the access to the Infinispan service environment variables it requires.

```dockerfile
Expand Down Expand Up @@ -218,6 +219,55 @@ The Liberty session caching feature builds on top of an existing technology call
RUN configure.sh
```

* **Beta: Enhanced Infinispan Client Configuration** - The beta images include enhanced configurability for the Infinispan client setup. The [infinispan-client-setup.sh](releases/latest/beta/helpers/build/infinispan-client-setup.sh) script in beta supports the following environment variables to ensure compatibility between your Liberty features and the Infinispan client:
* `INFINISPAN_CLIENT_VERSION`
- Description: Sets the Infinispan client version. Refer to [Infinispan Release Notes](https://infinispan.org/release-notes) for major version and compatibility details.
- Default: `"15.2.6.Final"`
- **Automatic Dependency Management**: For Infinispan versions < 11.0.0 (e.g., `10.1.3.Final`, `10.1.9.Final`), reactive-streams and rxjava dependencies are automatically removed as they are not required. For versions >= 11.0.0, these dependencies are included as they are required by Liberty's sessionCache-1.0 feature.
* `INFINISPAN_USE_LATEST_PATCH`
- Description: When set to `"true"`, `INFINISPAN_CLIENT_VERSION` will resolve to the latest patch update within its specified major.minor version.
- Default: `"false"`
- Note: This will resolve the highest version string found in [Maven Central](https://mvnrepository.com/artifact/org.infinispan/infinispan-jcache), which may include non-final releases (e.g., .Dev01, .Beta, or .RC versions) if they are newer than the current .Final release.
* **TIP** - Liberty enforces specific API namespaces based on the Java EE / Jakarta EE specification level of your enabled features. When using Jakarta EE 10 features, the runtime environment is strictly `jakarta.*`, necessitating an Infinispan client that aligns with that specification. For further details on lifecycle and Java baseline requirements, refer to the [Infinispan Release Posts](https://infinispan.org/blog/tag/release/) and official [Download pages](https://infinispan.org/download/).

<details>
<summary><b>Infinispan Client Compatibility Table</b></summary>

| Major Version | Java Baseline | Namespace | Support Until | Notes |
| :--- | :--- | :--- | :--- | :--- |
| **16.0** | Java 17+ | **jakarta.* (EE 10+)** | 6 months after 17.0 (Full) | Release versions no longer end with .Final |
| **15.2** | Java 17+ | **jakarta.* (EE 10+)** | May 2026 (Full) | |
| **14.0** | Java 11+ | **javax.* / jakarta.*** | October 2027 (Limited) | |
| **13.0** | Java 8+ | **javax.*** | November 2026 (Limited) | |
| **10.x - 12.0**| Java 8 | **javax.*** | End of life | Unsupported |

</details>

Example Dockerfile for beta with custom Infinispan version:
```dockerfile
### Infinispan Session Caching (Beta) ###
FROM icr.io/appcafe/open-liberty:beta AS infinispan-client

# Specify Infinispan client version (optional, defaults to 15.2.6.Final)
ENV INFINISPAN_CLIENT_VERSION=14.0.5.Final
# Optionally resolve latest patch version
# ENV INFINISPAN_USE_LATEST_PATCH=true

USER root
RUN infinispan-client-setup.sh
USER 1001

FROM icr.io/appcafe/open-liberty:beta AS open-liberty-infinispan

# Copy Infinispan client jars to Open Liberty shared resources
COPY --chown=1001:0 --from=infinispan-client /opt/ol/wlp/usr/shared/resources/infinispan /opt/ol/wlp/usr/shared/resources/infinispan

ENV INFINISPAN_SERVICE_NAME=example-infinispan

# This script will add the requested XML snippets and grow image to be fit-for-purpose
RUN configure.sh
```

* **Mount Infinispan Secret** - Finally, the Infinispan generated secret must be mounted as a volume under the mount point of `/platform/bindings/infinispan/secret/` on Liberty containers. The default , for versions latest and 20.0.0.6+, of `/platform/bindings/infinispan/secret/` can to be overridden by setting the `LIBERTY_INFINISPAN_SECRET_DIR` environment variable. When using the Infinispan Operator, this secret is automatically generated as part of the Infinispan service with the name of `<INFINISPAN_CLUSTER_NAME>-generated-secret`. For the mounting of this secret to succeed, the Infinispan Operator and Liberty must share the same namespace. If they do not share the same namespace, the `INFINISPAN_HOST`, `INFINISPAN_PORT`, `INFINISPAN_USER`, and `INFINISPAN_PASS` environment variables can be used instead(see the Dockerfile example above). For an example of mounting this secret, review the `volumes` and `volumeMounts` portions of the YAML below.

```yaml
Expand Down
76 changes: 52 additions & 24 deletions docs/icr-images.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

Open Liberty container images are available from the IBM Container Registry (ICR) at `icr.io/appcafe/open-liberty`. Our recommendation is to use ICR instead of Docker Hub since ICR doesn't impose rate limits on image pulls. Images can be pulled from ICR without authentication. Only images with Universal Base Image (UBI) as the Operating System are available in ICR.

The images for the latest Liberty release and the last two quarterly releases (versions ending in _.3_, _.6_, _.9_ and _.12_) are available and are refreshed regularly (every 1-2 weeks) to include fixes for the operating system (OS) and Java.
The images for the latest Liberty release and the last three quarterly releases (versions ending in _.3_, _.6_, _.9_ and _.12_) are available and are refreshed regularly (every 1-2 weeks) to include fixes for the operating system (OS) and Java.

Available image tags are listed below. The tags use the following naming convention. For more information on tags, see [Container image tags naming conventions](https://openliberty.io/docs/latest/container-images.html#tags) documentation.
```
Expand All @@ -20,7 +20,7 @@ The `beta` tag is based on UBI 9 minimal and the latest Java JRE and provides th

Append a tag to `icr.io/appcafe/open-liberty` to pull a specific image. For example:
```
icr.io/appcafe/open-liberty:25.0.0.9-kernel-slim-java17-openj9-ubi
icr.io/appcafe/open-liberty:25.0.0.12-kernel-slim-java25-openj9-ubi-minimal
```

Available images can be listed using [IBM Cloud CLI](https://cloud.ibm.com/docs/cli?topic=cli-getting-started). Log in with your IBMid prior to running the following commands. Note that authentication is only required to list the images. **Images can be pulled from ICR without authentication**:
Expand All @@ -31,7 +31,7 @@ ibmcloud cr images --restrict appcafe/open-liberty

## Latest version

The following tags include the most recent Open Liberty version: `25.0.0.10`
The following tags include the most recent Open Liberty version: `26.0.0.1`

```
kernel-slim-java25-openj9-ubi-minimal
Expand Down Expand Up @@ -69,32 +69,60 @@ The `beta` tag includes all the features and capabilities from the most recent r
beta
```

## 25.0.0.10
## 26.0.0.1

```
25.0.0.10-kernel-slim-java25-openj9-ubi-minimal
25.0.0.10-kernel-slim-java21-openj9-ubi-minimal
25.0.0.10-kernel-slim-java17-openj9-ubi-minimal
25.0.0.10-kernel-slim-java11-openj9-ubi-minimal
25.0.0.10-kernel-slim-java8-openj9-ubi-minimal
25.0.0.10-kernel-slim-java8-ibmjava-ubi-minimal
26.0.0.1-kernel-slim-java25-openj9-ubi-minimal
26.0.0.1-kernel-slim-java21-openj9-ubi-minimal
26.0.0.1-kernel-slim-java17-openj9-ubi-minimal
26.0.0.1-kernel-slim-java11-openj9-ubi-minimal
26.0.0.1-kernel-slim-java8-openj9-ubi-minimal
26.0.0.1-kernel-slim-java8-ibmjava-ubi-minimal

25.0.0.10-kernel-slim-java17-openj9-ubi
25.0.0.10-kernel-slim-java11-openj9-ubi
25.0.0.10-kernel-slim-java8-openj9-ubi
25.0.0.10-kernel-slim-java8-ibmjava-ubi
26.0.0.1-kernel-slim-java17-openj9-ubi
26.0.0.1-kernel-slim-java11-openj9-ubi
26.0.0.1-kernel-slim-java8-openj9-ubi
26.0.0.1-kernel-slim-java8-ibmjava-ubi

25.0.0.10-full-java25-openj9-ubi-minimal
25.0.0.10-full-java21-openj9-ubi-minimal
25.0.0.10-full-java17-openj9-ubi-minimal
25.0.0.10-full-java11-openj9-ubi-minimal
25.0.0.10-full-java8-openj9-ubi-minimal
25.0.0.10-full-java8-ibmjava-ubi-minimal
26.0.0.1-full-java25-openj9-ubi-minimal
26.0.0.1-full-java21-openj9-ubi-minimal
26.0.0.1-full-java17-openj9-ubi-minimal
26.0.0.1-full-java11-openj9-ubi-minimal
26.0.0.1-full-java8-openj9-ubi-minimal
26.0.0.1-full-java8-ibmjava-ubi-minimal

25.0.0.10-full-java17-openj9-ubi
25.0.0.10-full-java11-openj9-ubi
25.0.0.10-full-java8-openj9-ubi
25.0.0.10-full-java8-ibmjava-ubi
26.0.0.1-full-java17-openj9-ubi
26.0.0.1-full-java11-openj9-ubi
26.0.0.1-full-java8-openj9-ubi
26.0.0.1-full-java8-ibmjava-ubi
```

## 25.0.0.12

```
25.0.0.12-kernel-slim-java25-openj9-ubi-minimal
25.0.0.12-kernel-slim-java21-openj9-ubi-minimal
25.0.0.12-kernel-slim-java17-openj9-ubi-minimal
25.0.0.12-kernel-slim-java11-openj9-ubi-minimal
25.0.0.12-kernel-slim-java8-openj9-ubi-minimal
25.0.0.12-kernel-slim-java8-ibmjava-ubi-minimal

25.0.0.12-kernel-slim-java17-openj9-ubi
25.0.0.12-kernel-slim-java11-openj9-ubi
25.0.0.12-kernel-slim-java8-openj9-ubi
25.0.0.12-kernel-slim-java8-ibmjava-ubi

25.0.0.12-full-java25-openj9-ubi-minimal
25.0.0.12-full-java21-openj9-ubi-minimal
25.0.0.12-full-java17-openj9-ubi-minimal
25.0.0.12-full-java11-openj9-ubi-minimal
25.0.0.12-full-java8-openj9-ubi-minimal
25.0.0.12-full-java8-ibmjava-ubi-minimal

25.0.0.12-full-java17-openj9-ubi
25.0.0.12-full-java11-openj9-ubi
25.0.0.12-full-java8-openj9-ubi
25.0.0.12-full-java8-ibmjava-ubi
```

## 25.0.0.9
Expand Down
Empty file.
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ FROM ibmjava:8-ubi AS getRuntime

USER root

ARG LIBERTY_VERSION=26.0.0.1
ARG LIBERTY_SHA=3ae4f8ddca8dd363663792245edbb23c555d735e
ARG LIBERTY_VERSION=26.0.0.2
ARG LIBERTY_SHA=f2384de851755ae7b0c39b0f5876748f50053a3d
ARG LIBERTY_DOWNLOAD_URL=https://repo1.maven.org/maven2/io/openliberty/openliberty-runtime/$LIBERTY_VERSION/openliberty-runtime-$LIBERTY_VERSION.zip

ARG VERBOSE=false
Expand All @@ -28,8 +28,8 @@ FROM ibmjava:8-ubi

USER root

ARG LIBERTY_VERSION=26.0.0.1
ARG LIBERTY_BUILD_LABEL=cl260120260112-1902
ARG LIBERTY_VERSION=26.0.0.2
ARG LIBERTY_BUILD_LABEL=cl260220260207-1901

ARG OPENJ9_SCC=true
ARG VERBOSE=false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ FROM icr.io/appcafe/ibm-semeru-runtimes:open-11-jdk-ubi AS getRuntime

USER root

ARG LIBERTY_VERSION=26.0.0.1
ARG LIBERTY_SHA=3ae4f8ddca8dd363663792245edbb23c555d735e
ARG LIBERTY_VERSION=26.0.0.2
ARG LIBERTY_SHA=f2384de851755ae7b0c39b0f5876748f50053a3d
ARG LIBERTY_DOWNLOAD_URL=https://repo1.maven.org/maven2/io/openliberty/openliberty-runtime/$LIBERTY_VERSION/openliberty-runtime-$LIBERTY_VERSION.zip

ARG VERBOSE=false
Expand All @@ -28,8 +28,8 @@ FROM icr.io/appcafe/ibm-semeru-runtimes:open-11-jdk-ubi

USER root

ARG LIBERTY_VERSION=26.0.0.1
ARG LIBERTY_BUILD_LABEL=cl260120260112-1902
ARG LIBERTY_VERSION=26.0.0.2
ARG LIBERTY_BUILD_LABEL=cl260220260207-1901

ARG OPENJ9_SCC=true
ARG VERBOSE=false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ FROM icr.io/appcafe/ibm-semeru-runtimes:open-17-jdk-ubi AS getRuntime

USER root

ARG LIBERTY_VERSION=26.0.0.1
ARG LIBERTY_SHA=3ae4f8ddca8dd363663792245edbb23c555d735e
ARG LIBERTY_VERSION=26.0.0.2
ARG LIBERTY_SHA=f2384de851755ae7b0c39b0f5876748f50053a3d
ARG LIBERTY_DOWNLOAD_URL=https://repo1.maven.org/maven2/io/openliberty/openliberty-runtime/$LIBERTY_VERSION/openliberty-runtime-$LIBERTY_VERSION.zip

ARG VERBOSE=false
Expand All @@ -28,8 +28,8 @@ FROM icr.io/appcafe/ibm-semeru-runtimes:open-17-jdk-ubi

USER root

ARG LIBERTY_VERSION=26.0.0.1
ARG LIBERTY_BUILD_LABEL=cl260120260112-1902
ARG LIBERTY_VERSION=26.0.0.2
ARG LIBERTY_BUILD_LABEL=cl260220260207-1901

ARG OPENJ9_SCC=true
ARG VERBOSE=false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ FROM icr.io/appcafe/ibm-semeru-runtimes:open-8-jdk-ubi AS getRuntime

USER root

ARG LIBERTY_VERSION=26.0.0.1
ARG LIBERTY_SHA=3ae4f8ddca8dd363663792245edbb23c555d735e
ARG LIBERTY_VERSION=26.0.0.2
ARG LIBERTY_SHA=f2384de851755ae7b0c39b0f5876748f50053a3d
ARG LIBERTY_DOWNLOAD_URL=https://repo1.maven.org/maven2/io/openliberty/openliberty-runtime/$LIBERTY_VERSION/openliberty-runtime-$LIBERTY_VERSION.zip

ARG VERBOSE=false
Expand All @@ -28,8 +28,8 @@ FROM icr.io/appcafe/ibm-semeru-runtimes:open-8-jdk-ubi

USER root

ARG LIBERTY_VERSION=26.0.0.1
ARG LIBERTY_BUILD_LABEL=cl260120260112-1902
ARG LIBERTY_VERSION=26.0.0.2
ARG LIBERTY_BUILD_LABEL=cl260220260207-1901

ARG OPENJ9_SCC=true
ARG VERBOSE=false
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:26.0.0.1-kernel-slim-java8-ibmjava-ubi-minimal
ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:26.0.0.2-kernel-slim-java8-ibmjava-ubi-minimal

FROM $PARENT_IMAGE AS installBundle

ARG VERBOSE=false
ARG LIBERTY_VERSION=26.0.0.1
ARG FEATURES_SHA=d416995e1d75e0c7ff5c7fd0214bf1ae34ecfb98
ARG LIBERTY_VERSION=26.0.0.2
ARG FEATURES_SHA=4ed27026f2072c0ec07f1c23d13d45abe38809de

# If there is a local copy of the repository use that instead
COPY resources/ /tmp/
Expand Down Expand Up @@ -33,7 +33,7 @@ RUN set -eux; \
rm -rf /output/workarea /output/logs; \
find /opt/ol/wlp ! -perm -g=rw -print0 | xargs -r -0 chmod g+rw;

ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:26.0.0.1-kernel-slim-java8-ibmjava-ubi-minimal
ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:26.0.0.2-kernel-slim-java8-ibmjava-ubi-minimal
FROM $PARENT_IMAGE
ARG VERBOSE=false

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:26.0.0.1-kernel-slim-java11-openj9-ubi-minimal
ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:26.0.0.2-kernel-slim-java11-openj9-ubi-minimal

FROM $PARENT_IMAGE AS installBundle

ARG VERBOSE=false
ARG LIBERTY_VERSION=26.0.0.1
ARG FEATURES_SHA=d416995e1d75e0c7ff5c7fd0214bf1ae34ecfb98
ARG LIBERTY_VERSION=26.0.0.2
ARG FEATURES_SHA=4ed27026f2072c0ec07f1c23d13d45abe38809de

# If there is a local copy of the repository use that instead
COPY resources/ /tmp/
Expand Down Expand Up @@ -33,7 +33,7 @@ RUN set -eux; \
rm -rf /output/workarea /output/logs; \
find /opt/ol/wlp ! -perm -g=rw -print0 | xargs -r -0 chmod g+rw;

ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:26.0.0.1-kernel-slim-java11-openj9-ubi-minimal
ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:26.0.0.2-kernel-slim-java11-openj9-ubi-minimal
FROM $PARENT_IMAGE
ARG VERBOSE=false

Expand Down
Loading