Pre-Installations for DES
The following pre-installations are to be performed before AKS creation:
- Transact pods to be deployed in AKS.
- DES database details are required.
- Azure Event Hub to be created and details like primary key, connection strings are to be noted which would be used when installing DES.
For DES to stream the events emitted by Transact application, you must check if the criterion are available as a part of Transact installation.
Enable the commit capture in tafj.properties with the value below.
temn.tafj.runtime.use.df.cache=true
Install the Enterprise Streaming (ES) product in SPF.
Set the Data Stream to Yes in the SYSTEM record in SPF.
An image is a standalone, executable software package that is necessary to run an application like code, runtime, system tools, system libraries and settings.
Follow the below steps to run a build environment with internet and target database (both Transact and streaming database) connectivity to build DES images:
- Download DES release pack from Distribution and unzip the contents in your build machine.
- Set Apache Maven and Java home in the system variables.
- Go to the artifacts folder and run the below command.
- Open README.md file in des-docker folder and set the variables according to the requirement to build DES images as shown below
- To install database-related scripts, DES requires the source and stream database details like (JDBC URL, username and password). These values can be overridden as environment variables Read section Overriding Keystore Entries in DES User Guide, to know how to override keystore.
- Edit the DES configuration property according to the requirement (for example, changing the table profiles configured for DES to listen, that is, temn.des.epa. data-event.tables=F_DATA_EVENTS,FBNK_DATA_EVENTS_ILP).
In case of Event Hub as streaming platform, refer des-eventhub-t24.properties file. This file is available in either of the paths below.
- Path 1: des-build/src/main/resources/des-config or
- Path 2: des-docker/src/main/resources/des-config
- Run the below command to build DES images.
des-tool.bat build
des-docker.bat build
- Tag the built images, for example, release version must be the release of DES (that is, 202101.0.0).
- Login to ACR using the below command.
az login- az acr login -n <<ACRName>>
- Push the images to required ACR using the below command.
- Similarly, pull and push the third-party images like Kafka, Zookeeper, Schema registry and so on to install the scripts.
mvn clean install
Variable required for DES
DES_DOCKER_ENV=t24
DES_DATABASE_VENDOR=sqlserver
DES_STEAM_VENDOR=eventhub
DES_TOOL_BUILD=true
docker tag mybank/des-config-installer <<ACRName>>/des-config-installer:<<releaseVersion>>
docker tag mybank/des-event-cleanup <<ACRName>>/des-event-cleanup:<<releaseVersion>>
docker tag mybank/des-event-processor <<ACRName>>/des-event-processor:<<releaseVersion>>
docker tag mybank/des-event-router <<ACRName>>/des-event-router:<<releaseVersion>>
docker tag mybank/des-event-pull-adapter <<ACRName>>/des-event-pull-adapter:<<releaseVersion>>
docker tag mybank/des-api <<ACRName>>/des-api:<<releaseVersion>> (Only if API is built)
docker tag mybank/des-tool <<ACRName>>/des-tool:<<releaseVersion>>
For example, ACRNAME - ctsdev.azurecr.io releaseVersion - 202108.0.0
docker tag mybank/des-config-installer ctsdev.azurecr.io/des-config-installer:202108.0.0
docker push <<ACRName>>/des-config-installer:<<releaseVersion>>
docker push <<ACRName>>/des-event-cleanup:<<releaseVersion>>
docker push <<ACRName>>/des-event-processor:<<releaseVersion>>
docker push <<ACRName>>/des-event-router:<<releaseVersion>>
docker push <<ACRName>>/des-pull-adapter:<<releaseVersion>>
docker push <<ACRName>>/des-api:<<releaseVersion>>
docker push <<ACRName>>/des_tool:<<releaseVersion>>
For example, ACRNAME - ctsdev.azurecr.io releaseVersion - 202108.0.0
docker push ctsdev.azurecr.io/des-config-installer:202108.0.0
- Pull
docker pull confluentinc/cp-schema-registry:5.2.2 docker pull confluentinc/cp-kafka:5.2.2
docker pull confluentinc/cp-zookeeper:5.2.2
- Tag
docker tag confluentinc/cp-schema-registry <<ACRNAME>>/confluentinc/cp-schema-registry:5.2.2 docker tag confluentinc/cp-kafka <<ACRNAME>>/confluentinc/cp-kafka:5.2.2
docker tag confluentinc/cp-zookeeper <<ACRNAME>>/confluentinc/cp-zookeeper:5.2.2
- Push
docker push <<ACRNAME>>/confluentinc/cp-schema-registry:5.2.2 docker push <<ACRNAME>>/confluentinc/cp-kafka:5.2.2
docker push <<ACRNAME>>/confluentinc/cp-zookeeper:5.2.2
Once all images are pushed to the mentioned ACR, you need to install DB scripts and DES configuration by running the below command. The environment running this command must have access to the Transact and streaming databases.
des-tool.bat/sh install
Setting up Third-Party Services
Once the Azure resources are available, follow the steps below to install third-party services. If Kafka, Zookeeper, Schema registry are already available as a part of the installation, then skip the step 4 and 5.
- Create Event Hub in Azure resources manually using the portal or using Azure cli using the command below. Attached a sample des_eventhub.json for reference. For all the required topics to be created, read the release notes section 4.3 in the DES release package.
- Execute the below commands to get values for Event Hub related environment variables to create a connection between DES and Event Hub.
- Event Hub Shared Access Key
az eventhubs namespace authorization-rule keys list -g $(shared.aksResourceGroup) --namespace-name
$(eventhubNamespace) --name RootManageSharedAccessKey --query primaryKey -o tsv
EXAMPLE: az eventhubs namespace authorization-rule keys list -g FRONT2BACK-aks --namespace-name front2backdeshubHA --name RootManageSharedAccessKey --query primaryKey -o tsv export EVENT_HUB_SHARED_ACCESS_KEY=<<value obtained from above execution>>- Event Hub Connection URL
az eventhubs namespace authorization-rule keys list -g $(shared.aksResourceGroup) --namespace-name
$(eventhubNamespace) -n RootManageSharedAccessKey --query "primaryConnectionString" -o tsv
EXAMPLE: az eventhubs namespace authorization-rule keys list -g FRONT2BACK-aks --namespace-name front2backdeshubHA -n RootManageSharedAccessKey --query "primaryConnectionString" -o tsv export EH_CONNECTION_URL=<<value obtained from above execution>>- Event Hub CI shared access key
az eventhubs namespace authorization-rule keys list -g $(shared.aksResourceGroup) --namespace-name
$(eventhubNamespaceCI) -n RootManageSharedAccessKey --query primaryKey -o tsv
EXAMPLE: az eventhubs namespace authorization-rule keys list -g FRONT2BACK-aks --namespace-name front2backdeshubCIHA -n RootManageSharedAccessKey --query primaryKey -o tsv export EVENT_HUB_CI_SHARED_ACCESS_KEY=<<value obtained from above execution>>- Event Hub CI connection URL
az eventhubs namespace authorization-rule keys list -g $(shared.aksResourceGroup) --namespace-name $(eventhubNamespaceCI) -n RootManageSharedAccessKey --query "primaryConnectionString" -o tsv
EXAMPLE: az eventhubs namespace authorization-rule keys list -g FRONT2BACK-aks --namespace-name front2backdeshubCIHA -n RootManageSharedAccessKey --query "primaryConnectionString" -o tsv export EVENT_HUB_CI_CONNECTION_URL=<<value obtained from above execution>> - Go to SQL managed instances and get the database host details and database name, username, and password for Transact and DES databases. The same details are used to construct the database related properties that can be overridden using setters (--set) when installing DES using helm.
- If third-party helm charts are not available in the des-docker/src/helm/3rdParty folder, then execute the command below to start the third-party services, such as Kafka and Schema registry.
az acr helm repo add -n $(crName)
helm repo add confluentinc https://confluentinc.github.io/cp-helm-charts/ helm repo update
helm upgrade kafka-oss confluentinc/cp-helm-charts --install --version 0.5.0 -n kafka
- The charts available in des-docker/src/helm/3rdParty folder is a copy of confluent helm charts and uses community edition of confluent images. If Confluent images are pushed to a local registry, run the command below
helm install kafka-oss 3rdParty/cp-helm-charts --version 0.5.0 -n kafka \
--set cp-zookeeper.image=<<ACRNAME>>/cp-zookeeper \
--set cp-zookeeper.imageTag=5.2.2 \
--set cp-kafka.image=<<ACRNAME>>/cp-kafka \
--set cp-kafka.imageTag=5.2.2 \
--set cp-schema-registry.image=<<ACRNAME>>/cp-schema-registry \
--set cp-schema-registry.imageTag=5.2.2 \
--create-namespace
Here ACRNAME - Container registry where images are available. eg. ctsdev.azurecr.io
az group deployment create -g <<Resource group>> --template-file <<path to des_eventhub.json>>
Initiating DES Services
In the Helm or Event Hub folder, you have values .yaml files which contains various values that are required to start DES pods. These values can either be passed as overrider using -set during helm installation of DES or can be edited and stored in the same file. The table below contains the notable parameters and a brief explanation of what it represents.
Property name | Default Value | Description | Possible values |
|---|---|---|---|
| des. des_tool_enabled | true | Enables DES tool pod to be run for installation of configuration and SQL scripts |
|
des.ci_mode | run-web | Config-installer start mode |
|
des.schema_ip | - | IP of the schema registry service that is deployed as a part of third-party installation | IP address of the hosted schema registry service |
des.kafka_ip | - | IP of Kafka service that is deployed as a part of third-party installation | IP address of the hosted Kafka service |
des.t24_host_ip | - | IP of the machine hosting Temenos Transact database | IP address |
des. stream_host_ip | - | IP of the machine hosting streaming database | IP address |
des.schema_url | http://kafka-oss-cp-schema- registry.kafka:8081 | End point of the schema registry service. This is an optional one and value is not required if schema_ip is provided | End point of schema registry |
des.db_vendor | - | Type of database vendor |
|
des. stream_vendor | - | Type of streaming platform used |
|
des. stream_instance_ unique | true | In case of autoscaling, each DES pod has unique values for certain native properties. Setting this as True makes these values unique without requiring user setting changes. |
|
temn.source.db. jdbc.driver | - | Driver value for the database |
|
temn.source.db. jdbc.user | - | Username for Temenos Transact database | Username |
temn.stream.db. jdbc.user | - | Username for DES database | Username |
temn.source.db. jdbc.password | - | Password for Temenos Transact database user. Provide the value in reverse, if override password class and method is set | Password |
temn.stream.db. jdbc.password | - | Password for DES database user. Provide the value in reverse, if override password class and method is set | Password |
temn.source.db. jdbc.url | - | Connection string value of Temenos Transact database | JDBC URL of Temenos Transact database |
temn.stream.db. jdbc.url | - | Connection string value of DES database | JDBC URL of DES database |
image.registry | - | Registry from which images needs to be pulled | In case of offline installation, the local registry, for example,
localhost:5000 |
image.pullPolicy | IfNotPresent | pullPolicy for the pods are set |
|
image.appVersion | - | Version of image to be used | Version of image to be used, in this case it is 202101.0.0 |
To install DES in AKS platform:
- Execute the command below to install DES pods.
- Check if the pods are running using the command below.
- Check if the services are running using the command below.
- Hit the health end points for each of the installation to confirm the status. The end points below are samples which are accessed from tool like Postman to view the output.
EPA: http://<<EXTERNAL-IP>>:13100/meta/health
EC: http://<<EXTERNAL-IP>>:13110/meta/health
EP: http://<<EXTERNAL-IP>>:13120/meta/health
ER: http://<<EXTERNAL-IP>>:13130/meta/health
CI: http://<<EXTERNAL-IP>>:13140/meta/health
In this example since all the pods are deployed in single node the <<EXTERNAL-IP>> - localhost
Syntax: helm install [RELEASE] [CHART FOLDER PATH] parameters helm install des eventhub --version 0.1.0 -n des \
--set des.schema_ip=10.111.130.39 \
--set des.kafka_ip=10.103.255.33 \
--set des.t24_host_ip=192.168.0.107 \
--set des.stream_host_ip=192.168.0.107 \
--set image.registry=localhost:5000 \
--set image.pullPolicy=IfNotPresent \
--set image.appVersion=202101.0.0 \
--set temn.source.db.jdbc.user=t24 \
--set temn.stream.db.jdbc.user=t24 \
--set temn.source.db.jdbc.password=t24 \
--set temn.stream.db.jdbc.password=t24 \
--set temn.source.db.jdbc.url="jdbc:h2:tcp://192.168.0.107:3456/TAFJDB" \
--set temn.stream.db.jdbc.url="jdbc:h2:tcp://192.168.0.107:3456/TAFJDB" \
--set temn.source.db.jdbc.driver="org.h2.Driver" \
--set temn.stream.db.jdbc.driver="org.h2.Driver" \
--set des.des_tool_enabled=true \
--set des.db_vendor=sqlserver \
--set des.stream_vendor=eventhub \
--set des.des_tool_args=install \
--set des.stream_instance_unique=true \
--set event.event_hub_shared_access_key=$(EVENT_HUB_SHARED_ACCESS_KEY) \
--set event.event_hub_resource_group_host=$(eventhubNamespace).servicebus.windows.net \
--set event.event_hub_jass_config="$(EH_CONNECTION_URL)" \
--set event.event_hub_ci_resource_group_host=$(eventhubNamespaceCI).servicebus.windows.net \
--set event.event_hub_ci_shared_access_key=$(EVENT_HUB_CI_SHARED_ACCESS_KEY) \
--set event.event_hub_ci_jass_config="$(EVENT_HUB_CI_CONNECTION_URL)" \
--create-namespace
kubectl get svc -n des
In any of the commands above, the set can be removed and values can directly be set in the values.yaml of DES Helm chart available under des-docker/src/helm/eventhub
Third-party installation related charts are provided by confluent and the same is packaged in DES under helm/3rdParty folder. Kindly read through the confluent documentation to understand more on installation and maintenance of the confluent pods.
Streaming platforms (Kafka or Kinesis or Event Hub) used by DES for streaming are third-party services that must be maintained and managed by the users. Startup scripts in DES download confluent package as zip (standalone) or confluent image(docker) from the official Confluent site. These are nothing but the community edition (CE) of confluent package and it is recommended to upgrade to licensed version for production.
The packages are downloaded using the links below:
In this topic