Integration assembly deployment

An integration assembly is a capability that allows you to deploy multiple instances of other IBM Cloud Pak® for Integration capabilities and components from the same YAML file. This feature simplifies ease of instance creation and management, in part by supplying default configurations for complex elements, such as certificates and high availability.

Prerequisites

  • You are on a supported version of Red Hat Openshift. See Operating environment for details.

  • For online clusters, if you have not already created a secret called ibm-entitlement-key in the namespace where the instance will be created, see Applying your entitlement key.

  • An OpenShift cluster administrator has created one or more storage classes that support ReadWriteOnce (RWO). Supported storage providers include ibmc-block-gold, OpenShift Data Foundation (formerly OpenShift Container Storage), Spectrum, and Portworx. For additional details about storage support and configuration, see Storage considerations.

  • You have already installed the IBM Cloud Pak for Integration operator. If you have not already done so, see Installing the operators.

  • You have installed all operators for the capabilities that you are deploying with the assembly. Operators that are supported by assemblies are:

    • IBM App Connect (IntegrationRuntime)

    • IBM Event Streams (EventStreams)

    • IBM MQ (QueueManager)

  • If you want to allow Integration assembly templates to be shared across your organization, Automation assets is already installed. For more information on installing Automation assets, see Automation assets deployment by using the Platform UI.

Creating an integration assembly in the Platform UI

  1. Log in to Platform UI.

  2. Click Integration instances.

  3. Click Create an instance.

  4. Click Assembly, then click Next.

  5. Use one of the following deployment options:

    1. To deploy by using the default configuration for for an assembly, click the tile for the deployment option that you need, then click Next. You can modify the default configuration as needed.

    2. To deploy by using an existing template from Automation assets, click the Select a template tile. If you do not have Automation assets installed, a slide out panel will appear containing a link allowing you to install it.

      1. Select a template and preview its contents.

      2. Click Create from asset.

    Configuring in the UI form

    1. Set the following fields to configure the assembly. The UI form perspective is selected by default; it opens a form that lets you view or modify the resource configuration.

      1. In the Name field, enter a name for your instance of assembly.

      2. Click to expand Namespace and select the namespace where your assembly will be installed.

      3. Set License Accept to true if you accept the Cloud Pak for Integration license agreement. For details, see Licensing.

      4. For License LI, keep the default version unless you change spec.version. For details about licenses for specific versions, see the "Table of license versions" section in Licensing.

      5. Specify the Storage class. Click Select Storage Class to select a Matching storage classes found in the dropdown that supports ReadWriteOnce (RWO) volumes. Supported storage providers include ibmc-block-gold, OpenShift Data Foundation (formerly OpenShift Container Storage), Spectrum, and Portworx. For additional details about storage support and configuration, see Storage considerations.

      6. Add or remove components that you want to include in this assembly.
        Important: Once an instance is deployed through an assembly, the instance has to be managed through this assembly. Therefore, editing the custom resource of the specific instance is not permitted.
      • For each managed instance or integration, configure the required elements: select a kind from the list and enter the name of the managed instance or integration.

      1. Set any other configuration values as appropriate. The assembly supplies default configurations for each managed instance or integration. You can customize your configuration by with any part of the full specification supported by that managed instance or integration. For more information, see Using an integration assembly.

    Configuring in the YAML view

    Update the values in the YAML view:

    1. For metadata.namespace, select your project (namespace) name.

    2. For spec.license.accept, select true if you accept the Cloud Pak for Integration license agreement. For details, see Licensing.

    3. For spec.license, keep the default value unless you change the value for spec.version. For details about specific version licenses, consult the "Table of license versions" section in Licensing.

    4. For spec.storage.readWriteOnce.class, specify a storage class that supports ReadWriteOnce (RWO) volumes. Supported storage providers include ibmc-block-gold, OpenShift Data Foundation (formerly OpenShift Container Storage), Spectrum, and Portworx. For additional details about storage support and configuration, see Storage considerations.

    5. Add or remove managed instances or integrations that you want to include in this assembly.

    6. Set any other configuration values as appropriate. The assembly supplies default configurations for each managed instance or integration. You can customize your configuration with any part of the full specification supported by that managed instance or integration. For more information, see Using an integration assembly.

    Important: Managed components created with an assembly can be edited or deleted (uninstalled) only in the assembly custom resource.
  6. After you configure the assembly, you can share the configuration as a template. Click the overflow menu (three-dot icon), then click Share to automation assets.

    • If Automation assets is deployed, a slide-out panel allows you to share your assembly.

    • If Automation assets is not deployed, a slide-out panel shares a link for deployment.

  7. Click Create to initiate deployment. You are redirected to the Integration instances page. The assembly begins deployment and is initially in the Pending state. Click Pending to check the progress of the deployment. When the deployment completes, the status changes to Ready.

