Chapter 2. Fuse Online

Fuse Online provides a web browser interface that lets a business expert integrate two or more different applications or services without writing code. It also provides features that allow the addition of code if it is needed for complex use cases.

Fuse Online runs an integration on OpenShift as a Spring Boot application that uses Apache Camel.

2.1. About Fuse Online distributions

Fuse Online is Red Hat’s web-based integration platform. Syndesis is the open source project for Fuse Online. Fuse Online runs in these OpenShift environments:

Host Environment

Installation

OpenShift Dedicated

Red Hat installs and provisions Fuse Online on Red Hat infrastructure.

OpenShift Container Platform

Customer installs and manages.

2.2. Upgrading from Fuse Online 7.11.x to 7.12.x requires manual upgrade steps

If you installed Fuse Online 7.11.x and want to upgrade to Fuse Online 7.12.x.x, you must manually upgrade to Fuse Online 7.12.x.0.

  1. In the Administrator perspective of the OpenShift Container Platform web console, navigate to Operators > Installed Operators.
  2. Click the Red Hat Integration Fuse Online 7.11.2 Operator.
  3. Click the Subscription tab.
  4. Verify that Update approval is set to Manual:

    • If Update approval is set to Manual, skip to the next step.
    • If Update approval is set to Automatic:

      1. Click Automatic.
      2. In the Change Update Approval Strategy dialog, select Manual and click Save.
  5. Under Update channel, click 7.11.2.
  6. For the Change subscription update channel, select 7.12.x.

    Note: The latest, candidate, and stable channels are Technology Preview features.

  7. Under Upgrade status, click Upgrade available.
  8. Click Preview InstallPlan and then Approve.
  9. Verify that the operator has fully completed the upgrade to Fuse Online 7.12.0:

    1. Navigate to the Operators > Installed Operators page and click Red Hat Integration Fuse Online. The Operator Details page opens.
    2. Select the Syndesis tab. The status for the Fuse Online instance (the default name is app) initially shows Installed (to indicate that Fuse Online 7.12.0 is installed). It then progresses through several phases (Installing, Starting, and Installed). When it reaches the Installed phase again, the upgrade to 7.12.0 is complete.
  10. Navigate back to the Operators > Installed Operators page, and then click Upgrade available for the Red Hat Integration Fuse Online operator.
  11. Click Preview InstallPlan and then Approve.
  12. Verify that the operator has fully completed the upgrade to Fuse Online 7.12.x:

    1. Navigate to Networking > Routes and click on the location link for syndesis to open the Fuse Online web console.
    2. In the upper right corner of the Fuse Online console, click the ? icon and then select About.
    3. Verify that the About page includes 7_12_x in the version number.

2.3. Upgrading Fuse Online integrations

To upgrade a Fuse Online environment that is running on OCP on-site, you must update Fuse Online by using the operator and then republish any running integrations as described in Upgrading Fuse Online.

On OCP 4.9 or later, when you upgrade to 7.11 by using the operator, the following warning is displayed during the Fuse Online Operator upgrade process:

W1219 18:38:58.064578 1 warnings.go:70] extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress

This warning appears because clients (that Fuse Online uses for the Kubernetes/OpenShift API initialization code) access a deprecated Ingress version. This warning is not an indicator of complete use of deprecated APIs and there is no issue with upgrading to Fuse Online 7.11.

2.4. Important notes for Fuse Online

Important notes for the Fuse 7.12 release of the Fuse Online distribution:

  • Support for Fuse Online is now deprecated as Fuse 7 is now in the maintenance support. There will not be any future development for Fuse Online when Fuse 7 moves out of support.
  • Installation of Fuse Online is no longer supported on OCP 3.11.
  • Fuse Online no longer supports Camel K runtime or the KNative connector.
  • When Fuse Online is installed and provisioned on Red Hat infrastructure, the account is limited to a specific number of integrations that can be running at one time. For details, see the pricing plan.
  • An OpenAPI schema that you upload to Fuse Online might not define input/output types. When Fuse Online creates a custom API client from an OpenAPI schema that does not specify input/output types then it is not possible to create an integration that maps integration data to fields that the API client can process or from fields that the API client processed. If an integration requires data mapping to or from a custom API, then when you upload the OpenAPI schema, click Review/Edit to open API Designer, which is an API editing tool, and add input/output type specifications.
  • Since Fuse 7.8, an OpenAPI document that you use for a custom API client connector or for an API provider integration cannot have cyclic schema references. For example, a JSON schema that specifies a request or response body cannot reference itself as a whole nor reference any part of itself through any number of intermediate schemas.
  • On OCP 4.9 (or later), the application-monitoring project no longer works. It is a prerequisite for monitoring Fuse Online integrations and infrastructure components with Prometheus and Grafana.

    To work around this issue, you can use the built-in monitoring stack (in the openshift-monitoring namespace) to use the openshift-user-workload-monitoring feature and the grafana-operator to use the ops addon as described in the following Adding Fuse Online monitoring resources (Prometheus and Grafana) on OCP 4.9 (or later) procedure.

