Tye is a tool that makes developing, testing, and deploying microservices and distributed applications easier. Project Tye includes a local orchestrator to make developing microservices easier and the ability to deploy microservices to Kubernetes with min
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

565 lines
19 KiB

{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://microsoft.com/dotnet/tye.schema.json",
"title": "Tye Configuration",
"description": "Configuration file schema for Tye.",
"type": "object",
"properties": {
"name": {
"description": "The application name.",
"type": "string"
},
"registry": {
"description": "Dockerhub username or hostname of remote registry. Used for tagging images.",
"type": "string"
},
"containerEngine": {
"description": "Container engine.",
"type": "string",
"enum": ["docker", "podman"]
},
"namespace": {
"description": "The Kubernetes namespace to use.",
"type": "string"
},
"network": {
"description": "The Docker network to use.",
"type": "string"
},
"dashboardPort": {
"description": "Configure the dashboard port used for `tye run`. Can be overridden using the `--port` CLI argument, and falls back to port 8000 if free, or a random port if 8000 is in use.",
"type": "integer"
},
"ingress": {
"description": "The application's ingresses.",
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/definitions/ingress"
}
},
"extensions": {
"description": "Extensions to be added to tye.",
"type": "array",
"items": {
"$ref": "#/definitions/extension"
}
},
"solution": {
"description": "Indicates the solution file (.sln) or filter (.slnf) to use when building project-based services in watch mode. If omitted, those services will be built individually. Specifying the solution [filter] can help reduce repeated builds of shared libraries when in watch mode.",
"type": "string"
},
"services": {
"description": "The application's services.",
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"oneOf": [
{
"$ref": "#/definitions/executable"
},
{
"$ref": "#/definitions/external"
},
{
"$ref": "#/definitions/azureFunction"
},
{
"$ref": "#/definitions/image"
},
{
"$ref": "#/definitions/dockerFile"
},
{
"$ref": "#/definitions/project"
},
{
"$ref": "#/definitions/repository"
},
{
"$ref": "#/definitions/include"
}
]
}
}
},
"required": [
"services"
],
"definitions": {
"binding": {
"type": "object",
"properties": {
"name": {
"description": "The binding name.",
"type": "string"
},
"port": {
"description": "The binding port.",
"type": "integer"
},
"containerPort": {
"description": "The port used when running inside a container.",
"type": "integer"
},
"host": {
"description": "The hostname for the binding.",
"type": "string"
},
"protocol": {
"description": "The protocol used by the binding",
"type": "string"
},
"autoAssignPort": {
"description": "Whether to auto-assign a port value.",
"type": "boolean",
"default": false
},
"connectionString": {
"description": "The connection string.",
"type": "string"
}
},
"additionalProperties": false
},
"env-var": {
"type": "object",
"properties": {
"name": {
"description": "Environment variable name.",
"type": "string"
},
"value": {
"description": "Environment variable value.",
"type": "string"
}
},
"required": [
"name",
"value"
],
"additionalProperties": false
},
"build-property": {
"type": "object",
"properties": {
"name": {
"description": "Build property name.",
"type": "string"
},
"value": {
"description": "Build property name.",
"type": "string"
}
},
"required": [
"name",
"value"
],
"additionalProperties": false
},
"volume": {
"type": "object",
"properties": {
"name": {
"description": "A named volume.",
"type": "string"
},
"source": {
"description": "The local path.",
"type": "string"
},
"target": {
"description": "The destination path within the container.",
"type": "string"
}
},
"required": [
"target"
],
"additionalProperties": false
},
"azureFunction": {
"type": "object",
"properties": {
"name": {
"description": "The service name. Must be unique per-application.",
"type": "string"
},
"azureFunction": {
"description": "The directory path to the azure function.",
"type": "string"
},
"env": {
"description": "Environment variables to use when launching.",
"type": "array",
"items": {
"$ref": "#/definitions/env-var"
}
},
"args": {
"description": "Command-line arguments to use when launching.",
"type": "string"
},
"replicas": {
"description": "Number of service replicas to create.",
"type": "integer"
},
"bindings": {
"description": "The bindings provided by the service.",
"type": "array",
"items": {
"$ref": "#/definitions/binding"
}
},
"pathToFunc":
{
"description": "Optional path to the function host to be used when launching functions. Can point to either func.dll or the binary.",
"type": "string"
}
},
"required": [
"name",
"azureFunction"
]
},
"executable": {
"type": "object",
"properties": {
"name": {
"description": "The service name. Must be unique per-application.",
"type": "string"
},
"executable": {
"description": "The file path (or file name if on the system path) of an executable.",
"type": "string"
},
"workingDirectory": {
"description": "The working directory to use when launching.",
"type": "string"
},
"env": {
"description": "Environment variables to use when launching.",
"type": "array",
"items": {
"$ref": "#/definitions/env-var"
}
},
"args": {
"description": "Command-line arguments to use when launching.",
"type": "string"
},
"replicas": {
"description": "Number of service replicas to create.",
"type": "integer"
},
"bindings": {
"description": "The bindings provided by the service.",
"type": "array",
"items": {
"$ref": "#/definitions/binding"
}
}
},
"required": [
"name",
"executable"
]
},
"external": {
"properties": {
"name": {
"description": "The service name. Must be unique per-application.",
"type": "string"
},
"external": {
"description": "Designates as service as external. External services will not be launched and can only provide bindings.",
"type": "boolean",
"const": true
},
"bindings": {
"description": "The bindings provided by the service.",
"type": "array",
"items": {
"$ref": "#/definitions/binding"
}
}
},
"additionalProperties": false
},
"repository": {
"properties": {
"name": {
"description": "The service name. Must be unique per-application.",
"type": "string"
},
"repository":
{
"description": "The repository url which will be cloned.",
"type": "string"
},
"cloneDirectory":
{
"description": "The directory to clone the repository into.",
"type": "string"
}
},
"required": [
"name",
"repository"
]
},
"include": {
"properties": {
"name": {
"description": "The service name. Must be unique per-application.",
"type": "string"
},
"include":
{
"description": "Path to tye.yaml file which will be used in the application.",
"type": "string"
}
},
"required": [
"name",
"include"
]
},
"image": {
"type": "object",
"properties": {
"name": {
"description": "The service name. Must be unique per-application.",
"type": "string"
},
"volumes": {
"description": "Volumes to mount to the container.",
"type": "array",
"items": {
"$ref": "#/definitions/volume"
}
},
"image": {
"description": "The name of a Docker image.",
"type": "string"
},
"env": {
"description": "Environment variables to use when launching.",
"type": "array",
"items": {
"$ref": "#/definitions/env-var"
}
},
"args": {
"description": "Command-line arguments to use when launching.",
"type": "string"
},
"replicas": {
"description": "Number of service replicas to create.",
"type": "integer"
},
"bindings": {
"description": "The bindings provided by the service.",
"type": "array",
"items": {
"$ref": "#/definitions/binding"
}
}
},
"required": [
"name",
"image"
]
},
"dockerFile": {
"type": "object",
"properties": {
"name": {
"description": "The service name. Must be unique per-application.",
"type": "string"
},
"volumes": {
"description": "Volumes to mount to the container.",
"type": "array",
"items": {
"$ref": "#/definitions/volume"
}
},
"dockerFile": {
"description": "The Dockerfile to use.",
"type": "string"
},
"dockerFileArgs": {
"description": "Build arguments to use when building the image.",
"type": "array",
"items": {
"type": "object"
}
},
"dockerFileContext": {
"description": "The Dockerfile context to run docker build on.",
"type": "string"
},
"env": {
"description": "Environment variables to use when launching.",
"type": "array",
"items": {
"$ref": "#/definitions/env-var"
}
},
"args": {
"description": "Command-line arguments to use when launching.",
"type": "string"
},
"replicas": {
"description": "Number of service replicas to create.",
"type": "integer"
},
"bindings": {
"description": "The bindings provided by the service.",
"type": "array",
"items": {
"$ref": "#/definitions/binding"
}
}
},
"required": [
"name",
"dockerFile"
]
},
"ingress": {
"type": "object",
"properties": {
"name": {
"description": "The ingress name.",
"type": "string"
},
"bindings": {
"description": "Bindings for the ingress in local development.",
"type": "array",
"items": {
"$ref": "#/definitions/ingress-binding"
}
},
"rules": {
"description": "Rules for ingress routing.",
"type": "array",
"items": {
"$ref": "#/definitions/ingress-rule"
}
}
}
},
"ingress-binding": {
"type": "object",
"properties": {
"name": {
"description": "The binding name.",
"type": "string"
},
"port": {
"description": "The binding port.",
"type": "integer"
},
"protocol": {
"description": "The protocol used by the binding",
"type": "string"
},
"ip": {
"description": "The ip address the ingress listens on.",
"type": "string"
}
}
},
"ingress-rule": {
"type": "object",
"properties": {
"service": {
"description": "The service to route traffic when the rule matches.",
"type": "string"
},
"path": {
"description": "The path prefix to match.",
"type": "string"
},
"host": {
"description": "The hostname to match.",
"type": "string"
},
"preservePath": {
"description": "Whether to keep the path that was originally present or not after a prefix match.",
"type": "boolean"
}
},
"required": [
"service"
]
},
"project": {
"type": "object",
"properties": {
"name": {
"description": "The service name. Must be unique per-application.",
"type": "string"
},
"project": {
"description": "The relative path to a .NET project file.",
"type": "string"
},
"env": {
"description": "Environment variables to use when launching.",
"type": "array",
"items": {
"$ref": "#/definitions/env-var"
}
},
"buildProperties": {
"description": "Build properties to use when launching or building a project.",
"type": "array",
"items": {
"$ref": "#/definitions/build-property"
}
},
"args": {
"description": "Command-line arguments to use when launching.",
"type": "string"
},
"build": {
"description": "Whether to build the project.",
"type": "boolean"
},
"replicas": {
"description": "Number of service replicas to create.",
"type": "integer"
},
"bindings": {
"description": "The bindings provided by the service.",
"type": "array",
"items": {
"$ref": "#/definitions/binding"
}
}
},
"required": [
"name",
"project"
]
},
"extension":
{
"type": "object",
"properties": {
"name": {
"description": "Extension name.",
"type": "string"
}
},
"required": [
"name"
]
}
}
}