3 Creating Solution Designer Cloud Native Images

Solution Designer cloud native requires container images to be made available to create and manage its cloud native instances. This chapter describes how to create those Solution Designer cloud native images.

Solution Designer cloud native requires two types of container images. The Solution Designer DB Installer images are used to manage Solution Designer schema. The other images are the Solution Designer image itself. These images are the basis for all of the long running pods and all the services that comprise Solution Designer cloud native instance. Each image is built on top of a Linux base image and adds Java and Solution Designer product components on top.

Solution Designer Cloud native images are created using the Solution Designer cloud native builder toolkit and a dependency manifest file. The Solution Designer cloud native Image Builder is intended to be run as part of a Continuous Integration process that generates images. It needs to run on Linux and have access to the local container image builder. The versions of these are as per the Service Catalog and Design statement of certification in the Service Catalog and Design documentation. The dependency manifest is a file that describes all the versions required to build out the image.

See the following topics for further details:

Downloading the Solution Designer Cloud Native Image Builder

You download the Oracle Communications Service Catalog and Design - Solution Designer image builder from the Oracle software delivery website: http://edelivery.oracle.com.

To build the Solution Designer cloud native container image for each microservice, the ocscd-image-builder.tgz file is required.

The Solution Designer cloud native image builder is bundled with the following components:

  • A manifest file named ocscd_cn_ci_manifest.yaml.

  • Solution Designer cloud native builder kit.

  • Staging directory structure that contains the corresponding files for creating images for each microservice.

    Table 3-1 lists the microservices in Solution Designer.

    Table 3-1 Microservices and its description

    Microservices name Description
    im Microservice for the initiative manager.
    ims Microservice for the initiative manager DB schema installer.
    wm Microservice for the workspace manager.
    wms Microservice for the workspace manager DB schema installer.
    lpapi Microservice for the landing page api.
    lpapis Microservice for the landing page api DB schema installer.
    ui Microservice for the solution designer UI.
    up Microservice for the UIM Participant.
    hds Microservice for the headless Design Studio.

The staging directory structure contains the files for the microservices. Each directory structure contains a Dockerfile and the contents of the container image. Figure 3-1 illustrates the staging directory structure.

Figure 3-1 Staging Directory Structure



Prerequisites for Creating Solution Designer Images

You must download the prerequisite software from Oracle software delivery website http://edelivery.oracle.com or from My Oracle support website. You must add these contents to the Staging directory. Use ocscd_cn_ci_manifest.yaml for the complete list of prerequisite software.

The prerequisites for building Solution Designer cloud native images are:

  • Docker client and daemon or podman on the build machine.
  • Java 17
In addition to the prerequisites for building Solution Designer images, the following are the prerequisites for building the headless Design Studio microservice:
  • Oracle Enterprise Pack for Eclipse
  • Studio plugin
  • UIM SDK
  • SNO Configuration
  • Java 8
  • JDeveloper Suite jars
  • Log4j
  • XMLBeans

See Service Catalog and Design Compatibility Matrix for details about the required and supported versions of these prerequisite software.

Configuring the Solution Designer Cloud Native Images

The image builder uses a manifest file. The manifest file describes the input as a list of the files that must be downloaded and its location. It is consumed by the image build process. The default configuration in the latest manifest file provides all the necessary components and required patches for creating the Solution Designer cloud native images easily.

You can also modify the manifest file to extend it to meet your requirements. This enables you to:

  • Specify any Linux image as the base, as long as its binary is compatible with Oracle Linux.
  • Upgrade the Oracle Enterprise Linux version to a newer version to uptake a quarterly CPU.
  • Upgrade the JDK version to a newer JDK version to uptake a quarterly CPU.
  • Change the Solution Designer artifacts to newer artifacts to uptake a new Service Catalog and Design patch.

The breakdown of each section in the dependency manifest file is as follows:

ocscdBuilder:
    schemaVersion: cn-manifest/v1
    date: 2022-11-30

ocscdBaseImage:
    name: ocscd-base
    tag: latest
    # Specify the details of the Linux base image for OCSCD.    
    # Refer to the OCSCD documentation for certification statement on supported
    # types and versions.  This information is coded into the OCSCD image as a
    # LABEL, for tracking purposes.
    linux:
        vendor:Oracle
        version: 8.7    
        image: container-registry.oracle.com/os/oraclelinux:8-slim
    
    jdk:
        vendor: Oracle
        version: jdk-17.0.7
        path: java/jdk-17.0.7_linux-x64_bin.tar.gz