2.4.1. Adding Fuse Online monitoring resources (Prometheus and Grafana) on OCP 4.9 (or later)

Prerequisites

  • Fuse Online is installed and running on OCP 4.9 (or later) on-site.
  • The oc client tool is installed and it is connected to the OCP cluster in which Fuse Online is installed.
  • You have admin access to the OCP cluster.
  • Your Fuse Online installation is configured with the ops addon enabled. If required, you can enable it with this command:

    oc patch syndesis/app --type=merge -p '{"spec": {"addons": {"ops": {"enabled": true}}}}'

Procedure

  1. If there is an existing openshift-monitoring configuration, skip to Step 2.

    Otherwise, create an openshift-monitoring configuration, that sets the user workload monitoring option to true and then skip to Step 3:

    oc apply -f - <<EOF
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml:
       enableUserWorkload: true
    EOF
  2. If there is an existing openshift-monitoring configuration:

    1. Check the existing openshift-monitoring configuration to determine whether the user workload monitoring option is set to true:

      oc get -n openshift-monitoring cm/cluster-monitoring-config -ojsonpath='{.data.config\.yaml}'

      If the result is enableUserWorkload: true, the user workload monitoring option is set to true. Skip to Step 3.

      If the result shows any other configurations, continue to the next step to enable the monitoring of user workloads by editing the ConfigMap.

    2. Open the ConfigMap file in an editor, for example:

      oc -n openshift-monitoring edit cm/cluster-monitoring-config
    3. Set enableUserWorkload to true. For example:

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: cluster-monitoring-config
        namespace: openshift-monitoring
      data:
        config.yaml:
         enableUserWorkload: true
    4. Save the ConfigMap file.
  3. Use the following command to watch the status of the pods in the openshift-user-workload-monitoring namespace:

    oc -n openshift-user-workload-monitoring get pods -w

    Wait until the status of the pods is Running, for example:

    prometheus-operator-5d989f48fd-2qbzd   2/2     Running
    prometheus-user-workload-0             5/5     Running   prometheus-user-workload-1             5/5     Running
    thanos-ruler-user-workload-0           3/3     Running
    thanos-ruler-user-workload-1           3/3     Running
  4. Verify that the Fuse Online alert rules are enabled in Prometheus:

    1. Access the internal prometheus instance

      oc port-forward -n openshift-user-workload-monitoring pod/prometheus-user-workload-0 9090
    2. Open your browser to localhost:9090
    3. Select Status> Targets. You should see three syndesis endpoints.
    4. Press CTRL-C to terminate the port-forward process.
  5. From the OperatorHub, install the Grafana Operator 4.1.0 to a namespace of your choosing, for example, to the grafana-middleware namespace.
  6. Add a cluster role and a cluster role binding to allow the grafana-operator to list nodes and namespaces:

    1. Download the cluster role YAML file from the grafana-operator website:

      curl https://raw.githubusercontent.com/grafana-operator/grafana-operator/master/deploy/cluster_roles/cluster_role_grafana_operator.yaml > tmp_role.yaml
    2. Add cluster permission for the grafana-operator to read other namespaces and nodes:

      cat <<EOF >> tmp_role.yaml
        - apiGroups:
            - ""
          resources:
            - namespaces
            - nodes
          verbs:
            - get
            - list
            - watch
      EOF
      oc apply -f tmp_role.yaml
      oc apply -f - <<EOF
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRoleBinding
      metadata:
        name: grafana-operator
      roleRef:
        name: grafana-operator
        kind: ClusterRole
        apiGroup: ""
      subjects:
        - kind: ServiceAccount
          name: grafana-operator-controller-manager
          namespace: grafana-middleware
      EOF
  7. Enable the grafana-operator to read Grafana dashboards from other namespaces by using the DASHBOARD_NAMESPACES_ALL environment variable to limit the namespaces:

    oc -n grafana-middleware patch subs/grafana-operator --type=merge -p '{"spec":{"config":{"env":[{"name":"DASHBOARD_NAMESPACES_ALL","value":"true"}]}}}'
  8. Check that the grafana pods are recreated:

    oc -n grafana-middleware get pods -w
  9. Optionally, view the grafana-operator logs:

    oc -n grafana-middleware logs -f `oc -n grafana-middleware get pods -oname|grep grafana-operator-controller-manager` -c manager
  10. Add a Grafana custom resource to start a Grafana server pod, for example:

    oc apply -f - <<EOF
    apiVersion: integreatly.org/v1alpha1
    kind: Grafana
    metadata:
      name: grafana-middleware
      namespace: grafana-middleware
    spec:
      config:
        auth:
          disable_signout_menu: true
        auth.anonymous:
          enabled: true
        log:
          level: warn
          mode: console
        security:
          admin_password: secret
          admin_user: root
      dashboardLabelSelector:
      - matchExpressions:
        - key: app
          operator: In
          values:
          - grafana
          - syndesis
      ingress:
        enabled: true
    EOF
  11. Allow the grafana-operator to read monitoring information:

    oc -n grafana-middleware adm policy add-cluster-role-to-user cluster-monitoring-view -z grafana-serviceaccount
  12. Add a GrafanaDatasource to query thanos-querier:

    oc apply -f - <<EOF
    apiVersion: integreatly.org/v1alpha1
    kind: GrafanaDataSource
    metadata:
      name: prometheus-grafanadatasource
      namespace: grafana-middleware
    spec:
      datasources:
        - access: proxy
          editable: true
          isDefault: true
          jsonData:
            httpHeaderName1: 'Authorization'
            timeInterval: 5s
            tlsSkipVerify: true
          name: Prometheus
          secureJsonData:
          httpHeaderValue1: "Bearer $(oc -n grafana-middleware serviceaccounts get-token grafana-serviceaccount)"
          type: prometheus
          url: "https://$(oc get route thanos-querier -n openshift-monitoring -ojsonpath='{.spec.host}')"
      name: prometheus-grafanadatasource.yaml
    EOF
  13. View the grafana server log:

    oc logs -f `oc get pods -l app=grafana -oname`
  14. Access the grafana URL and view the Fuse Online dashboards:

    echo "https://"$(oc -n grafana-middleware get route/grafana-route -ojsonpath='{.spec.host}')

