Adding add-on tile to Services catalog

In general partner’s solution for CPD are listed on an external “Partners Catalog” available here (https://community.ibm.com/community/user/cloudpakfordata/partners-catalog). However when deploying partner’s add-on into Cloud Pak For Data (CPD) it may be desirable to create an add-on tile in the Service Catalog page directly in the CPD instance. This can serve to create a launch pad for the application, relay status of the service as well as provide a launch link to application’s UI .
Most of the metadata required for creating add-on tile in CPD’s service catalog is the same as the one used in “Partners Catalog” and it can be directly reused. These are the steps required to package these metadata into to required format and to add it into CPD’s service catalog.
Create a new folder with the following sub-folder structure: ├── content
│ ├── add-ons.json
│ └── images
│ ├── logo.svg
│ ├── image1.png
│ ├── image2.png
│ └── image3.png
add-ons.json is the manfiest file providing the required add-on metadata for the “Service Catalog” in CPD. See the next section for the template and instructions on how to create it. The logo.svg and image[1-3].png files in the images subfolder contain media files for displaying your product logo and sample images. They can be named differently with the actual names being referenced in the add-ons.json file
1. Create add-on json manifest using the sample template shown below:
01: {
02: "<addon-short-id>":{
03: "access_management_enable":true,
04: "add_on_type":"application",
05: "category":"<addon-category>",
06: "details":{
07: "short_description":"Short description of the addon",
08: "long_description":"Long description of the addon. Can use multiple sentences",
09: "deploy_docs":"https://kubernetes.github.io/ingress-nginx/deploy/#using-helm",
10: "product_docs":"https://nginx.org/en/docs/",
11: "iconURL":"/zen-addons/<addon-short-id>/<addon-version>/images/<logo-image..svg",
12: "images":[
13: "/zen-addons/<addon-short-id>/<addon-version>/images/<image1>.png",
14: "/zen-addons/<addon-short-id>/<addon-version>/images/<image2>.png",
15: "/zen-addons/<addon-short-id>/<addon-version>/images/<image3>.png"
16: ],
17: "openURL": "<addon-ui-url>"
18: },
19: "display_name":"<Addon Display Name>",
20: "vendor":"Partner",
21: "versions":{
22: "<addon-version>":{
23: "helm_location":{},
24: "state":"enabled",
25: "details":{
26:
27: }
28: }
29: }
30: }
31: }
Where:
02: "<addon-short-id>”: replace <addon-short-id> with a short string identifying your addon, for example “playground”, no spaces and no special characters apart from ‘-‘ (dash)
05: "category":"<addon-category>": addon category, needs to be one of the following values: xx (displayed as AI), xx (displayed as Analytics), xx (displayed as Dashboards), xx (displayed as Data governance), xx (displayed as Data sources), xx (displayed as Developer tools), xx (displayed as Industry solutions), xx (displayed as Storage),
17: "openURL": "<addon-ui-url>: if addon provides UI for user interaction, replace <addon-ui-url> with a fully qualified URL of the UI console. Service providing UI needs to be running on the cluster, it can’t point to an external service
19: "display_name":"<Addon Display Name>": replace <Addon Display Name> with an informative name for your addon. This will be the title of your addon in the “Service Catalog”
22: "<addon-version>": replace <addon-version> with a version number of your product
24: "state":"enabled": this will be mark the addon tile in the “Service Catalog” as “Enabled”

Package the metadata into tar file

From the add-on directory create the tar file: tar -cvzf "<addon-short-id>.tar.gz" -C content
Create the addon tile in “Service Catalog” in CPD instance:

Config map template for enabling add-ons:

apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-{{ .Values.addon.id}}-{{ .Values.addon.version}}-configmap
labels:
icpdata_addon: "true"
data:
add-ons.json: |
{ "{{ .Values.addon.id }}":{ "details":{ "openURL":"{{ .Values.addon.openUrl }}" },
"versions":{ "{{ .Values.addon.version }}":{ "state":"enabled" }}}}
Deployment notes:
Requirements:
1. config map must be deployed as a helm release. This will ensure add-on enablement can be simply removed by deleting the helm release.
2. config map must contain correct add-on id to be able to match the existing placeholder add-on tile. This add-on id will be provided by IBM on-boarding team
3. openURL link should point to an already externally exposed service. On OpenShift platform service can be exposed by creating a route with a command like this:
à How to expose service:
Þ oc expose service <service-name> [--name=<route-name] by default the exposed URL will have the form of: http://<route-name>[-<namespace>].<suffix> where <suffix> is public hostname of the cluster To get the list of routes and exposed URLs run: oc get routes
To deploy the config map:
1. If you’re already using helm charts to deploy your service offering simply add the config map template to your existing helm charts.
2. If you are currently not using helm charts to deploy your offering you need to package the config map template as a standalone helm chart:
à helm create <chart-name>
à place contents of the above mentioned config map template in <chart-name>/templates/enable-addon-config.yaml
3. Install the chart ensuring the required parameters for addon.id, addon.version and addon.openURL are supplied either via values.yaml or command line arguments, for example: helm install -n <release-name> ./<chart-name> --set addon.version=<version-number> --set addon.openUrl=<absolute-URL-of-the-exposed-service> --set addon.id=<addon-id> --tls
Reverting add-on tile to non-enabled status:
1. Deleting helm release should revert add-on tile to previous state, that is, the Enabled badge will be removed and the Open link will be replaced with the “Getting Started” link.
Last modified 1yr ago