Cloud Services

Enterprise Marketplace

Red Hat Marketplace integration
Published On Jun 13, 2024 - 1:04 PM

Red Hat Marketplace integration

Red Hat Marketplace is a software as a service (SaaS) provider where you can order applications to be provisioned on your Red Hat OpenShift cluster.
These processes are only applicable if your tenant was created earlier than May 2021.
Red Hat Marketplace is a software as a service (SaaS) provider where you can order applications to be provisioned on your Red Hat OpenShift cluster. This cluster can be deployed on a public cloud provider such as Amazon Web Services, Microsoft Azure, Google Cloud Platform, IBM Cloud, or Alibaba. After you have integrated Red Hat Marketplace as a provider, you can then make SaaS services from Red Hat Marketplace available to your users in the Enterprise Marketplace Catalog. Any provisioned catalogs are visible both in Enterprise Marketplace and on the Red Hat Marketplace website.
As part of the Catalog Discovery process for Red Hat Marketplace in the tenant, all logos and descriptions for the catalogs are imported from Red Hat Marketplace. In addition, a link is provided back to the original page on the Red Hat Marketplace website. Click
Provider Site
on the
Details
page for the offering.
Pricing is loaded dynamically.

Red Hat Marketplace services available for provisioning

The following services from Red Hat Marketplace can be provisioned through Enterprise Marketplace. New services can be discovered as they are made available for integration on Red Hat Marketplace.
  • Akka Platform Operator
  • Anaconda Team Edition
  • Anchore Enterprise
  • AnzoGraph DB
  • Application Observability
  • Appranix Container Application Resilience
  • Aqua Cloud Native Security Platform
  • ARMO
  • Aspera High-Speed Data Transfer
  • Atomic Enterprise OSSEC
  • CockroachDB
  • Cognitive Assistant for Networks
  • Cortex Certifai
  • Couchbase Server Enterprise Edition
  • Crunchy PostgreSQL for Kubernetes
  • Datadog
  • DataStax Enterprise
  • Densify
  • Discover - Transform – Cruize
  • Dynatrace
  • E.D.D.I
  • Federator.ai
  • Findability Platform Predict Plus
  • GigaSpaces InsightEdge
  • Hazelcast IMDG
  • Hazelcast Jet
  • Headspin Compass
  • Headspin Local
  • IBM API Connect
  • IBM App Connect
  • IBM Blockchain Platform
  • IBM Cloud Pak for Data
  • IBM Cloud Pak for Integration
  • IBM DataPower Virtual Gateway
  • IBM Db2 on Cloud Pak for Data
  • IBM MQ
  • IBM Sterling Transformation Extender
  • IBM UrbanCode Deploy
  • IBM Watson Studio
  • Instana Application Performance Monitoring
  • Ivory Service Architect
  • Joget DX Open Source Low Code Platform
  • Kasten K10 by Veeam
  • Kong Konnect Enterprise
  • KubeMQ
  • KubePlus SaaS manager
  • LINBIT SDS
  • Modeling Tool
  • MongoDB Enterprise Advanced from IBM
  • Nastel Navigator
  • Nastel Xray
  • NeuVector Full Lifecycle Container Security
  • Nexus Repository Pro with 24 x 7 Support
  • Node-RED Operator
  • OpenUnison
  • OpsMx Enterprise for Spinnaker
  • Percona Kubernetes Operator for Percona Server for MongoDB
  • Percona Kubernetes Operator for Percona XtraDB Cluster
  • RapidBIZ
  • Red Hat 3scale API Management
  • Red Hat Advanced Cluster Management for Kubernetes
  • Red Hat AMQ Streams
  • Red Hat Fuse
  • Red Hat Integration
  • Red Hat JBoss Enterprise Application Platform
  • Red Hat OpenShift Container Storage
  • Red Hat OpenShift Dedicated
  • Red Hat Process Automation
  • Red Hat Runtimes
  • Red Hat Single Sign-On
  • Robin Cloud Native Storage
  • Seldon Deploy
  • SingleStore
  • Snyk Container
  • Sources for Amazon Web Services by TriggerMesh
  • Starburst Enterprise
  • StorageOS
  • Sysdig Secure DevOps Platform
  • Time Machine
  • Traefik Enterprise Edition
  • TrilioVault for Kubernetes
  • Tufin SecureCloud
  • Turbonomic
  • vFunction Cloud Native Application Modernization Platform
  • vProtect Backup and Recovery
  • XCrypt for OpenShift
  • Yugabyte Platform
  • Zabbix Monitoring Solution