When deployed, an assembly is available as an expandable row in the instances table. The top row contains information about the assembly resource, and the nested rows contain information about each component in the assembly, such as the name and the namespace where they were deployed, and their current status.

Creating an integration assembly by using the CLI

  1. Log into your cluster, using your OpenShift user credentials:

    oc login
  2. If you installed the operators in All namespaces on the cluster mode, you will need to use a project other than openshift-operators in which to deploy the instance.

    • If needed, create a new project for this purpose by running:

      oc new-project <project_name>

      For example:

      oc new-project integration
  3. Create a IntegrationAssembly YAML file. For example, you could create a file called assembly.yaml with the following example configuration. Update the values as indicated:

    • For metadata.namespace, enter your project (namespace) name.

    • Change the value of spec.license.accept to true if you accept the Cloud Pak for Integration license agreement. For details, see Licensing.

    • For spec.storage.readWriteOnce.class, specify a storage class that supports ReadWriteOnce (RWO) volumes. To get a list of available storage classes, run:

      oc get storageclasses

      A list of available storage classes appears. For details about storage support and configuration, see Storage considerations.

    • Set any other configuration values as appropriate. The assembly supplies default configurations for each managed instance. You can customize your configuration with any part of the full specification supported by that managed instance.
      Important: Once an instance is deployed through an assembly, the instance has to be managed through this assembly. Therefore, editing the custom resource of the specific instance is not permitted.

    Example configuration file:

    apiVersion: integration.ibm.com/v1beta1
    kind: IntegrationAssembly
    metadata:
      name: example
      namespace: integration
    spec:
      version: 2022.4.1
      license:
        accept: true
        license: L-RJON-CJR2RX
        use: CloudPakForIntegrationNonProduction
      storage:
        readWriteOnce:
          class: <storage-class>
      managedInstances:
        list:
        - kind: QueueManager
          metadata:
            name: qm1
        - kind: EventStreams
          metadata:
            name: es1

    If you need advanced configuration options, see Using an integration assembly.

  4. Apply the yaml file to the cluster

    oc apply assembly.yaml
  5. Get the status of the assembly by running the following command in the project (namespace) where it was deployed:

    oc get integrationassembly
Important: Managed instances created with an integration assembly can be edited or deleted only in the assembly custom resource, as shown in the following examples.

High availability

To provision an assembly instance in high availability (HA) mode, set the value of spec.availability.type to HA. This setting ensures that all components managed by this assembly instance are deployed in HA mode.

Note the following:

  • If the spec.availability.type field in undefined, it defaults to SingleInstance.

  • This field is immutable, so the value can't be changed later.

Example configuration file:

spec:
  availability:
    type: HA

Queue Manager managed instance

By default, for each managed instance of kind: QueueManager, a ConfigMap named qm-<.metadata.name>-default is created. The queue manager instance contains a default mqsc/ini and an issuer and certificate that is created with a self-signed certificate (signed by the Certificate Authority for the assembly). The instance is configured to use the ConfigMap and certificate.

This results in the following default configuration for the queue manager instance:

  • The QueueManager license is accepted, when accepted for the integration assembly.

  • The QueueManager license use is set to Production or NonProduction, depending on the assembly license.use value.

  • Persistent storage is enabled for the QueueManager with 2Gi, using the readWriteOnce storage class from the assembly.

  • A channel named MTLS.SVRCONN is created. The channel has TLS enabled, but access to the channel is blocked by default. For examples of how to enable access (advanced configuration), see Using an integration assembly.

  • The web interface is enabled.

Event Streams managed instance

By default, for each managed instance of kind EventStreams, the following default configuration is used:

  • The Event Streams license is accepted, when accepted for the assembly.

  • The Event Streams license use is set to the same setting configured for the assembly.

  • Persistent storage is enabled for Kafka with 10Gi, using the readWriteOnce storage class from the assembly.

  • Persistent storage is enabled for ZooKeeper with 2Gi, using the readWriteOnce storage class from the assembly.

  • The Kafka resources are set to 8Gi and 4 cpus for both the requests and limits.

Integration runtime managed integration

By default, for each managed integration of kind IntegrationRuntime, the following default configuration is used:

  • The integration runtime license is accepted, when accepted for the assembly.

  • The integration runtime has 1 or 3 pod replicas, depending on the availability type of the assembly.

  • The logFormat is set to basic.

  • The integration runtime version is set to the latest runtime version that is part of the Cloud Pak for Integration release associated with this assembly. The Cloud Pak for Integration release number is referenced in the assembly spec.version.

API managed integration

There is no default configuration for managed integrations of kind API. Add the full definition of the API that you want this assembly to manage as per the API object in Using declarative APIs.