studioBaseImage:
    name: ocscd-studio-base
    tag: latest
    jdk:
        vendor: Oracle
        version: jdk-8u341    
        path: java/jdk-8u341-linux-x64.tar.gz
    studioPlugin:
        version: 8.0.0
        path: studio/DesignStudio-8.0.0.0.0-b11.zip
    oepe:
        version: 12.2.1.9
        path: studio/oepe-12.2.1.9-photon-distro-linux-gtk-x86_64.zip
    uimSdk:
        version: 7.5.1
        path: uim/UIM_SDK.zip    
    snoConfig:
        version: 7.4.3
        path: sno/sno_configuration-7.4.3.0.0.B263.zip
    jdev:
        version: 12.2.1.4.0
        path1: fmw/jdev_suite_122140.jar
        path2: fmw/jdev_suite_1221402.jar
    log4j:
        version: 2.19.0
        path1: log4j/log4j-api-2.19.0.jar
        path2: log4j/log4j-core-2.19.0.jar
    xmlbeans:
        version: 5.1.1
        path: xmlbeans/xmlbeans-5.1.1.jar

imImage:
    name: ocscd/initiative-manager
    tag: latest

imsImage:
    name: ocscd/initiative-manager-semele
    tag: latest

wmImage:
    name: ocscd/workspace-manager
    tag: latest

wmsImage:
    name: ocscd/workspace-manager-semele
    tag: latest

lpapiImage:
    name: ocscd/landing-page-api
    tag: latest

lpapisImage:
    name: ocscd/landing-page-api-semele
    tag: latest

uiImage:
    name: ocscd/unifieddesigner-ui
    tag: latest

upImage:
    name: ocscd/uim-participant
    tag: latest

studioImage:
    name: ocscd/headless-design-studio
    tag: latest

Note:

The schemaVersion and date parameters are maintained by Oracle. Do not modify these parameters.

Version numbers provided here are only examples. The manifest file used specifies the actual versions currently recommended.

  • Solution Designer Cloud Native Infrastructure Image

    While not required by Solution Designer cloud native to create or manage Solution Designer instances, this infrastructure image is a necessary building block of the final Solution Designer container image.

    
    linux:
        vendor:Oracle
        version: 8.7    
        image: container-registry.oracle.com/os/oraclelinux:8-slim

    The linux parameter specifies the base Linux image to be used as the base container image. The version is the two-digit version from /etc/redhat-release.

    The vendor and version details are specified and used for:

    • Validation when an image is built.
    • Querying at run-time. To troubleshoot issues, Oracle support requires you to provide these details in the manifest file used to build the image.
    
    jdk:
        vendor: Oracle
        version: jdk-17.0.7
        path: java/jdk-17.0.7_linux-x64_bin.tar.gz

    The jdk parameter specifies the JDK vendor, version, and the staging path. In the given staging path, the staging directory must contain a directory named java that contains the JDK installer. The JDK installer must be downloaded and placed in the location staging/java/jdk-11.0.17.0.2_linux-x64_bin.tar.gz

  • Service Catalog and Design - Design Studio Image
    
    studioBaseImage:
        name: ocscd-studio-base
        tag: latest
        jdk:
            vendor: Oracle
            version: jdk-8u341    
            path: java/jdk-8u341-linux-x64.tar.gz
        studioPlugin:
            version: 8.0.0
            path: studio/DesignStudio-8.0.0.0.0-b11.zip
        oepe:
            version: 12.2.1.9
            path: studio/oepe-12.2.1.9-photon-distro-linux-gtk-x86_64.zip
        uimSdk:
            version: 7.5.1
            path: uim/UIM_SDK.zip    
        snoConfig:
            version: 7.4.3
            path: sno/sno_configuration-7.4.3.0.0.B263.zip
        jdev:
            version: 12.2.1.4.0
            path1: fmw/jdev_suite_122140.jar
            path2: fmw/jdev_suite_1221402.jar
        log4j:
            version: 2.19.0
            path1: log4j/log4j-api-2.19.0.jar
            path2: log4j/log4j-core-2.19.0.jar
        xmlbeans:
            version: 5.1.1
            path: xmlbeans/xmlbeans-5.1.1.jar

    The studioBaseImage contains the various parameters that are required for Design Studio. This is required for designing complex design policies and also for deploying the cartridges in the run-time application. All the parameters mentioned in the studioBaseImage must be downloaded and placed in the appropriate directories as mentioned in the manifest file.

  • Solution Designer Cloud Native Image

    
    imImage:  
        name: ocscd/initiative-manager  
        tag: latest 
    imsImage:  
        name: ocscd/initiative-manager-semele  
        tag: latest 
    wmImage:  
        name: ocscd/workspace-manager  
        tag: latest 
    wmsImage:  
        name: ocscd/workspace-manager-semele  
        tag: latest 
    lpapiImage:  
        name: ocscd/landing-page-api  
        tag: latest 
    uiImage:  
        name: ocscd/unifieddesigner-ui  
        tag: latest 
    upImage:  
        name: ocscd/uim-participant  
        tag: latest 
    studioImage:  
        name: ocscd/headless-design-studio  
        tag: latest

    These parameters specify the microservices of Solution Designer that can be installed. The name specifies the name of the image that is created and the tag specifies the version of the microservice. The ocscd is the default directory in which the image is created. You can also specify the container repository instead of the default directory.

    For container images, you can use a standard tag or specify the sha256 digest depending on your business needs. Using a sha256 digest is more secure and mitigates the tampering of your images from your container repository. The following is an example using a standard tag.
    wmImage:
        name: ocscd/workspace-manager
        tag: latest
    The following is an example using sha256 digest. You must have @sha256 at the end of the name line.
    wmImage:
        name: ocscd/workspace-manager@sha256
        tag: a6b7be1808b8443dde696c5f108be1cb6e7641d6b281ef7598df012c1d6871f8

