Customizing the TIBCO Cloud™ API Management - Local Edition Deployment Manifest

Based on the outcome of the planning phase, you can create a Kubernetes cluster spanning one or more nodes. You can also change the deployment manifest appropriately with the number of components per zone.

Important: Before you customize your API Management - Local Edition cluster, make sure the value in the tml_image_tag parameter matches your Docker image build. For example, to verify "tml_image_tag": "v5.0.0.1" , you can check the Docker image build in Jenkins as shown below:



Files to Modify

In the Local Edition installer container, change to the following folder:

/var/jenkins_home/docker-deploy/aws/k8s

Update the appropriate deployment manifest using the descriptions in the tables in the "Customize Kubernetes Cluster" section below:

  • manifest-single-zone.json for deployment in a single AWS zone.
  • manifest-multi-zones.json for deployment in multiple AWS zones.
  • manifest-single-host.json for deployment in a single AWS VM.

Customize Kubernetes Cluster

The following parameters in the applicable manifest must be configured:

Parameter Description
tml_image_tag Local Edition Docker image tag. This must be updated to match your Docker image build. For more information, see the note at the top of this section.
tml_cluster_name Name for the Local Edition cluster.
tml_cluster_mode There are two valid modes:
  • tethered - Local Edition gets the configuration data from TIBCO Cloud™ API Management cloud. In this mode, an Administrator must specify mom_key and mom_secret in the following file:

    /var/jenkins_home/docker-deploy/properties/tml_cluster_properties.json

  • untethered - Data is configured via the Local Edition configuration manager UI.
aws_access_key_id AWS Access Key ID
aws_secret_access_key AWS Secret Access Key
aws_role_arn AWS Role ARN. This must be configured if role-based access control is used.
aws_default_region AWS Default Region
aws_s3_region AWS Region for S3 Bucket
k8s_aws_zones The AWS zones in which the AWS Kubernetes and Local Edition clusters are deployed.

The following parameters in the applicable manifest should be configured:

Parameter Description
k8s_node_size The instance type for the Kubernetes worker nodes. For example: m3.small, m3.medium, m3.large.

Based on the deployment type, the following node size is recommended:

Deployment Node Size
Normal >= m3.large
No OAuth < m3.large
k8s_node_volume_size The disk size, in GB.
k8s_node_count The number of worker VMs in the AWS Kubernetes cluster. Customize this for your deployment. If you plan to create a multi-zone cluster, an equal number of nodes are recommended per zone. For example, use 9 if you want to create 3 nodes in three regions: us-east-1a, us-east-1b, and us-east-1e under us-east-1 region.
k8s_master_count The number of nodes that act as the Kubernetes master for the Kubernetes cluster.
k8s_master_size The instance type for the Kubernetes master node. For example: m3.small, m3.medium, m3.large.

Based on the number of nodes in the cluster, the following master node size is recommended:

Number of Nodes in Cluster Master Size
<5 m3.medium
6 - 10 m3.large
>10 m3.xlarge
k8s_master_volume_size The memory size of the Master node.
tml_cm_count Number of Cluster Manager containers, in a single-zone deployment, or per zone, in a multiple-zone deployment.
tml_tm_count Number of Traffic Manager containers, in a single-zone deployment, or per zone, in a multiple-zone deployment.
tml_cache_count Number of Memcached containers, in a single-zone deployment, or per zone, in a multiple-zone deployment.
tml_sql_count Number of MySQL containers, in a single-zone deployment, or per zone, in a multiple-zone deployment.
tml_log_count Number of Log Service containers, in a single-zone deployment, or per zone, in a multiple-zone deployment.
tml_nosql_count Number of Cassandra containers, in a single-zone deployment, or per zone, in a multiple-zone deployment.
k8s_deploy_namespace

k8s_storage_type

k8s_storage_provisioner

tml_sql_storage_size

tml_log_storage_size

tml_nosql_storage_size