Integrating Red Hat Marketplace

If you want to use Red Hat Marketplace as a provider, you need to create a master account and an asset account for it. The master account is used to identify the asset account in IBM Cloud Brokerage - Cost & Asset Management and is optional if you do not use that application. For more information, see Overview of Cost & Asset Management. The asset account contains the credentials that are needed to access Red Hat Marketplace.
These procedures assume that you are creating a new tenant. For the procedures for existing tenants, see Integrating existing Red Hat Marketplace tenants.
Creating a master account
If you want to create a master account, complete the following steps:
  1. Navigate to the
    Provider Account
    page. To learn more about navigating to the different services from each tenant, refer to Landing page navigation or Kyndryl Bridge Landing page navigation.
  2. On the
    Account Management
    page, click
    New Master Account
    .
  3. For the provider, click
    Red Hat Marketplace
    .
  4. Enter the following information for your new master account and then click
    Create Account
    :
    • Name:
      Enter a descriptive name for the account that will be displayed in the UI.
    • Description:
      Provide a description of the account. This parameter is optional.
    • Status:
      Set the account either to
      Active
      or
      Inactive
      .
  5. You can add credentials to a master account, but that is not needed for these purposes.
Creating an asset account
To create an asset account, complete the following steps:
  1. Navigate to the
    Provider Account
    page. To learn more about navigating to the different services from each tenant, refer to Landing page navigation or Kyndryl Bridge Landing page navigation.
  2. On the
    Account Management
    page, click the
    Asset Accounts
    tab.
  3. Click
    New Asset Account
    .
  4. For the provider, click
    Red Hat Marketplace
    .
  5. Enter the following information for your new asset account and then click
    Create Account
    :
    • Name:
      Enter a descriptive name for the account that will be displayed in the UI.
    • Description:
      Provide a description of the account. This parameter is optional.
    • Select Existing Master Account:
      If you are using a master account, select it from the drop-down menu. Otherwise leave this field blank.
      You must currently create and use a master account. Otherwise, you will be unable to create an asset account. This is a known issue.
    • Status:
      Set the account either to
      Active
      or
      Inactive
      .
  6. Click
    Add Credential
    .
  7. In the
    Add Credential
    window, enter the following information for the credential and then click
    Add
    :
    • Name:
      Enter a description name for the account that will be displayed in the UI.
    • Purpose:
      Select one or both purposes for this credential. Usually, you will want both.
      • Provisioning:
        Select this if you want to provision catalogs from Red Hat Enterprise.
      • Catalog Ingestion:
        Select this if you want to discover and use catalogs from Red Hat Marketplace.
    • Description:
      Provide a description for the credential. This parameter is optional.
    • Status:
      Set the account either to
      Active
      or
      Inactive
      .
    • Credential Reference ID:
      Select an existing ID or click
      Create New or Update Credential in Vault
      .
    • Red Hat Marketplace Subscription Account ID:
      This is fetched from the Red Hat Marketplace portal. Click
      [Your Name]’s Account
      Account settings
      , copy the
      Account ID
      , and paste it into this field.
    • Pull Secret:
      If you are going to use a different provider’s cluster with Red Hat Marketplace, enter the pull secret for that cluster. The secret is needed for cluster related operations registered in Red Hat Marketplace such as operator installation and cluster registration. This parameter is optional.
    • API Key:
      This is generated during the creation of a service ID. If you did not record it, generate a new one. In the
      Account settings
      navigation pane on the Red Hat Marketplace site, click
      Access
      Service IDs
      . Click
      Create Service ID
      and copy the API key generated during that process. This key will only be visible once.
      You can click
      Test Connection
      to make sure the connection is functional.
    • Associate this credential with a business entity:
      Determines which buyer teams or organizations will be able to configure and order Red Hat Marketplace catalogs. Select
      Organization
      or
      Team
      from the
      Business Entities
      column and then select the group or groups within that category that you want to have access from the
      Values
      column. You can also select an ICAM namespace from the
      Values
      column.
      The
      Show Associated
      checkbox displays a list of all business entities that are associated with the credential.

