Soa in Kubenetes
Soa in Kubenetes
Oracle SOA Suite is currently supported only for non-production use in Docker and
Kubernetes. The information provided in this document is a preview for early
adopters who wish to experiment with Oracle SOA Suite in Kubernetes before it is
supported for production use.
Contents
Introduction
Prerequisites for SOA Suite domains
Limitations
Obtaining the SOA Suite Docker image
Creating a SOA Suite Docker image
Con�guring access to your database
Running the Repository Creation Utility to set up your database schemas
Create a Kubernetes Secret with the RCU credentials
Creating a SOA domain
Con�guring a load balancer for SOA Suite domains
Monitoring a SOA domain
Introduction
The operator supports deployment of SOA Suite components such as Oracle Service-
Oriented Architecture (SOA), Oracle Service Bus (OSB), and Oracle Enterprise Scheduler
(ESS). Currently the operator supports these different domain types:
running SOA Suite domains with the operator. Other than those considerations listed
here, SOA Suite domains work in the same way as FMW Infrastructure domains and
WebLogic Server domains.
In this release, SOA Suite domains are supported using the “domain on a persistent
volume” domain home source type only, where the domain home is located in a
PersistentVolume (PV).
Limitations
Compared to running a WebLogic Server domain in Kubernetes using the operator, the
following limitations currently exist for SOA Suite domains:
Note
For early access customers, with bundle patch access, we recommend that you
build and use the Oracle SOA Suite Docker image with the latest bundle patch for
Oracle SOA. The Oracle SOA Suite Docker image in
container-registry.oracle.com does not have the bundle patch installed.
However, if you do not have access to the bundle patch, you can obtain the Oracle
SOA Suite Docker image without the bundle patch from
container-registry.oracle.com , as described below.
To pull an image from the Oracle Container Registry, in a web browser, navigate to
https://container-registry.oracle.com and log in using the Oracle Single Sign-On
authentication service. If you do not already have SSO credentials, at the top of the
page, click the Sign In link to create them.
Use the web interface to accept the Oracle Standard Terms and Restrictions for the
Oracle software images that you intend to deploy. Your acceptance of these terms are
stored in a database that links the software images to your Oracle Single Sign-On login
credentials.
3 of 13 10/29/20, 11:17 PM
Manage SOA domains :: WebLogic Kubernetes ... https://oracle.github.io/weblogic-kubernetes-op...
You can also create a Docker image containing the Oracle SOA Suite binaries. This is the
recommended approach if you have access to the Oracle SOA bundle patch.
Please consult the README �le for important prerequisite steps, such as building or
pulling the Server JRE Docker image, Oracle FMW Infrastructure Docker image, and
downloading the Oracle SOA Suite installer and bundle patch binaries.
For the Fusion Middleware Infrastructure image, you must install the required patch to
use this image with the Oracle WebLogic Kubernetes operator. A pre-built (and already
patched) Fusion Middleware Infrastructure image,
container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.3-200109 ,
is available at container-registry.oracle.com . We recommend that you pull and
rename this image to build the Oracle SOA Suite image.
Warning
You can also build the Fusion Middleware Infrastructure image with the required patch
(29135930) applied. A sample is provided that demonstrates how to create a Docker
image with the necessary patch installed. Use this patched Fusion Middleware
Infrastructure image for building the Oracle SOA Suite image.
Follow these steps to build the necessary images - a patched Fusion Middleware
Infrastructure image, and then the SOA Suite image as a layer on top of that:
4 of 13 10/29/20, 11:17 PM
Manage SOA domains :: WebLogic Kubernetes ... https://oracle.github.io/weblogic-kubernetes-op...
$ cd docker-images/OracleFMWInfrastructure/dockerfiles
$ sh buildDockerImage.sh -v 12.2.1.3 -s
$ cd docker-images/OracleFMWInfrastructure/samples/12213-patch-
fmw-for-k8s
$ ./build.sh
Download the Oracle SOA Suite installer, latest Oracle SOA bundle patch
( 30638100 or later) and the patch 27117282 from the Oracle Technology Network
or e-delivery.
NOTE: Copy the installer binaries to the same location as the Docker�le
and the patch ZIP �les under the
docker-images/OracleSOASuite/dockerfiles/12.2.1.3/patches
5 of 13 10/29/20, 11:17 PM
Manage SOA domains :: WebLogic Kubernetes ... https://oracle.github.io/weblogic-kubernetes-op...
Create the Oracle SOA Suite image by running the provided script:
$ cd docker-images/OracleSOASuite/dockerfiles
$ ./buildDockerImage.sh -v 12.2.1.3 -s
You can use this image to run the Repository Creation Utility and to run your
domain using the “domain on a persistent volume” model.
Before creating a domain, you will need to set up the necessary schemas in your
database.
For testing and development, you may choose to run your database inside Kubernetes
or outside of Kubernetes.
Warning
The Oracle Database Docker images are supported for non-production use only. For
more details, see My Oracle Support note: Oracle Support for Database Running on
6 of 13 10/29/20, 11:17 PM
Manage SOA domains :: WebLogic Kubernetes ... https://oracle.github.io/weblogic-kubernetes-op...
When running the Oracle database in Kubernetes, you have an option to attach
PersistentVolumes (PV) so that the database storage will be persisted across database
restarts. If you prefer not to persist the database storage, follow the instructions in this
document to set up a database in a container with no PersistentVolume (PV) attached.
These instructions will set up the database in a container with the PersistentVolume
(PV) attached. If you chose not to use persistent storage, please go to the
RCU creation step.
Note
When creating the PV and PVC for the database, make sure that you use a different
name and storage class for the PV and PVC for the domain. The name is set using
the value of the baseName �eld in create-pv-pvc-inputs.yaml .
Start the database and database service using the following commands:
```bash
$ cd weblogic-kubernetes-operator/kubernetes/samples/scripts/create-
soa-domain/domain-home-on-pv/create-database
$ kubectl create -f db-with-pv.yaml
```
The database will take several minutes to start the �rst time, while it performs setup
operations. You can watch the log to see its progress using this command:
A log message will indicate when the database is ready. Also, you can verify the
database service status using this command:
To create the database schemas for Oracle SOA Suite, run the create-rcu-schema.sh
script as described here.
$ cd weblogic-kubernetes-operator/kubernetes/samples/scripts/create-
rcu-schema
$ ./create-rcu-schema.sh \
8 of 13 10/29/20, 11:17 PM
Manage SOA domains :: WebLogic Kubernetes ... https://oracle.github.io/weblogic-kubernetes-op...
-d oracle-db.soans.svc.cluster.local:1521/devpdb.k8s \
-i container-registry.oracle.com/middleware/soasuite:12.2.1.3
For SOA domains, the create-rcu-schema.sh script supports the following domain
types soa,osb,soaosb,soaess,soaessosb . You must specify one of these using the -t
�ag.
You need to make sure that you maintain the association between the database
schemas and the matching domain just like you did in a non-Kubernetes environment.
There is no speci�c functionality provided to help with this.
Dropping schemas
If you want to drop the schema, you can use the drop-rcu-schema.sh script as
described here.
$ cd weblogic-kubernetes-operator/kubernetes/samples/scripts/create-
rcu-schema
$ ./drop-rcu-schema.sh \
-s SOA1 \
-t soaessosb \
-d oracle-db.soans.svc.cluster.local:1521/devpdb.k8s
For SOA domains, the drop-rcu-schema.sh script supports the domain types
soa,osb,soaosb,soaess,soaessosb . You must specify one of these using the -t �ag.
Use the provided sample script to create the secret as shown below:
$ cd kubernetes/samples/scripts/create-rcu-credentials
9 of 13 10/29/20, 11:17 PM
Manage SOA domains :: WebLogic Kubernetes ... https://oracle.github.io/weblogic-kubernetes-op...
-p Welcome1 \
-a sys \
-q Oradoc_db1 \
-d soainfra \
-n soans \
-s soainfra-rcu-credentials
The schema owner user name ( -u ) must be the schemaPrefix value followed by
an underscore and a component name, for example SOA1_SOAINFRA .
The schema owner password ( -p ) will be the password you provided for regular
schema users during RCU creation.
The database administration user ( -u ) and password ( -q ).
The domainUID for the domain ( -d ).
The namespace the domain is in ( -n ); if omitted, then default is assumed.
The name of the secret ( -s ).
You can con�rm the secret was created as expected with the kubectl get secret
command. An example is shown below, including the output:
Now that you have your Docker images and you have created your RCU schemas, you
are ready to create your domain. To continue, follow the instructions in the
SOA Domain sample.
As part of the ingress-per-domain setup for Oracle SOA and Oracle Service Bus
domains, the values.yaml �le (under the ingress-per-domain directory) needs to be
updated with the appropriate values from your environment. A sample values.yaml
�le (for the Trae�k load balancer) is shown below:
11 of 13 10/29/20, 11:17 PM
Manage SOA domains :: WebLogic Kubernetes ... https://oracle.github.io/weblogic-kubernetes-op...
de�ned for Oracle SOA and Oracle Service Bus domains. You need to update the
appropriate Ingress template YAML �le based on the load balancer being used. For
example, the template YAML �le for the Trae�k load balancer is located at
kubernetes/samples/charts/ingress-per-domain/templates/traefik-ingress.yaml .
rules:
- host: '{{ .Values.traefik.hostname }}'
http:
paths:
- path: /console
backend:
serviceName: '{{ .Values.wlsDomain.domainUID }}-{{
.Values.wlsDomain.adminServerName | lower | replace "_" "-" }}'
servicePort: {{ .Values.wlsDomain.adminServerPort }}
- path: /em
backend:
serviceName: '{{ .Values.wlsDomain.domainUID }}-{{
.Values.wlsDomain.adminServerName | lower | replace "_" "-" }}'
servicePort: {{ .Values.wlsDomain.adminServerPort }}
- path: /servicebus
backend:
serviceName: '{{ .Values.wlsDomain.domainUID }}-{{
.Values.wlsDomain.adminServerName | lower | replace "_" "-" }}'
servicePort: {{ .Values.wlsDomain.adminServerPort }}
- path: /lwpfconsole
backend:
serviceName: '{{ .Values.wlsDomain.domainUID }}-{{
.Values.wlsDomain.adminServerName | lower | replace "_" "-" }}'
servicePort: {{ .Values.wlsDomain.adminServerPort }}
- path:
backend:
serviceName: '{{ .Values.wlsDomain.domainUID }}-cluster-{{
.Values.wlsDomain.soaClusterName | lower | replace "_" "-" }}'
servicePort: {{ .Values.wlsDomain.soaManagedServerPort }}
Now you can access the Oracle SOA Suite domain URLs, as listed below, based on the
domain type you selected.
Oracle SOA:
http://\<hostname\>:\<port\>/weblogic/ready
http://\<hostname\>:\<port\>/console
http://\<hostname\>:\<port\>/em
12 of 13 10/29/20, 11:17 PM
Manage SOA domains :: WebLogic Kubernetes ... https://oracle.github.io/weblogic-kubernetes-op...
http://\<hostname\>:\<port\>/soa/composer
http://\<hostname\>:\<port\>/integration/worklistapp
http://\<hostname\>:\<port\>/ess
http://\<hostname\>:\<port\>/EssHealthCheck
http://\<hostname\>:\<port\>/servicebus
http://\<hostname\>:\<port\>/lwpfconsole
13 of 13 10/29/20, 11:17 PM