Odin
  • Introduction
  • Why Odin?
  • Key Concepts
    • Environment
      • Environment Type
    • Provisioning
      • Provisioning Config for Component Types
    • Component
      • Available Component Types
      • Component Type reference
        • Optimus Components
          • Aerospike [6.3.0.7-1.0.0]
    • Service
      • Know Your Service Definition
    • Versioning
      • Clearing the Confusion: A Simplified Guide to Artifact, Component, and Service Versions
    • Service Sets
    • Labels
  • Reference
    • CLI reference
  • Onboard Your Service
    • Installation
    • Configure
    • Odin -h
    • Getting Started
    • Create Environment
      • Operations on Environment
    • Service Definition
    • Provisioning Config
    • Deploy Service
    • Release Service
    • Optimus Datastore Operations
      • How to use Optimus Datastore in my service?
      • RDS Operations
      • Aerospike Operations
      • Kafka Operations
    • Operating Service & Components
      • Redeploy
        • In Place Deployment
        • Blue Green Deployment
      • Rolling Restart
      • Adding & removing components
      • Revert a deployment for application component
      • Downscaling a Passive Stack
      • Updating the no. of stacks of application component
    • Dev <> QA iteration
    • Frequently Asked Questions
    • Deploy Concrete Service
    • Undeploy Service
    • Delete Environment
    • Appendix
  • How To
    • Define error threshold for canary deployment
    • Add or Remove a component in an already deployed service
    • Integrate mono-repo(cronjobs) with Odin
    • Deploy crontab with Odin
    • Integrate Data pipeline with Odin
    • Push logs to log central
    • Build artifacts for multi module applications
    • Load test with Odin
    • Track Deployments against Commit Ids
    • Deploy Service on Production - Dream11
    • How and when images are created
    • Check logs for deployed infrastructure - Dream11
    • Onboard Stepfunction as a component
    • Onboard Serverless as a component
    • Login to Kubernetes clusters
  • Release Notes
    • 1.2.0-beta.2 - 11 August, 2022
    • Odin October Release
    • Odin 1.2.0 - Nov 9th 2022
    • Odin February Release
Powered by GitBook
On this page
  • Definition
  • Specification
  • Example
  • Pro Tip
  • Supported Discovery Type
  • Available config for a component
Export as PDF
  1. Key Concepts

Component

Definition

A component is a process/bunch of processes that need to be executed as a unit. An example of a component is an application, cache, datastore. It is used as a building block in Services. Components cannot exist on their own; they exist only as a part of a service.

Every component is of a pre-defined type, which has default fields set. These fields can be optionally overridden(as and when they are whitelisted on the backend on a case-to-case basis).

Specification

Key
Value Type

type

name

string

version

config

Example

Below is a specification to define a component of type cassandra with version 3.11.8

{
    "type": "cassandra",
    "name": "foo-cassandra",
    "version": "3.11.8",
    "config": {
        ...CONFIG_FROM_DESCRIBE_COMMAND
    }
}

Example for application

{
    "type": "application",
    "name": "graphql",
    "version": "1.0.0",
    "config": {
        "build_type": "java",
        "build_version": "8",
        "port": 2000,
        "liveness_endpoint": "health",
        "readiness_endpoint": "health",
        "discovery": "both"
    }
}

Pro Tip

application component-type can be used for http application, crons , kafka-consumer

Supported Discovery Type

*Applicable only for component type application

Supported Discovery Type
Comment

public

service will be publicly available

private

available for internal discovery

both

open to both public and private network

none

used to disable discovery e.g. in case of kafka-consumer where the application is not discoverable

Available config for a component

Every component exposes config with options that can be accessed by.

odin describe component-type --name application
...component-defintion

List of exposed configs :

*Config*                  | *Mandatory* | *Data Type* |
config.build_type         | true        | string      |
config.build_version      | true        | string      |
config.discovery          | false       | string      |
config.liveness_endpoint  | false       | string      |
config.port               | false       | integer     |
config.readiness_endpoint | false       | string      |
name                      | true        | string      |
type                      | true        | string      |
version                   | true        | string      |
PreviousProvisioning Config for Component TypesNextAvailable Component Types

Last updated 9 months ago

string - all supported

string - all supported

map - see for more info

Read more about exposed configs here -

Component Type reference
component types
component versions
config section