Component Type reference
Exposed configs in service definition fileThis document outlines usage of various component types and extensible configs.
Odin provides describe
action to help understand exact definitions of various entities.
odin describe component-type
Let's explore describe
action on component-type
To get list of all possible component type use the below command
Now to understand config of a specific component-type, use the below command
Output of the above command will be something like this
The above output has two component - the exact definition_json for the given component-type used by odin to provision the component and the list of exposed configs that can be used in service definition
Let's deep dive into each component-type
redis
Exposed configs in Service definition
name
Component name
Yes
string
type
Component type
Yes
string
version
Component version
Yes
string
depends_on
List of components which should be provisioned before redis is provisioned
No
array
{"type": "array", "items": {"type": "string", "minLength": 1}, "uniqueItems": true}
config.route.private
DNS where redis will be discoverable
No
string
{"type": "string", "pattern": "[a-zA-Z._-]+\${TEAM_SUFFIX}\.dream11\${VPC_SUFFIX}\.local"}
Exposed config in Provisioning file
deployment_type
Where the component should be deployed. Allowed values: container, aws_elasticache
No
string
params.instance_type
Instance type for AWS ElastiCache cluster in which redis will be deployed
No
string
params.node_replicas
Number of read replicas to create per node group for the AWS ElastiCache cluster
No
integer
params.parameter_group_name
Name of the parameter group to associate with the AWS ElastiCache cluster
No
string
params.shards
Number of node groups (shards) to create for the AWS ElastiCache cluster
No
string
Example service definition and provisioning file
application
Exposed configs in Service definition
name
component name
string
Yes
type
component type
string
Yes
version
component version
string
Yes
config.artifact_name
artifact name of the application
string
Yes
{'type': 'string', 'message': {'pattern': 'artifact name must contain only lower case alphabet, numbers or -'}, 'pattern': '^[a-z][a-z0-9-]*$'}
config.artifact_version
artifact version of the application
string
Yes
config.build_type
base image type on which the application runs
string
Yes
config.build_version
base image version on which the application runs
string
Yes
config.discovery
at what level the application should be discoverable
string
No
{'enum': ['private', 'public', 'both', 'none'], 'type': 'string'}
config.extra_envs
environment variables required while starting the application
object
No
config.healthcheck_protocol
protocal to be used for healthcheck API
string
No
HTTP
{'enum': ['HTTP', 'TCP', 'GRPC'], 'type': 'string'}
config.liveness_endpoint
api endpoint to check application is running
string
No
healthcheck
config.loadbalancer-type
type of load balancer
string
No
alb
config.port
port at which the application is running
integer
No
8080
config.readiness_endpoint
api endpoint for healthcheck
string
No
healthcheck
config.route.private
private DNS endpoint of the application
string
No
config.route.public
public DNS endpoint of the application
string
No
config.start_script_path
path of script to start the application
string
No
.odin/start.sh
config.config_store_directory
directory name in config store to fetch configs from
string
No
depends_on
List of components on which application depends on
array
No
{'type': 'array', 'items': {'type': 'string'}, 'minItems': 1, 'uniqueItems': True}
Exposed config in Provisioning file
deployment_type
platform on which the component should be deployed
string
No
container
{'enum': ['container', 'aws_ec2'], 'type': 'string'}
env_variables
environment variables required while starting the application
object
No
params.add_legacy_tags
flag to add legacy tags to the resources
boolean
No
true
params.auto_routing
automatic route traffic from old stack to new stack
boolean
No
true
params.autoscale_cpu_percentage_threshold
cpu percentage which triggers autoscaling
integer
No
50
params.canary
route traffic from old stack to new stack using canary technique
boolean
No
false
params.capacity_type
determines how the instance is launched i.e SPOT or ON_DEMAND
string
No
SPOT
{'enum': ['ON_DEMAND', 'SPOT'], 'type': 'string'}
params.instance_pool
instance type pool for application autoscaling
array
No
{'type': 'array', 'items': {'type': 'string'}, 'message': {'minItems': 'instance_pool must have atleast 1 element'}, 'minItems': 1, 'uniqueItems': True}
params.lb_type
type of load balancer
string
No
alb
{'enum': ['elb', 'alb', 'nlb'], 'type': 'string'}
params.healthcheck_grace_period
Grace period of healthcheck in seconds
integer
No
120
params.extra_ports_config
List of extra ports config
array
No
{ "type": "array", "items": { "type": "object", "required": [ "port" ], "properties": { "port": { "type": "integer" }, "healthcheck_protocol": { "type": "string" }, "readiness_endpoint": { "type": "string" } } } }
params.lcu.external_lb
lcu count for external load balancer
integer
No
1
params.lcu.internal_lb
lcu count for internal load balancer
integer
No
1
params.logs.enabled
enable application logs on datadog
boolean
No
false
params.logs.path
log path location of application for datadog
string
No
/opt/logs/${ARTIFACT_NAME}.log
params.num_instances
number of instances for application autoscaling
integer
No
1
params.num_lbs
number of shards of application
integer
No
1
params.on_demand_base_capacity
number of instances required to be ON_DEMAND capacity. capacity_type should be ON_DEMAND to use this
integer
No
1
params.passive_downscale
downscale passive stack once the deployment is successfull
boolean
No
true
params.replica_count
number of replicas of application pods
integer
No
1
params.resources.limits.cpu
maximum amount of CPU that a container can use
integer
No
1
params.resources.limits.memory
maximum amount of memory that a container can use
string
No
1Gi
params.imdsv2
Use this if you want to opt for imdsv2 This is a non-mandatory config, and takes two possible inputs, "optional" and "required" Use value "required" if you want o opt for imdsv2 for your application component
String
No
optional
Available Build Types
Java
8
Java
11
Java
17
Java-redis
8-3.2.12
Java-redis
11-3.2.12
java-node
8-14.15.1
Kong
2.2.0
kong
2.8.1
Node
9.0.0
Node
14.15.1
Node
14.15.1-buster-slim
Node
16.15.1
Node
16.15.1-buster-slim
Node-redis
14.15.1-3.2.12
PCI-Java
8
Python
3.8.12
Scala
2.12.8
Example service definition and provisioning file
Environment variables set by odin
Common across EC2 and Containers:
SERVICE_NAME
<ARTIFACT_NAME>
ARTIFACT_NAME
<ARTIFACT_NAME>
ARTIFACT_VERSION
<ARTIFACT_VERSION>
VPC_SUFFIX
<VPC_SUFFIX>
ENV
One of [dev, int, load, uat, prod]
DEPLOYMENT_TYPE
One of [ec2, containers]
DISCOVERY_PROVIDER
One of [r53, consul]
CONSUL_DNS_ENDPOINT
<CONSUL_DNS_ENDPOINT>
Specific to EC2:
APP_DIR
/var/www/<ARTIFACT_NAME>
NAMESPACE
Config store branch
START_SCRIPT_PATH
As provided in the config. Defaults to ".odin/start.sh"
VAULT_TOKEN
<VAULT_TOKEN>
CONSUL_TOKEN
<CONSUL_TOKEN>
DD_SERVICE
<ARTIFACT_NAME>
DD_VERSION
<ARTIFACT_VERSION>
DD_LOGS_INJECTION
true
DD_RUNTIME_METRICS_ENABLED
true
DD_PROFILING_ENABLED
true
DD_SERVICE_MAPPING
Comma separated list of <COMPONENT_TYPE>:<SERVICE_NAME>-<COMPONENT_TYPE>
DD_AGENT_HOST
localhost
Specific to Containers:
APP_DIR
/app/<ARTIFACT_NAME>
AWS_ACCOUNT_ID
<AWS_ACCOUNT_ID>
Aerospike
Exposed configs in the service definition
name
Component name
string
Yes
type
Component type
string
Yes
version
Component version
string
Yes
depends_on
List of components on which aerospike depends on
array
No
{"type": "array", "items": {"type": "string", "minLength": 1}, "uniqueItems": true}
config.route.private
Route on which aerospike is discoverable
string
No
{"type": "string", "pattern": "[a-zA-Z._-]+\${TEAM_SUFFIX}\.dream11\${VPC_SUFFIX}\.local"}
config.namespace
Comma separated list of namespaces to create
string
No
config.cluster_type
Type of cluster
string
No
{ "enum": [ "AP", "SC" ], "type": "string" }
config.replication_factor
aerospike replication factor
integer
No
config.kafka_outbound.enabled
Whether kafka outbound is enabled or not.
string
No
Valid values are [true, false]. Default is false
config.kafka_outbound.kafka_host
Host of kafka for the outbound process
string
No
config.kafka_outbound.routing_mode
Specifies how records are routed to the topic
string
No
config.kafka_outbound.topic
Kafka topic to which data is to be written
string
No
config.kafka_outbound.type
Decides whether kafka_outbound is run locally or on remote nodes.
string
No
Valid values are [local, remote]
config.kafka_outbound.xdr_dns
IP address of the remote datacenter
string
No
config.kafka_outbound.namespace_configuration.format_mode
Specifies the serialization format of the data output
string
No
config.kafka_outbound.namespace_configuration.name
Namespace for which this configuration is applicable
string
Conditional
Mandatory if block config.kafka_outbound.namespace_configuration is defined.
config.kafka_outbound.namespace_configuration.routing_mode
Overrides how records are routed to the topic for the namespace
string
No
Exposed configs in the provisioning file
deployment_type
Where the component should be deployed.
String
No
Allowed values: container/aws_ec2
params.aerospike.num_instances
Number of instances in the aerospike cluster
Integer
No
params.data_in_memory
Whether to keep a copy of data in memory.
String
No
Valid values [true, false]
params.file
Path of aerospike file
String
No
params.filesize
Size of aerospike file
String
No
params.instance_pool
List of instance-types from which aerospike nodes will be created, takes precendence over instance_type
Array
No
params.kafka_outbound.num_instances
Number of instances of the kafka-outbound process
Integer
No
params.namespace_memory
Comma separated list of in-memory namespaces
String
No
params.remove_ebs_vol
Set to 'yes' if EBS volume should be detached from the EC2 instance.
String
No
Valid values: [yes, no]
params.write_block_size
Size of each I/O block that is written to the disk
String
No
Artifact
Exposed configs in the service definition
name
Component name
string
Yes
type
Component type
string
Yes
version
Component version
string
Yes
depends_on
List of components on which artifact depends on
array
No
{"type": "array", "items": {"type": "string", "minLength": 1}, "uniqueItems": true}
config.artifact_name
Artifact name
string
Yes
config.artifact_version
Artifact version
string
Yes
Exposed configs in the provisioning config
deployment_type
Where the component should be deployed.
String
No
Allowed values: aws
Example service definition and provisioning file
FAQ
Make sure the path
{BASE_REPOSITORY}/{ARTIFACT_NAME}/{ARTIFACT_VERSION}/
has an artifact in jfrog.BASE_REPOSITORY
isd11-repo/com/dream11
for dream11.Example path:
https://dreamsports.jfrog.io/artifactory/d11-repo/com/dream11/demo-spark-jar/1.0.0/
The component makes the artifact discoverable with the below URL
https://artifactory.dream11.com/{ENV_NAME}/{SERVICE_NAME}/{COMPONENT_NAME}.{FILE_TYPE}
Example: Let’s say your environment name is
dev-001
, the service name isartifact-test
, the component name isdemo-artifact
, and the artifact isartifact-demo.jar
i.e. the FILE_TYPE is.jar
, then the URL ishttps://artifactory.dream11.com/dev-001/artifact-test/demo-artifact.jar
The discovery route is not configurable and you cannot override it.
A spark-submit command using the above URL should look like this:
Cassandra
Exposed configs in the service definition
name
Component name
string
Yes
type
Component type
string
Yes
version
Component version
string
Yes
depends_on
List of components on which cassandra depends on
array
No
{"type": "array", "items": {"type": "string", "minLength": 1}, "uniqueItems": true}
config.ec2-instance-type
Type of the EC2 instance for cassandra nodes
string
No
config.route.private
Route on which cassandra is discoverable
string
No
{"type": "string", "pattern": "[a-zA-Z._-]+\${TEAM_SUFFIX}\.dream11\${VPC_SUFFIX}\.local"}
Exposed configs in the provisioning config
deployment_type
Where the component should be deployed.
String
No
Allowed values: container/aws_ec2
params.instance_pool
List of instance-types from which aerospike nodes will be created, takes precendence over instance_type
Array
No
params.num_instances
Number of instances in the cassandra cluster
Integer
No
cloudfront
Exposed configs
name
Component name
string
Yes
type
Component type
string
Yes
version
Component verion
string
Yes
depends_on
List of components which should be provisioned before cloudfront is provisioned
array
No
{"type": "array", "items": {"type": "string", "minLength": 1}, "uniqueItems": true}
config.default_cache_behavior
A list of default cache behaviors for the CloudFront distribution. The default cache behavior specifies how CloudFront handles requests that don't match any of the other cache behaviors in the distribution
array
Yes
{"type": "object", "items": {"required": ["target_origin_id"], "properties": {"cached_methods": {"type": "array"}, "allowed_methods": {"type": "array"}, "target_origin_id": {"type": "string"}}}, "uniqueItems": true}
config.default_cache_behavior.target_origin_id
The ID of the origin to which requests are forwarded for the cache behavior
string
Yes
Id of one of the origins specified under the origins block
config.origins
A list of origins for the CloudFront distribution. An origin is the location from which CloudFront retrieves the files to distribute
array
Yes
{ "type": "array", "items": { "required": [ "domain_name", "origin_id" ], "properties": { "params": { "type": "object" }, "origin_id": { "type": "string" }, "domain_name": { "type": "string" }, "origin_path": { "type": "string" }, "connection_attempts": { "type": "integer", "maximum": 3, "minimum": 1 }, "connection_timeout": { "type": "integer", "maximum": 10, "minimum": 1 }, "custom_origin_config": { "type": "object", "required": [ "http_port", "https_port", "origin_protocol_policy" ], "properties": { "http_port": { "type": "string" }, "https_port": { "type": "string" }, "origin_read_timeout": { "type": "integer" }, "origin_protocol_policy": { "type": "string" }, "origin_keepalive_timeout": { "type": "integer" } } } } }, "uniqueItems": true }
config.aliases
A list of domain names and subdomain names that you want CloudFront to use to respond to requests for your content
array
No
Alternate domain names
config.default_cache_behavior.allowed_methods
HTTP methods that CloudFront processes and forwards to your custom origin
array
No
DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT
config.default_cache_behavior.cached_methods
HTTP methods for which CloudFront caches responses by default
array
No
DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT
config.default_cache_behavior.compress
Whether CloudFront automatically compresses content for web requests that include Accept-Encoding: gzip in the request header
boolean
No
config.default_cache_behavior.default_ttl
The default time in seconds that objects stay in CloudFront caches before CloudFront forwards another request to your custom origin to determine whether the object has been updated
integer
No
config.default_cache_behavior.field_level_encryption_id
The ID of the field-level encryption configuration that you want CloudFront to use for encrypting specific fields of data for a cache behavior
integer
No
default_cache_behavior.forwardedvalues.cookies.forward
Specifies whether you want CloudFront to forward cookies to the origin that is associated with this cache behavior
string
No
all, none, whitelist
config.default_cache_behavior.forwarded_values.cookies.whitelisted_names
A list of cookie names that you want CloudFront to forward to your origin
array
No
config.default_cache_behavior.forwarded_values.headers
A list of HTTP headers that you want CloudFront to forward to your origin
array
No
config.default_cache_behavior.forwarded_values.query_string
Indicates whether you want CloudFront to forward query strings to the origin that is associated with this cache behavior
boolean
No
config.default_cache_behavior.max_ttl
The maximum time in seconds that objects stay in CloudFront caches before CloudFront forwards another request to your custom origin to determine whether the object has been updated
integer
No
config.default_cache_behavior.min_ttl
The minimum time in seconds that objects stay in CloudFront caches before CloudFront forwards another request to your custom origin to determine whether the object has been updated
integer
No
config.default_cache_behavior.smooth_streaming
Indicates whether CloudFront supports smooth streaming for the cache behavior or not
boolean
No
config.default_cache_behavior.viewer_protocol_policy
The protocol that viewers can use to access the files in the origin specified by TargetOriginId when a request matches the path pattern in the cache behavior
string
No
redirect-to-https, allow-all, https-only
config.ordered_cache_behaviours
A list of ordered cache behaviors for the CloudFront distribution. Ordered cache behaviors are used to override the default cache behavior and specify different caching behaviors for specific URL patterns
array
No
{"type":"array","items":{"required":["cached_methods","allowed_methods","target_origin_id","viewer_protocol_policy"],"properties":{"max_ttl":{"type":"integer"},"min_ttl":{"type":"integer"},"compress":{"type":"boolean"},"default_ttl":{"type":"integer"},"cached_methods":{"type":"array"},"allowed_methods":{"type":"array"},"forwarded_values":{"type":"object","required":["cookies","query_string"],"properties":{"cookies":{"type":"object","required":["forward"],"properties":{"forward":{"type":"string"},"whitelisted_names":{"type":"array"}}},"headers":{"type":"array"},"query_string":{"type":"boolean"}}},"target_origin_id":{"type":"string"},"viewer_protocol_policy":{"type":"string"}}},"uniqueItems":true}
config.price_class
Specifies the price class for the CloudFront distribution
string
No
config.restrictions.geo_restriction.restriction_type
The method that you want to use to restrict distribution of your content by country
string
No
config.retain_on_delete
Whether to retain the CloudFront distribution when the resource is deleted
boolean
No
config.viewer_certificate.acm_certificate_arn
The Amazon Resource Name (ARN) of the AWS Certificate Manager SSL certificate that you want CloudFront to use for this distribution
string
No
config.viewer_certificate.cloudfront_default_certificate
Indicates whether to use the default CloudFront certificate or not. If set to true, the default certificate will be used, else, the certificate with the ARN specified in config.viewer_certificate.acm_certificate_arn
field will be used
boolean
No
config.viewer_certificate.minimum_protocol_version
The minimum version of the SSL/TLS protocol that you want CloudFront to use for HTTPS connections
string
No
default_cache_behavior.viewer_certificate.ssl_support_method
Specifies how CloudFront serves HTTPS requests
string
No
vip, sni-only
config.web_acl_id
The ID of the AWS WAF web access control list (ACL) associated with the distribution
string
No
config.default_cache_behavior.cache_policy_id
Unique identifier of the cache policy that is attached to the cache behavior. forwarded_values field should not be specified when this field is used.
string
No
config.default_cache_behavior.origin_request_policy_id
Unique identifier of the origin request policy that is attached to the behavior. forwarded_values field should not be specified when this field is used.
string
No
elasticsearch
Exposed configs in service definition
config.cluster_name
elasticsearch cluster name
string
No
depends_on
Components that should be deployed before this component.
array
No
{"type": "array", "items": {"type": "string", "minLength": 1}, "uniqueItems": true}
name
component name
string
Yes
type
component type
string
Yes
version
component version
string
Yes
Exposed configs in provisioning file
params.elastic_ec2_auto_disc_min_master
Auto discovery minimum master count
integer
No
params.on_demand_percentage_above_base_capacity
Desired percent of on-demand instances over the number of base on-demand instances
integer
No
params.hotnode_ebs_root_volume_size
Desired root volume size of the hotnode ebs
integer
No
params.master_ebs_root_volume_size
Desired root volume size of the master node
integer
No
params.mlnode_ebs_root_volume_size
Desired root volume size of the ml node
integer
No
params.warmnode_ebs_root_volume_size
Desired root volume size of the warm node
integer
No
params.hotnode_instance_type
Desired instance type of the hotnode
string
No
params.master_instance_type
Desired instance type of the master
string
No
params.mlnode_instance_type
Desired instance type of the ml node
string
No
params.warmnode_instance_type
Desired instance type of the warm node
string
No
params.num_hotnodes
Desired number of hotnodes
integer
No
params.num_masters
Desired number of master nodes
integer
No
params.num_mlnodes
Desired number of ml nodes
integer
No
params.num_warmnodes
Desired number of warm nodes
integer
No
deployment_type
Where the component should be deployed. Allowed values: container/aws_ec2
string
No
{ "enum": [ "container", "aws_ec2" ], "type": "string" }
flink
Exposed configs
name
component name
String
No
type
component type
String
No
version
component version
String
No
config.custom_config
Custom configuration for Flink
object
No
config.route.private
Route on which Flink is discoverable
String
No
depends_on
List of components on which Flink Component depends on
Array
No
{"type": "array", "items": {"type": "string", "minLength": 1}, "uniqueItems": true}
parallelism
Execute multiple tasks concurrently, with each task being processed by one or more parallel instances
Integer
No
Note: To add additional configuration in flink-config.yaml
, key: value pairs can be passed through component config using custom_config
key.
eg.
The sample keys in above example will appear as:\
kafka
Exposed configs in Service definition
name
component name
Yes
string
type
component type
Yes
string
version
component version
Yes
string
depends_on
List of components which should be provisioned before kafka is provisioned
No
array
{ "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true }
config.route.private
DNS where kafka will be discoverable
No
string
{"type": "string", "pattern": "[a-zA-Z._-]+\${TEAM_SUFFIX}\.dream11\${VPC_SUFFIX}\.local"}
config.zookeeper_endpoint
Endpoint of the ZooKeeper ensemble that Kafka uses for coordination and metadata management
No
string
Exposed configs in Provisioning file
deployment_type
Where the component should be deployed. Allowed values: container, aws_ec2
Yes
string
params.log_retention_check_interval_ms
Interval in milli seconds at which kafka will check for log segments that are eligible for deletion based on the configured log retention policy
No
integer
params.log_retention_hours
Number of hours that Kafka will retain log segments before deleting them based on the log retention policy
No
integer
params.ebs_iops
Number IOPS that the extra EBS block device for kafka should support
No
integer
params.ebs_throughput
Throughput in megabytes per second (MB/s) that the extra ebs block device for kafka should support
No
integer
{ "type": "integer", "minimum": 125, "maximum": 1000 }
params.ebs_volume_size
Size in gibibytes (GiB) of the extra ebs block device for kafka
No
integer
params.instance_pool
List of instances on which kafka will be provisioned
No
array
{ "type": "array", "items": { "type": "string" }, "maxItems": 1, "minItems": 1}
params.num_instances
Number of instances of kafka
No
integer
{ "type": "integer", "minimum": 3 }
params.replicaCount
Number of kafka pods when deployment type is container
No
integer
Example service definition and provisioning file
kafka-connect
Exposed configs in service definition
name
Component name
string
Yes
type
Component type
string
Yes
version
Component version
string
Yes
config.bootstrap_server
DNS of kafka broker
string
Yes
config.schema_registry_host
DNS of schema registry
string
Yes
config.route.private
DNS where kafka connect will be discoverable
string
No
{"type": "string", "pattern": "[a-zA-Z._-]+\${TEAM_SUFFIX}\.dream11\${VPC_SUFFIX}\.local"}
depends_on
List of components on which kafka connect depends on
array
No
{"type": "array", "items": {"type": "string", "minLength": 1}, "uniqueItems": true}
Exposed configs in provisioning config
deployment_type
Where the component should be deployed. Allowed values: container/aws_ec2
string
No
container
params.instance_pool
List of instances on which kafka connect will be provisioned
array
No
["t2.medium"]
{ "type": "array", "items": { "type": "string" },
"maxItems": 1, "minItems": 1, "uniqueItems": true }
params.num_instances
Number of instances of kafka connect
integer
No
1
params.replicaCount
Number of replicas of the pod to be created
integer
No
1
params.kafka_connect_topic_replication_factor
Number of copies of data to be made
integer
No
1
Example service definition and provisioning file
kafka-connect-ui
Exposed configs in service definition
config.connect_cluster_url
DNS of the kafka connect cluster
string
Yes
depends_on
List of components on which kafka connect ui depends on
array
No
{"type": "array", "items": {"type": "string", "minLength": 1}, "uniqueItems": true}
name
Component name
string
Yes
type
Component type
string
Yes
version
Component version
string
Yes
Exposed configs in provisioning config
deployment_type
Where the component should be deployed. Allowed values: container/aws_ec2
string
Yes
params.instance_pool
List of instances on which kafka connect ui will be provisioned
array
No
{ "type": "array", "items": { "type": "string" }, "maxItems": 1, "minItems": 1}
params.num_instances
Number of instances of kafka connect ui
integer
No
Example service definition and provisioning file
kafka-zookeeper
Exposed configs in service definition
name
Component name
string
Yes
type
Component type
string
Yes
version
Component version
string
Yes
depends_on
List of components which should be provisioned before kafka zookeeper is provisioned
array
No
{"type": "array", "items": {"type": "string", "minLength": 1}, "uniqueItems": true}
route.private
DNS where kafka zookeeper will be discoverable
string
No
Exposed configs in provisioning file
deployment_type
Where the component should be deployed. Allowed values: container/aws_ec2
string
No
params.kafka.log_retention_check_interval_ms
Interval in milli seconds at which kafka will check for log segments that are eligible for deletion based on the configured log retention policy
integer
No
params.kafka.log_retention_hours
Number of hours that Kafka will retain log segments before deleting them based on the log retention policy
integer
No
params.instance_pool
List of instances on which kafka will be provisioned
array
No
{ "type": "array", "items": { "type": "string" }, "maxItems": 1, "minItems": 1}
params.kafka.ebs_iops
IOPS for extra ebs block device for kafka
integer
No
params.kafka.ebs_throughput
Ebs extra throughput in MiB/s for kafka
integer
No
params.kafka.ebs_volume_size
Ebs extra xvdb volume size in GB
integer
No
params.kafka.num_instances
Number of instances of kafka
integer
No
params.zookeeper.num_instances_per_placement_group
Number of instances per placement group for zookeeper
integer
No
params.zookeeper.num_placement_groups
Number of placement groups for zookeeper
integer
No
Example service definition and provisioning file
ksql
Exposed configs in Service definition file
name
component name
string
Yes
type
component type
string
Yes
version
component version
string
Yes
config.route.private
private DNS endpoint of the ksql
string
No
config.bootstrap_server
DNS endpoint of kafka
string
Yes
config.schema_registry_host
DNS endpoint of schema registry
string
Yes
depends_on
List of components on which ksql depends on
array
No
{'type': 'array', 'items': {'type': 'string'}, 'minItems': 1, 'uniqueItems': True}
Exposed configs in Provisioning file
deployment_type
platform on which the component should be deployed
string
No
{'enum': ['container', 'aws_ec2'], 'type': 'string'}
params.instance_pool
instance type pool for ksql autoscaling
array
No
{'type': 'array', 'items': {'type': 'string'}, 'message': {'minItems': 'instance_pool must have atleast 1 element'}, 'minItems': 1, 'uniqueItems': True}
params.num_instances
number of instances for ksql autoscaling
integer
No
Example service definition and provisioning file
Neptune
Exposed configs in service definition file
name
Component name
string
Yes
type
Component type
string
Yes
version
Component version
string
Yes
depends_on
List of components on which neptune depends on
array
No
{"type": "array", "items": {"type": "string", "minLength": 1}, "uniqueItems": true}
config.route.reader.private
Route on which neptune reader is discoverable
string
No
{"type": "string", "pattern": "[a-zA-Z._-]+\${TEAM_SUFFIX}\.dream11\${VPC_SUFFIX}\.local"}
config.route.writer.private
Route on which neptune writer is discoverable
string
No
{"type": "string", "pattern": "[a-zA-Z._-]+\${TEAM_SUFFIX}\.dream11\${VPC_SUFFIX}\.local"}
Exposed config in provisioning file
deployment_type
platform on which the component should be deployed
String
No
Allowed values: [container,aws_neptune]
params.cluster_parameters
cluster parameter config
Object
No
{ "type": "array", "items": { "type": "object", "required": [ "name", "value" ], "properties": { "name": { "type": "string" }, "value": {}, "apply_immediately": { "enum": [ "pending-reboot", "immediate" ], "type": "string" } } } }
params.instance_parameters
instance parameter config
Object
No
{ "type": "array", "items": { "type": "object", "required": [ "name", "value" ], "properties": { "name": { "type": "string" }, "value": {}, "apply_immediately": { "enum": [ "pending-reboot", "immediate" ], "type": "string" } } } }
params.num_instances
Number of instances in the neptune cluster
Integer
No
params.replica_count
Number of replicas in the cluster. Only applicable for env of type containers.
Integer
No
postgresql
Exposed configs in Service definition
name
Component name
string
Yes
type
Component type
string
Yes
version
Component version
string
Yes
route.reader.private
DNS where postgresql reader will be discoverable
string
No
{"type": "string", "pattern": "[a-zA-Z._-]+\${TEAM_SUFFIX}\.dream11\${VPC_SUFFIX}\.local"}
route.writer.private
DNS where postgresql writer will be discoverable
string
No
{"type": "string", "pattern": "[a-zA-Z._-]+\${TEAM_SUFFIX}\.dream11\${VPC_SUFFIX}\.local"}
depends_on
List of components which should be provisioned before postgresql is provisioned
array
No
{"type": "array", "items": {"type": "string", "minLength": 1}, "uniqueItems": true}
Exposed config in Provisioning file
deployment_type
Where the component should be deployed. Allowed values: container, aws_rds_aurora
string
No
params.cluster_parameter_group_name
Cluster parameter group to associate with the RDS cluster
string
No
params.instance_type
Type of instance to use for the RDS cluster instance
string
No
params.parameter_group_name
Parameter group to associate with the RDS cluster instance
string
No
params.replica_count
Number of instances to create for the RDS database cluster
integer
No
rds
Exposed configs in service definition
name
component name
string
Yes
type
component type
string
Yes
version
component version
string
Yes
config.binlog.enable
Enable/Disable binlog
string
No
{"enum": ["Yes", "No"], "type": "string"}
config.route.reader.private
Route on which rds reader is discoverable
string
No
{"type": "string", "pattern": "[a-zA-Z._-]+\${TEAM_SUFFIX}\.dream11\${VPC_SUFFIX}\.local"}
config.route.writer.private
Route on which rds writer is discoverable
string
No
{"type": "string", "pattern": "[a-zA-Z._-]+\${TEAM_SUFFIX}\.dream11\${VPC_SUFFIX}\.local"}
depends_on
List of components on which RDS Component depends on
array
No
{"type": "array", "items": {"type": "string", "minLength": 1}, "uniqueItems": true}
Exposed configs in provisioning file
deployment_type
Platform on which the component should be deployed. Allowed values: container, aws_rds_aurora
string
No
{"enum": ["container", "aws_rds_aurora"], "type": "string"}
params.cluster_parameter_group_name
Parameter group for RDS cluster
string
No
params.engine_version
Refers to the specific release of a database engine software that is used to run the RDS instance
string
No
params.instance_type
Instance type for RDS eg. db.r5.xlarge
string
No
db.r5.large
params.kms_key_id
To specify a KMS key ID for an RDS instance
string
No
params.parameter_group_name
Parameter group for RDS database instances
string
No
params.replica_count
Refers to the number of reader nodes
integer
No
1
params.resources.limits.cpu
Maximum amount of CPU that a container can use
string
No
200m
params.resources.limits.ephemeral-storage
Maximum ephemeral storage for functions such as caching, scratch space, and logs that a container can use
string
No
512Mi
params.resources.limits.memory
Maximum amount of memory that a container can use
string
No
2Gi
params.resources.requests.cpu
Desired amount of CPU that a container can use
string
No
100m
params.resources.requests.ephemeral-storage
Desired amount of ephemeral storage for functions such as caching, scratch space, and logs that a container can use
string
No
256Mi
params.resources.requests.memory
Desired amount of memory that a container can us
string
No
1Gi
params.snapshot_identifier
Snapshot name which needs be used for provisioning the cluster
string
No
Example service config and definition file
rabbitmq
Exposed configs in service definition
config.route.private
Private DNS endpoint for the component
string
No
{"type": "string", "pattern": "[a-zA-Z._-]+\${TEAM_SUFFIX}\.dream11\${VPC_SUFFIX}\.local"}
depends_on
List of components that this component depends on
array
No
{"type": "array", "items": {"type": "string", "minLength": 1}, "uniqueItems": true}
name
Name of the component
string
Yes
type
Type of the component
string
Yes
version
Version of the component
string
Yes
Exposed configs in provisioning file
deployment_type
Where the component should be deployed. Allowed values: container/aws_ec2
string
No
{ "enum": [ "container", "aws_ec2" ], "type": "string" }
params.instance_type
EC2 Instance type for the component
string
No
params.num_instances
Number of instances for the component
integer
No
s3
Exposed configs in service definition
name
Component name
string
Yes
type
Component type
string
Yes
version
Component version
string
Yes
config.bucket_name
Name of the s3 bucket to be created. Should be unique
string
Yes
config.access
S3 bucket-level access configuration. Allowed values: private/public
string
No
private
{"enum": ["private", "public"], "type": "string"}
config.force_destroy
Whether all objects in s3 bucket be deleted when undeploying. Allowed values: true/false
string
No
true
{"enum": ["true", "false"]}
config.versioning
Whether to allow versioning of objects in the bucket. Allowed values: Enabled/Disabled
string
No
Enabled
{"enum": ["Enabled", "Disabled"], "type": "string"}
Example service definition and provisioning file
schema-registry
Exposed configs in service definition
config.bootstrap_server
DNS of kafka broker
string
Yes
config.route.private
DNS where schema registry will be discoverable
string
No
depends_on
List of components which should be provisioned before schema registry is provisioned
array
No
{"type": "array", "items": {"type": "string", "minLength": 1}, "uniqueItems": true}
name
Component name
string
Yes
type
Component type
string
Yes
version
Component version
string
Yes
Exposed configs in provisioning file
deployment_type
Where the component should be deployed. Allowed values: container/aws_ec2
string
Yes
params.instance_pool
List of instances on which schema registry will be provisioned
array
No
{ "type": "array", "items": { "type": "string" }, "maxItems": 1, "minItems": 1}
params.num_instances
Number of instances of schema registry
integer
No
Example service definition and provisioning file
scylladb
Exposed configs in service definition
name
Component name
string
Yes
type
Component type
string
Yes
version
Component version
string
Yes
config.cluster_name
Scylladb cluster name
string
No
depends_on
List of components which should be provisioned before scylladb is provisioned
array
No
{"type": "array", "items": {"type": "string", "minLength": 1}, "uniqueItems": true}
config.route.private
DNS where scylladb will be discoverable
string
No
Exposed configs in provisioning file
deployment_type
Where the component should be deployed. Allowed values: container/aws_ec2
string
Yes
params.instance_pool
List of instances on which scylladb will be provisioned
array
No
{ "type": "array", "items": { "type": "string" }, "maxItems": 1, "minItems": 1}
params.num_instances
Number of instances of scylladb
integer
No
params.num_seed_nodes
Number of seed nodes of scylladb
integer
No
Example service definition and provisioning file
serverless
Note: You can provide path to custom script file path using start_script_path
in config parameters. If provided, the given script will be execute to deploy serverless. The script file should contain serverless deploy command.
Exposed configs in Service definition
name
Component name
string
Yes
type
Component type
string
Yes
version
Component version
string
Yes
config.artifact_name
Artifact name of the serverless
string
Yes
config.artifact_version
Artifact version of the application
string
Yes
config.filename
Serverless config file name
string
No
config.serverless_version
serverless version
string
No
config.start_script_path
path of script to start the application
string
No
depends_on
List of components on which serverless depends on
array
No
{'type': 'array', 'items': {'type': 'string'}, 'minItems': 1, 'uniqueItems': True}
Exposed configs in provisioning file
deployment_type
Platform on which the component should be deployed
string
No
{'enum': ['aws_serverless'], 'type': 'string'}
params.extra_envs
Environment variables required for serverless
json
No
{'type': 'array', 'items': {'minLength': 1}, 'uniqueItems': True}
Example service definition and provisioning file
spark
Exposed configs in Service definition
name
Component name
string
Yes
type
Component type
string
Yes
version
Component version
string
Yes
config.route.private
Private DNS endpoint of Spark application
string
No
depends_on
List of components on which spark depends on
array
No
{'type': 'array', 'items': {'type': 'string'}, 'minItems': 1, 'uniqueItems': True}
Exposed configs in Provisioning file
deployment_type
Platform on which the component should be deployed
string
No
{'enum': ['aws_ec2', 'aws_ec2_ha'], 'type': 'string'}
params.disable_api_termination
If true, enables EC2 Instance Termination Protection
string
No
params.ebs_root_volume_size
Spark root ebs volume size
string
No
params.master_instance_pool
Spark master cluster instance type
array
No
{'type': 'array', 'items': {'type': 'string'}, 'message': {'maxItems': 'max length of instance_pool can be 1', 'minItems': 'instance_pool must have atleast 1 element'}, 'maxItems': 1, 'minItems': 1, 'uniqueItems': True}
params.master_num_instances
Number of spark master nodes
string
No
params.worker_instance_pool
Spark worker cluster instance type
array
No
{'type': 'array', 'items': {'type': 'string'}, 'message': {'maxItems': 'max length of instance_pool can be 1', 'minItems': 'instance_pool must have atleast 1 element'}, 'maxItems': 1, 'minItems': 1, 'uniqueItems': True}
params.worker_num_instances
Number of spark worker nodes
string
No
params.history_instance_pool
Spark history cluster instance type
array
No
{'type': 'array', 'items': {'type': 'string'}, 'message': {'maxItems': 'max length of instance_pool can be 1', 'minItems': 'instance_pool must have atleast 1 element'}, 'maxItems': 1, 'minItems': 1, 'uniqueItems': True}
params.history_num_instances
Number of spark history nodes
string
No
params.max_size
Number of spark master nodes
string
No
params.num_on_demand_instances
Absolute minimum amount of desired capacity that must be fulfilled by on-demand instances
string
No
params.on_demand_percentage
Percent of on-demand instances over the number of base on-demand instances
string
No
params.s3_cron
Frequency at which the logs gets pushed into s3 from workers
string
No
params.spark_ha_route
Private DNS endpoint of spark ha
string
No
params.spot_allocation_strategy
How to allocate capacity across the Spot pools
string
No
params.worker_cleanup_ttl
Interval, in seconds, at which the worker cleans up old application work dirs on the local machine
string
No
params.resources.limits.cpu
Maximum amount of CPU that a container can use
string
No
params.resources.limits.ephemeral-storage
Maximum amount of ephemeral storage that a container can use
string
No
params.resources.limits.memory
Maximum amount of memory that a container can use
string
No
params.resources.requests.cpu
Desired amount of CPU that a container can use
string
No
params.resources.requests.ephemeral-storage
Desired amount of ephemeral storage that a container can use
string
No
params.resources.requests.memory
Desired amount of memory that a container can us
string
No
Example service definition and provisioning file
stepfunction
Exposed configs in service definition
name
Component name
string
Yes
type
Component type
string
Yes
version
Component version
string
Yes
config.artifact_name
Artifact name of the stepfunction
string
Yes
config.artifact_version
Artifact version of the stepfunction
string
Yes
config.filename
Stepfunction config file name
string
No
main.yml
config.serverless_version
Serverless verision
string
No
2.57.0
depends_on
List of components on which stepfunction depends on
array
No
{"type": "array", "items": {"type": "string", "minLength": 1}, "uniqueItems": true}
Exposed configs in provisioning file
deployment_type
Where the component should be deployed. Allowed values: aws_stepfunction
string
No
aws_stepfunction
params.extra_envs
Environment variables required for stepfunction
json
No
{ "type": "array", "items": { "minLength": 1 }, "uniqueItems": true }
Example service definition and provisioning file
voltdb
Exposed configs in service definition
config.exporters
Desired exporters configuration
array
No
{"type": "array", "items": [{"type": "object", "required": ["target"], "properties": {"type": {"type": "string"}, "target": {"type": "string"}, "enabled": {"type": "boolean"}, "properties": {"type": "array", "items": [{"type": "object", "required": ["name", "value"], "properties": {"name": {"type": "string"}, "value": {"type": "string"}}}]}}}]}
config.importers
Desired importers configuration
array
No
{"type": "array", "items": [{"type": "object", "required": [], "properties": {"type": {"type": "string"}, "format": {"type": "string"}, "enabled": {"type": "boolean"}, "version": {"type": "integer"}, "properties": {"type": "array", "items": [{"type": "object", "required": ["name", "value"], "properties": {"name": {"type": "string"}, "value": {"type": "string"}}}]}}}]}
config.route.private
Desired private DNS route for the component
string
No
{"type": "string", "pattern": "[a-zA-Z._-]+\${TEAM_SUFFIX}\.dream11\${VPC_SUFFIX}\.local"}
depends_on
List of components on which this component depends on
array
No
{"type": "array", "items": {"type": "string", "minLength": 1}, "uniqueItems": true}
name
Name of the component
string
Yes
type
Type of the component
string
Yes
version
Version of the component
string
Yes
Exposed configs in provisioning file
deployment_type
Where the component should be deployed. Allowed values: container/aws_ec2
string
No
{ "enum": [ "container", "aws_ec2" ], "type": "string" }
params.num_instances
Desired number of instances
integer
No
{ "type": "integer", "minimum": 3 }
params.instance_type
EC2 Instance type for the component
string
No
params.kfactor
Desired Kfactor of voltdb cluster
integer
No
params.sitesPerHost
Desired sitesPerHost of voltdb cluster
integer
No
zookeeper
Exposed configs in service definition
config.route.private
DNS where zookeeper will be discoverable
string
No
{"type": "string", "pattern": "[a-zA-Z._-]+\${TEAM_SUFFIX}\.dream11\${VPC_SUFFIX}\.local"}
depends_on
List of components which should be provisioned before zookeeper is provisioned
array
No
{"type": "array", "items": {"type": "string", "minLength": 1}, "uniqueItems": true}
name
Component name
string
Yes
type
Component type
string
Yes
version
Component version
string
Yes
Exposed configs in provisioning file
deployment_type
Where the component should be deployed. Allowed values: container/aws_ec2
string
Yes
params.num_instances_per_placement_group
Number of zookeeper instances per placement group
integer
No
params.num_placement_groups
Number of placement groups in which zookeeper will be provisioned
integer
No
params.replicaCount
Number of zookeeper pods when deployment type is container
interger
No
Example service definition and provisioning file
Last updated