tml_cache_storage_size

Used to control storage size
tml_tm_http_enabled

tml_tm_http_port

tml_tm_https_enabled

tml_tm_https_port

tml_tm_oauth_enabled

tml_tm_oauth_port

tml_api_http_enabled

tml_api_http_port

tml_api_https_enabled

tml_api_https_port

tml_cm_http_enabled

tml_cm_http_port

tml_cm_https_enabled

tml_cm_https_port

Used to control services
cassandra_max_heap The maximum heap size for the Cassandra distributed datastore.
cassandra_replication_factor The number of replicas of each data entry. This should be less than the number of Cassandra nodes.

Example

"tml_cluster_name": "Tibco Mashery Local Reference Cluster",
"aws_access_key_id": "",
"aws_secret_access_key": "",
"aws_default_region": "us-east-1",
"aws_s3_region": "us-east-1",
"aws_role_arn": "arn:aws:iam::123456789012:role/TIBCO/Administrator",

"k8s_aws_zones": ["us-east-1e"],

"k8s_master_count": 1,
"k8s_master_size": "m3.medium",
"k8s_master_volume_size": 32,
"k8s_node_count": 3,
"k8s_node_size": "m3.large",
"k8s_node_volume_size": 32,
"tml_image_tag": "v5.1.0.1",
"tml_cluster_mode": "tethered",

"tml_cm_count": 1,
"tml_tm_count": 3,
"tml_cache_count": 3,
"tml_sql_count": 1,
"tml_log_count": 2,
"tml_nosql_count": 3,

"k8s_deploy_namespace": "default",
"k8s_storage_type": "gp2",
"k8s_storage_provisioner": "kubernetes.io/aws-ebs",
"tml_sql_storage_size": "10Gi",
"tml_log_storage_size": "10Gi",
"tml_nosql_storage_size": "10Gi",
"tml_cache_storage_size": "10Gi",

"tml_tm_http_enabled": "true",
"tml_tm_http_port": 80,
"tml_tm_https_enabled": "false",
"tml_tm_https_port": 443,
"tml_tm_oauth_enabled": "false",
"tml_tm_oauth_port": "8083",

"tml_api_http_enabled": "false",
"tml_api_http_port": 7080,
"tml_api_https_enabled": "false",
"tml_api_https_port": 7443,

"tml_cm_http_enabled": "false",
"tml_cm_http_port": 8080,
"tml_cm_https_enabled": "false",
"tml_cm_https_port": 8443,

"cassandra_max_heap": "512M",
"cassandra_replication_factor": 2

Generating Deployment Scripts and Configuration

Generate deployment scripts and configuration by running the appropriate command in the /var/jenkins_home/docker-deploy/aws/k8s/ folder:

  • Single-zone deployment:
    ./compose.sh manifest-single-zone.json

    The deployment scripts and configuration are generated in the manifest-single-zone folder.

  • Multi-zone deployment:
    ./compose.sh manifest-multi-zones.json

    The deployment scripts and configuration are generated in the manifest-multi-zones folder.

An example output for single-zone deployment is:

TMG_CLUSTER_NAME: TML Reference Cluster Single Zone
TMG_CLUSTER_MODE: tethered
in "tethered" mode, admin must specify "api_key" and "api_secret" in "tml_sql_properties.json" and "tml_log_properties.json"
TMG_CLUSTER_TAG: 4984199f97988b245f35601743b9303b
K8S_AWS_ZONES us-east-1e
TMG_ZONE_NAME 0: us-east-1e
TMG_ZONE_COUNT: 1
TMG_RELEASE_VERSION: 5.2.0
TMGC_REPO_NAME: tml/v5.2.0.1
repositoryUri 894547326815.dkr.ecr.us-east-1.amazonaws.com/tml/v5.2.0.1
AWS_REGISTRY_HOST 894547326815.dkr.ecr.us-east-1.amazonaws.com