Installation Process
Detailed information how to install IBM Financial Services Workbench
Preparation
Ensure that all system requirements are met.
For executing the installation itself following requirements should be met on the machine from where the installer is executed:
-
Logged in into the OpenShift cluster as cluster-admin
-
A local docker daemon is installed and running
-
Bash and tar utility are available
-
The installer package (e.g.
ssob-*-ibm-openshift-4.1-cpd-installations.tgz
) was downloaded and unpacked
For the installation of FSW you will need a Keycloak admin with the privileges to create realms and to configure them. In general those included jobs can also be omitted by configuration. So no realm or clients for the components would be created while the installation.
Furthermore, the user for the messagehub (kafka) needs the privileges to create topics and to create events and listen to them.
Step 1: Setup cluster-wide resources
Introduction
Cluster-wide resources are setup via executing the script ssob_admin_setup.sh
, that is part of the installer.
It must be executed as a user with cluster-admin permissions in the OpenShift cluster.
It can be configured via commandline arguments, that are described later on.
Description
The ssob_admin_setup.sh
will create and configure the following:
- An extra OpenShift project (referred to as envoy namespace) for the installation of envoy components
- Add permission to view CustomResourceDefinitions in the envoy namespace
- Create a CustomResourceDefinition for built solutions (
solutions.sol.rt.cp.knowis.de
) - Add permission to push images into the envoy project to the
builder
service account of the cpd namespace - Optionally: creates a
route
for the OpenShift docker registry - Add permissions to access the crd for built solutions
(
solutions.sol.rt.cp.knowis.de
) to the service accounts in the cpd namespace and envoy project - Configure the envoy project as tethered namespace to cpd, meaning it associates permissions of the envoy project to the serviceaccounts available in the cpd namespace
Parameters
The ssob_admin_setup.sh
script has the following parameters:
Variable | Description | Example value |
---|---|---|
--accept_license |
Set flag to confirm that the license aggreement has been read and accepted
(license files can be found in the installation package folder
./ssob-install/deployments/LICENSES ) |
|
--cpdlite_namespace |
Name of the cpd-lite project in the OpenShift cluster | cpd |
--tethered_namespace |
Name of the envoy project in the OpenShift cluster | cpd-runtime-default |
--external_address_image_registry |
External address of the internal docker registry for creating a route (without namespace), if not set the route will not be created | image-registry.apps.openshift-cluster.mydomain.cloud |
--image_registry_namespace |
Namespace of internal docker registry | openshift-image-registry (default value) |
--image_registry_service |
Service of internal docker registry | image-registry (default value) |
Additional Notes
The route for the OpenShift image registry will only be created if the parameter --external_image_registry
is set.
If you want to create an additional envoy, the admin script must also
be executed for the additional envoy (see
--tethered_namespace
)
Example
./ssob_admin_setup.sh --accept_license --cpdlite_namespace=cpd --tethered_namespace=cpd-runtime-default
Step 2: Manually create secrets
The secret containing the access data to the s3 storage service is currently not created by the installer.
The secret containing data for the personal access token of a root user in GitLab
(gitlab-admin-token
) is currently not created by the installer.
Therefore those two secrets must be provided manually.
-
Log in to the OpenShift cluster and choose the appropriate namespace, where cpd is installed
Example for login to the cluster and chossing the namespace
cpd
:oc login https://openshift-cluster.mydomain.cloud:6443 --token=ABCDEFGHIJKLMN oc project cpd
-
Create a secret named
s3storage-secret
and fill it with the appropriate values for accessing the s3 storage, that is used for the marketplace. Typically a minio installation is used for this, which is included in the GitLab installation.The secret must contain the following information:
Key Description accesskey
The accesskey for accessing the s3 storage endpoint secretkey
The secretkey for accessing the s3 storage endpoint For a minio service provided by GitLab the values can be found in a yet exisiting secret, that is located in the namespace where GitLab was installed. By default the secret ends with
-minio-secret
.Example for creating a secret containing the s3 storage access data
oc create secret generic "s3storage-secret" --type="Opaque" \ --from-literal="accesskey"="ICnh47lt3YmwSmy801Dfobi9Wf82oK6gHxJzA9LbxgiFcAW5pSPPcJPjxiy8YylN" \ --from-literal="secretkey"="BGh6SkSi35egd7mkMxKj#QFB6UnpQyyXw5remhMLwwrwiiQVVmIgKzchc3CuEY5xL"
-
Create a secret named
gitlab-admin-token
and fill it with the appropriate values for accessing GitLab with admin permissions. Typically a personal access token for the user root is used for this.The secret must contain the following information:
Key Description name
The name of the token token
The value of the personal access token A personal access token in GitLab can be created via the web interface. Please login as administrative user and open the personal settings of the user (right upper corner). In the menu on the left click on
Access Tokens
. Create a token by filling out the form and granting the scopesapi
andsudo
. After submitting the form, the token will be deisplayed.Example for creating a secret containing the GitLab admin token
oc create secret generic "gitlab-admin-token" --type="Opaque" \ --from-literal="name"="admin-token" \ --from-literal="token"="31ajxZJzwhxtoqRGThyV"
Step 3: Installation of IBM Financial Services Workbench
Introduction
The installer provides three packages for installing three components:
solution-designer-*.tar.gz
solution-hub-*.tar.gz
solution-envoy-*.tar.gz
The installation itself is done via executing the script ssob_install.sh
.
It can be executed as a user with admin permissions in the touched OpenShift namespaces.
It can be configured via commandline arguments, that are described later on.
Description
The installer will configure and install the following componentes via helm charts into the already existing namespace of cpd:
solution-designer
solution-hub
Without any further configuration the components will be reusing the existing cpd service-accounts.
The installer will create and configure the envoy project and install a new solution-envoy
via
helm chart. It creates all secrets containing
sensitive data (needed for the deployments and jobs).
Each package contains all used docker images and helm charts. During the installation all provided and used docker images are pushed into the configured registry. For convenience it should be the internal OpenShift registry.
The installation script
(ssob_install.sh
) creates the following needed k8s secrets
(containing all needed sensitive data) using the oc cli and the
install_init_data.yaml
file:
- mongodb binding for the solution-envoy
- kafka binding for the solution-envoy
- mongodb binding for the solution-designer
- tls secrets for all components
- secret containing the admin credentials for the identity server
The installer contains also an additional
package (config-solution-pipeline-gitlab-*.tar.gz
). This
package should be used for configuring the GitLab pipeline. Its an example and should
be enabled via parameter (see --include_config_gitlab_pipeline
). It contains suitable default
configuration values and can be adjusted to the needs.
This package creates:
- Keycloak client for the solution pipeline to call the configuration management
- Needed GitLab ci variables for executing the solution pipeline
- Pipeline definition of the solution pipeline
- Adjust gitaly timeouts
Parameters
The ssob_install.sh
script has the
following parameters:
Variable | Description | Example |
---|---|---|
--accept_license |
Set flag to confirm that the license aggreement has been read and accepted
(license files can be found in the installation package folder
./ssob-install/deployments/LICENSES ) |
|
--external_address_image_registry |
Docker registry for pushing the images into the used registry (normally the external available address) (without namespace) | image-registry.apps.openshift-cluster.mydomain.cloud |
--internal_address_image_registry |
Docker registry for pulling images in OpenShift (usually the internal docker registry) | image-registry.openshift-image-registry.svc:5000 |
--cpdlite_namespace |
Name of the cpd-lite project in the OpenShift cluster | cpd |
--tethered_namespace |
Name of the envoy project in the OpenShift cluster | cpd-runtime-default |
--identity_provider_host |
URL of the identity provider | https://identity.apps.openshift-cluster.mydomain.cloud |
--host_domain |
Hostname of the OpenShift cluster | apps.openshift-cluster.mydomain.cloud |
--only_solution_envoy |
Optional: install only a new solution-envoy (default is to install all 3 components at once) | |
--only_solution_designer |
Optional: install only a new solution-designer (default is to install all 3 components at once) | |
--only_solution_hub |
Optional: install only a new solution-hub (default is to install all 3 components at once) | |
--include_config_gitlab_pipeline |
Recommended: include and install the configuration package for the solution pipeline in GitLab | |
--skip_docker_login |
Optional: skip the docker login (can be used if you are already logged in) | |
--skip_helm_tls |
Optional: disable tls for helm requests | |
--helm-tls-ca-cert |
Optional: path to the TLS CA certificate file (default "$HELM_HOME/ca.pem") for helm commands | /path/to/my/ca.cert.pem |
--helm-tls-cert |
Optional: path to TLS certificate file (default "$HELM_HOME/cert.pem") for helm commands | /path/to/my/cert.pem |
--helm-tls-key |
Optional: path to TLS key file (default "$HELM_HOME/key.pem") for helm commands | /path/to/my/helm.key.pem |
--start_docker_daemon |
Optional: start the docker daemon via the script |
Configurations
#
with appropriate values, e.g.
registry: "#DOCKER_REGISTRY#/#NAMESPACE#"
will be resolved to
registry: "image-registry.openshift-image-registry.svc:5000/cpd"
.install_init_data_file
The following configuration yaml file can be found in the
directory ../ssob-install/deployments/ing-poc
and needs to be
adjusted:
Variable | Description | Example |
---|---|---|
global.identity.adminUser |
Username of a Keycloak admin | admin |
global.identity.adminPassword |
Password of a Keycloak admin |
|
global.ingress.tls.crt |
Ingress tls certificate, typically that one that is used as the default router certificate in OpenShift. This is most commonly a wildcard certificate. |
|
global.ingress.tls.key |
Ingress tls key, typically that one that is used as key for the default router certificate in OpenShift |
|
global.mongodb.dt.connectionString |
Mongo database connection string, that will be used for the Solution Designer | mongodb://admin:password@mongodb.foundation.svc.cluster.local:27017/admin?ssl=false |
global.mongodb.rt.connectionString |
Mongo database connection string, that will be used for the Solution Envoy | mongodb://admin:password@mongodb.foundation.svc.cluster.local:27017/admin?ssl=false |
global.messagehub.brokersSasl |
MessageHub bootstrap servers adress array | [\"kafka-cluster-kafka-bootstrap.foundation.svc.cluster.local:9093\"] |
global.messagehub.user |
Username for the MessageHub service user | kafka-user |
global.messagehub.password |
Password of the user for the MessageHub service | sercret123 |
solution-hub-values.yaml
The following configuration yaml file can be found in the
directory ../ssob-install/deployments/ing-poc
and needs to be
adjusted:
Variable | Description | Example |
---|---|---|
global.identity.realm |
Used realm in the identity provider | ssob (default value) |
global.hosts.codeGenerationProvider.name |
Hostname for the coden generation provider (without protocol) | ssob-code-gen.apps.openshift-cluster.mydomain.cloud (default value) |
global.hosts.cliProvider.name |
Hostname for the cli provider (without protocol) | ssob-cli-provider.apps.openshift-cluster.mydomain.cloud (default value) |
global.hosts.configurationManagement.name |
Hostname for the configuration management (without protocol) | ssob-config.apps.openshift-cluster.mydomain.cloud (default value) |
global.hosts.envoyController.name |
Hostname for the envoy controller (without protocol) | ssob-envoy-controller.apps.openshift-cluster.mydomain.cloud (default value) |
global.hosts.solutionController.name |
Hostname for the solution controller (without protocol) | ssob-sdo.apps.openshift-cluster.mydomain.cloud (default value) |
global.truststore.trustMap |
List of certificates that is used for the proper communication over SSL. The list should include
all certificates in PEM ASCII format for the communication with
|
|
solution-controller.gitLabApi.baseUrl |
Url of the GitLab service (the internal service address could be used as well) | https://gitlab.apps.openshift-cluster.mydomain.cloud |
solution-controller.marketplace.storage.endpoint |
Endpoint to a s3 storage service (minio). Minio is typically provided by GitLab | https://minio.apps.openshift-cluster.mydomain.cloud |
solution-controller.marketplace.storage.secretName |
Name of a secret containing the credetials to access the s3 storage service. It must contain the
keys accesskey and
secretkey . It must be located in the same namespace as the Solution Hub. The secret
was created manually in step 2. |
s3storage-secret |
solution-controller.gitlabApi.adminTokenSecret |
Name of a secret containing the credetials to access the GitLab service as an admin. It must contain the
keys name and
token for a root user in gitlab. It must be located in the same namespace as the
Solution Hub. The secret was created manually in step 2. |
gitlab-admin-token |
solution-designer-values.yaml
The following configuration yaml file can be found in the
directory ../ssob-install/deployments/ing-poc
and needs to be
adjusted:
Variable | Description | Example |
---|---|---|
global.environment.host |
Hostname for the solution designer (without protocol) | ssob-sc.#DOMAIN# (default value) |
global.identity.realm |
Used realm in the identity provider. It must correspond to the URL that was specified at
global.identity.realm in the file solution-hub-values.yaml . |
ssob (default value) |
cp-dt-backend.mongoDb.dbName |
Name of the Mongo database | ssob-sc (default value) |
cp-dt-backend.solutionController.url |
Url to the solution controller. It must correspond to the URL that was specified at
global.hosts.solutionController.name in the file solution-hub-values.yaml . |
https://ssob-sdo.#DOMAIN# (default value) |
cp-dt-backend.solutionController.internalUrl |
Cluster internal URL to the solution controller service | https://solution-controller.#NAMESPACE#.svc.cluster.local (default value) |
cp-dt-backend.codeGenerationProvider.url |
URL to the code generation provider service. It must correspond to the URL that was specified at
global.hosts.codeGenerationProvider.name in the file solution-hub-values.yaml . |
https://ssob-code-gen.#DOMAIN# (default value) |
cp-dt-backend.cliProvider.url |
URL to the code generation provider service. It must correspond to the URL that was specified at
global.hosts.cliProvider.name in the file solution-hub-values.yaml . |
https://ssob-cli-provider.#DOMAIN# (default value) |
global.truststore.trustMap.identity |
List of certificates that is used for the proper communication over SSL. The list is represented as
a single string containing multiple certificates in PEM ASCII format and covers communication with
|
|
solution-envoy-values.yaml
The following configuration yaml file can be found in the
directory ../ssob-install/deployments/ing-poc
and needs to be
adjusted:
Variable | Description | Example |
---|---|---|
global.edition |
Edition of the solution envoy either dev or prod in regards to the licensing |
dev (default value) |
global.environment.host |
Hostname for the solution envoy (without protocol). It will form the url of the envoy and will also be used as base url for all deployed solutions. | dev-default.#DOMAIN# (default value), would lead to a url like
https://dev-default.apps.openshift-cluster.mydomain.cloud |
global.identity.realm |
Used realm in the identity provider | ssob (default value) |
global.messagehub.secretName |
Name of a secret containing the binding (access credentials) for the messagehub (kafka) | binding-#NAMESPACE#-message-service (default value) |
global.messagehub.saslMechanism |
Authentication mechanism for the usage with the messagehub (kafka) | SCRAM-SHA-512 (default value) or PLAIN |
global.messagehub.saslJaasConfigLoginModule |
Login module for the authentication mechanism for the usage with the messagehub (kafka). Must be in
sync with the authentication mechanism given at global.messagehub.saslMechanism |
org.apache.kafka.common.security.scram.ScramLoginModule (default value) or
org.apache.kafka.common.security.plain.PlainLoginModule |
dashboard.feature.debugServer |
Enable or disable the debug server api in the dashboard (possible values are true or
false ) |
false (default value) |
dashboard.feature.mvnDeps |
Enable the maven dependencies service for downloading needed sdk for local development
for java custom solutions (possible values are true or
false ) |
false (default value) |
debugserver.install |
Enable installation of the debug-server (recommended only for dev and test environments)
(possible values are true or
false ) |
false (default value) |
runtime-infrastructure.envoy.type |
Type of the envoy (possible values are DEV ,
TEST or PROD ) |
DEV (default value) |
runtime-infrastructure.envoy.stage |
Stage of the envoy where its deployed (can be any String) | Envoy Dev (default value) |
global.truststore.trustMap |
List of certificates that is used for the proper communication over SSL. The list should include
all certificates in PEM ASCII format for the communication with
|
|
cfg-gitlab-values.yaml
--include_config_gitlab_pipeline
was set.
The following configuration yaml file can be found in the
directory ../ssob-install/deployments/ing-poc
and needs to be
adjusted:
Variable | Description | Example |
---|---|---|
global.identity.realm |
Used realm in the identity provider. It should correspond to the realm that was specified at
global.identity.realm in the file solution-hub-values.yaml . |
ssob (default value) |
global.hosts.gitlab.name |
Hostname of GitLab server (without protocol) | gitlab.{{ .Values.global.hosts.domain }} (default value) |
global.hosts.configurationManagement.name |
Hostname of the configuration management (without
protocol). It must correspond to the URL that was specified at
global.hosts.solutionController.name in the file solution-hub-values.yaml . |
ssob-config.{{ .Values.global.hosts.domain }} (default value) |
Additional Notes
The installer can also be used for only adding an additional solution-envoy
.
GitLab should also be integrated with Keycloak to use the same user base. The preferred realm is
the realm (by default ssob
), that was created during the installation. In general the user mapping
is done by comparing the claim username
of the user's JWT with the username
of
the GitLab user.
Certificates for services that are called with a cluster based url (e.g. myservice.namespace.svc.cluster.local
)
may be omitted in truststores, if the services are using certificates issued by the internal cluster ca.
The certificates in the truststore should always contain the complete certificate chain.
To fully comply with the license terms it is required that the CPD Control Plane is installed in each tethered project as well. This is not required in POC situations.
Example
./ssob_install.sh \
--external_address_image_registry=image-registry.apps.openshift-cluster.mydomain.cloud \
--internal_address_image_registry=image-registry.openshift-image-registry.svc:5000 \
--cpdlite_namespace=cpd \
--tethered_namespace=cpd-runtime-default \
--identity_provider_host=https://identity.apps.openshift-cluster.mydomain.cloud \
--host_domain=apps.openshift-cluster.mydomain.cloud \
--include_config_gitlab_pipeline
docker-registry.default.svc:5000
whereas in OpenShift 4.1 or higher it points
to image-registry.openshift-image-registry.svc:5000
.
Step 4: Post-Install Configuration
After the installation was successfull and all components are up and running. The following configurations have to be done before the product is ready to use:
- Creating an user to login into the components (see User Configuration)
- Post Installation steps (see Post Installation steps)
- Configuration of the pipeline in GitLab (see Repository Configuration)
- Configuration of the pipeline in the configuration management (see Pipeline Configuration)
- Configuration of cluster wide resources in the configuration management (see Cluster wide configuration)
- Configuration of the envoy in the configuration management (see Solution Enovy configuration)
FAQs
-
Q. Where is ssob_install.sh (release package is ssob-cpd-installations.tgz)?
Ans. Once you have extracted release package, it can be found under
ssob-cpd-installations/ssob-install/deployments/ssob_install.sh
-
Q. Pushing images to docker registry failed, where to see error logs?
Ans. Error logs of installutil can be accessed under:
/tmp/wdp.install.log
-
Q. How can I add additional envoys (Stages)?
Ans. The installation of a new additional envoy happens again with the two scripts:-
Setup cluster-wide resources (
ssob_admin_setup.sh
) -
Install IBM Financial Services Workbench (
ssob_install.sh
)
First adjust the following values:
-
the script parameters for
ssob_admin_setup.sh
(e.g. --tethered_namespace
)
-
in the yaml files (
install_init_data.yaml
andsolution-envoy-values.yaml
) -
the script parameters for
ssob_install.sh
(e.g. --tethered_namespace
) -
add the parameter
--envoy_only
for executing thessob_install.sh
.
-