2.5. Obtaining technical support for Fuse Online

To obtain technical support, in the Fuse Online console, in the left navigation panel, click Support. Use the Support page to download diagnostic information for all integrations or for one or more integrations that you choose. The page also provides a link for opening a support ticket and providing the diagnostic information that you downloaded.

2.6. Technology Preview features in Fuse Online

This release includes the Technology Preview features that are listed below.

Important

Technology Preview features are not supported with Red Hat production service level agreements (SLAs), might not be functionally complete, and Red Hat does not recommend using them in production. These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process. For more information, see Red Hat Technology Preview features support scope.

  • Fuse Online auditing

    Fuse Online supports basic auditing for changes made by any user to the following Fuse Online components:

    • Connections - The Name and any other fields shown on the connector’s Details page in the Fuse Online web console.
    • Connectors - The Name field.
    • Integrations - The Name field.
  • Conditional expressions for mapping data fields

    In the data mapper, you can specify a conditional expression and apply it to a data mapping. For example, a conditional expression can specify evaluation of a source field and how to populate the target field if the source field is empty. The limited set of expressions that you can specify are similar to Microsoft Excel expressions.

  • Document scope for user-defined properties in data mapper

    In the data mapper, you can specify a scope for properties that you define for source and target mappings. In the Mapping Details panel, click Add (+) next to Properties. In the Create Property dialog. for the new Scope option, you can select the current message header, a message header from a previous step, or Camel Exchange Property for Camel-specific properties.

  • For a REST API client that uses OAuth, when you create an API client connector, you can change the default OAuth2 behavior of connections that you create from that connector. Fuse Online vendor extensions to the OpenAPI specification support the following:

    • Providing client credentials as parameters.
    • Obtaining a new access token based on HTTP response status codes.