Creating Solution Designer Cloud Native Images

To create the Solution Designer image, the image builder does the following:

  • Starts with a base-level operating system image (for example, oraclelinux:8-slim).

You can specify any Linux image as the base, as long as its binary is compatible with Oracle Linux and conforms to the compatibility matrix. See Service Catalog and Design Compatibility Matrix for details about the supported software.

The following packages must be installed onto the given base image, or be already present:
  • gzip
  • tar
  • unzip

Creating the Solution Designer Images

To create the Solution Designer images:

  1. Create the workspace directory:
    mkdir workspace
  2. Obtain and untar the Solution Designer image builder file: ocscd-image-builder.tgz to the workspace directory:
    tar -xf ./ocscd-image-builder.tgz --directory workspace
  3. Download the prerequisite software listed in Prerequisites for Creating Solution Designer Images to the workspace/ocscd-image-builder/staging/ directory. For example, the following command downloads JDK to the workspace/ocscd-image-builder/staging/java directory.
    cp jdk-8u251-linux-x64.tar.gz ./workspace/ocscd-image-builder/staging/java/jdk-8u251-linux-x64.tar.gz
      
  4. Run build-images.sh and pass the manifest file, staging path, and the type of image to be created.
    export DMANIFEST=$(pwd)/ocscd-image-builder/bin/ocscd_cn_ci_manifest.yaml
    export STAGING=$(pwd)/ocscd-image-builder/staging
    

    Run one of the following commands:

    • To create all the images, use "-c all" as shown:

      $(pwd)/ocscd-image-builder/bin/build-images.sh -f $DMANIFEST -s $STAGING -c all
    • To create individual images, use "-c image name" as shown:

      $(pwd)/ocscd-image-builder/bin/build-images.sh -f $DMANIFEST -s $STAGING -c im,wm
    • To create Solution Designer image using proxy or firewall:

      $(pwd)/ocscd-image-builder/bin/build-images.sh -f $DMANIFEST -s $STAGING -c all -p http://my-corporate-proxy

These steps can be included into your CI pipeline as long as the required components are already downloaded to the staging area.

Post-build Image Management

The Solution Designer cloud native image builder creates images with names and tags based on the settings in the manifest file. By default, this results in the following images:
  • ocscd/headless-design-studio:latest
  • ocscd-studio-base:latest
  • ocscd/uim-participant:latest
  • ocscd/unifieddesigner-ui:latest
  • ocscd/workspace-manager-semele:latest
  • ocscd/workspace-manager:latest
  • ocscd/initiative-manager-semele:latest
  • ocscd/initiative-manager:latest
  • ocscd/landing-page-api-semele:latest
  • ocscd/landing-page-api:latest

Once images are built in a CI pipeline, the pipeline uniquely tags the images and pushes them to an internal container repository. An uptake process can then be triggered for the new images:

  • Sanity Test
  • Development Test (for explicit retesting of scenarios that triggered the rebuild, if any)
  • System Test
  • Integration Test
  • Pre-Production Test
  • Production