Creating catalogs from Red Hat Marketplace

If you want to create catalogs from Red Hat Marketplace, complete the following steps:
  1. Navigate to the
    Catalog Management
    page. To learn more about navigating to the different services from each tenant, refer to Landing page navigation or Kyndryl Bridge Landing page navigation.
  2. Click
    Add Services
    .
  3. In the
    Choose an option to import service
    window, select
    Import through Provider Account
    and click
    OK
    .
  4. On the
    Select a provider to add service
    page, click
    Red Hat Marketplace
    .
  5. Select the asset account that you created and click
    OK
    to start the discovery process. All available catalogs will be added in
    Draft
    status.
You do not need to do any customization because all fields will be discovered automatically. However, you can customize the catalog as wanted. For more information about managing catalogs, see Provider management.

Integrating existing Red Hat Marketplace tenants

When a new tenant is created, all the configurations for the Red Hat Marketplace provider are loaded as part of the tenant onboarding steps. For an existing tenant, those steps must be performed manually.
This process can also be done using the script available at https://github.kyndryl.net/MCMP-Integrations/cb-int-configurations/tree/master/RHM/setup_rhm. For access to this script, contact your Kyndryl delivery team.
If you want to configure the Red Hat Marketplace provider for an existing tenant, complete the following steps:
  1. Configure the provider adapter by running the following command:
    curl --location --request POST '<host>/catalog/v3/providers_adapters' \ --header 'username: <username>' \ --header 'apikey: <apikey>' \ --header 'Content-Type: application/json' \ --data-raw '{ "providers_adapters": [ { "provider": "Red Hat Marketplace", "providerCode": "rhm", "adapter": "http://localhost:5000/genericcontentserver/v1/providers/rhm", "discoverContent": true, "manageSOEnabled": true, "enableVersion": false } ] } '
    If you already have configurations present, you will get a 409 conflict. Otherwise, you will get a response like the following:
    { "totalCount": 1, "successCount": 1, "failedCount": 0, "reasons": [ { "statusCode": 201, "status": "Created", "messages": [ "providerCode: rhm5 successfully created with the provider: Red Hat Marketplace and adapter: http://localhost:5000/genericcontentserver/v1/providers/rhm" ], "id": null, "translateCode": "CA_8016_V3_PROVIDER_ADAPTER_CREATED", "translateParameters": [], "operation": null } ] }
  2. Register the D2Ops configurations by running the following command:
    curl --location --request POST '<host>/core/configuration/v1/configvalues' \ --header 'username: <username>' \ --header 'apikey: <apikey>' \ --header 'Content-Type: application/json' \ --data-raw '{ "configurationkey": "d2ops_provider_conf_rhm", "configurationvalue": { "requiredForwardProxy": false, "gateway_config_key": "d2ops_gateway_config_rhm", "certs": { "endpoint_ca_cer": "", "endpoint_cer": "", "endpoint_key": "" }, "endpoint": { "protocol": "http", "host": "cb-rhm-prov-adapter", "port": "7008" } } } '
    If you already have configurations present, you will get a 409 conflict. Otherwise, you will get a response like the following:
    { "configurationkey": "d2ops_provider_conf_rhm", "configurationvalue": { "requiredForwardProxy": false, "gateway_config_key": "d2ops_gateway_config_rhm", "certs": { "endpoint_ca_cer": "", "endpoint_cer": "", "endpoint_key": "" }, "endpoint": { "protocol": "http", "host": "cb-rhm-prov-adapter", "port": "7008" } } }
  3. Register the operation fulfillment queue using the following command:
    curl --location --request POST '<host>/emp/common/clients' \ --header 'username: <username>' \ --header 'apikey: <apikey>' \ --header 'Content-Type: application/json' \ --data-raw '{ "name": "operation_fulfillment_rhm", "provider_code": "rhm", "applicable_for": [ { "id": "integration", "values": [ "OperationFulfillment" ] } ], "callback": { "url": "cb-rhm-prov-adapter:7008/adapter/rhm/v1/executeOperation", "certs": { "endpoint_ca_cer": "", "endpoint_cer": "", "endpoint_key": "" }, "connection_protocol": "http" } } '
    If you already have configurations present, you will get a 409 conflict. Otherwise, you will get a response like the following:
    { "statusCode": 200, "status": "OK", "messages": [ "Successfully created subscriber operation_fulfillment_rhm" ], "translateCode": "CM_SUCCESSFULLY_CREATED_SUBSCRIBER", "translateParameters": [], "topics": [ "OperationFulfillment" ], "user": { "read_credentials": { "username": "default_namespace_operation_fulfillment_rhm_user1", "password": "6xTq9NN4oas6A7fc" }, "write_credentials": { "username": "default_namespace_operation_fulfillment_rhm_user2", "password": "s2NRizu5quGkIlQL" }, "accessall_credentials": { "username": "default_namespace_operation_fulfillment_rhm_user3", "password": "YCPNMPtCHbpjXTjl" }, "url": "amqp://rabbit1:5672?heartbeat=600&blocked_connection_timeout=300", "appname": "operation_fulfillment_rhm", "namespace": "default_namespace", "certificate": null } }
  4. Register the status queue configurations using the following command:
    curl --location --request POST '<host>/emp/common/clients' \ --header 'username: <username>' \ --header 'apikey: <apikey>' \ --header 'Content-Type: application/json' \ --data-raw '{ "name": "operation_status_request_rhm", "provider_code": "rhm", "applicable_for": [ { "id": "integration", "values": [ "OperationStatus" ] } ], "callback": { "url": "cb-rhm-prov-adapter:7008/adapter/rhm/v1/statusOperation", "certs": { "endpoint_ca_cer": "", "endpoint_cer": "", "endpoint_key": "" }, "connection_protocol": "http" } } '
    If you already have configurations present, you will get a 409 conflict. Otherwise, you will get a response like the following:
    { "statusCode": 200, "status": "OK", "messages": [ "Successfully created subscriber operation_status_request_rhm" ], "translateCode": "CM_SUCCESSFULLY_CREATED_SUBSCRIBER", "translateParameters": [], "topics": [ "OperationStatus" ], "user": { "read_credentials": { "username": "default_namespace_operation_status_request_rhm_user1", "password": "vzlaY75IyRU4T8cE" }, "write_credentials": { "username": "default_namespace_operation_status_request_rhm_user2", "password": "q4kfYGOc3yb7CiPf" }, "accessall_credentials": { "username": "default_namespace_operation_status_request_rhm_user3", "password": "6ZJ1IRQ9NJi3b405" }, "url": "amqp://rabbit1:5672?heartbeat=600&blocked_connection_timeout=300", "appname": "operation_status_request_rhm", "namespace": "default_namespace", "certificate": null } }
  5. Register the provisioning status queue using the following command:
    curl --location --request POST '<host>/emp/common/clients' \ --header 'username: <username>' \ --header 'apikey: <apikey>' \ --header 'Content-Type: application/json' \ --data-raw '{ "name": "provisioning_status_request_rhm", "provider_code": "rhm", "applicable_for": [ { "id": "integration", "values": [ "ProvisioningStatus" ] } ], "callback": { "url": "cb-rhm-prov-adapter:7008/adapter/rhm/v1/provision/status", "certs": { "endpoint_ca_cer": "", "endpoint_cer": "", "endpoint_key": "" }, "connection_protocol": "http" } } '
    If the queue is already registered, you will get a 409 conflict. Otherwise, you will get a response like the following:
    { "statusCode": 200, "status": "OK", "messages": [ "Successfully created subscriber provisioning_status_request_rhm" ], "translateCode": "CM_SUCCESSFULLY_CREATED_SUBSCRIBER", "translateParameters": [], "topics": [ "ProvisioningStatus" ], "user": { "read_credentials": { "username": "default_namespace_provisioning_status_request_rhm_user1", "password": "r11IGGBOY3VNsVK0" }, "write_credentials": { "username": "default_namespace_provisioning_status_request_rhm_user2", "password": "WpiqKsY31SnihUq6" }, "accessall_credentials": { "username": "default_namespace_provisioning_status_request_rhm_user3", "password": "tEUa92VbZ8Tzyywg" }, "url": "amqp://rabbit1:5672?heartbeat=600&blocked_connection_timeout=300", "appname": "provisioning_status_request_rhm", "namespace": "default_namespace", "certificate": null } }
  6. Register the order fulfillment queue using the following command:
    curl --location --request POST '<host>/emp/common/clients' \ --header 'username: <username>' \ --header 'apikey: <apikey>' \ --header 'Content-Type: application/json' \ --data-raw '{ "name": "order_fulfillment_rhm", "provider_code": "rhm", "applicable_for": [ { "id": "integration", "values": [ "OrderFulfillment" ] } ], "callback": { "url": "cb-rhm-prov-adapter:7008/adapter/rhm/v1/provision", "certs": { "endpoint_ca_cer": "", "endpoint_cer": "", "endpoint_key": "" }, "connection_protocol": "http" } } '
    If the queue is already registered, you will get a 409 conflict. Otherwise, you will get a response like the following:
    { "statusCode": 200, "status": "OK", "messages": [ "Successfully created subscriber order_fulfillment_rhm" ], "translateCode": "CM_SUCCESSFULLY_CREATED_SUBSCRIBER", "translateParameters": [], "topics": [ "OrderFulfillment" ], "user": { "read_credentials": { "username": "default_namespace_order_fulfillment_rhm_user1", "password": "CwR6c7yzIcjXpCvr" }, "write_credentials": { "username": "default_namespace_order_fulfillment_rhm_user2", "password": "Oq665z0iHXXtZ2Ca" }, "accessall_credentials": { "username": "default_namespace_order_fulfillment_rhm_user3", "password": "jshleAltFPq63g9K" }, "url": "amqp://rabbit1:5672?heartbeat=600&blocked_connection_timeout=300", "appname": "order_fulfillment_rhm", "namespace": "default_namespace", "certificate": null } }
  7. Register the GCS PullContent Adapter configurations using this command:
    curl --location --request POST '<host>/core/configuration/v1/configvalues' \ --header 'username: <username>' \ --header 'apikey: <apikey>' \ --header 'Content-Type: application/json' \ --data-raw '{ "configurationkey": "gcs_pullcontent_adapter_rhm", "configurationvalue": { "endpoint": "http://cb-rhm-prov-adapter:7008/adapter/rhm/v1" } } '
    If you already have configurations present, you will get a 409 conflict. Otherwise, you will get a response like the following.
    { "configurationkey": "gcs_pullcontent_adapter_rhm", "configurationvalue": { "endpoint": "http://cb-rhm-prov-adapter:7008/adapter/rhm/v1" } }
Do you have two minutes for a quick survey?
Take Survey