Runway Service Manifest Schema

Type: object

A service manifest for Runway platform

No Additional Properties
Example:

apiVersion: runway/v1
kind: RunwayService
metadata:
  name: my-service
  owner_email_handle: my-username
  department: my-dept
  department_group: my-dept-group
  product_category: my-product-category
spec:
  image: my-image:my-tag
  container_port: 8080
  regions:
  - us-east1
  - europe-west1
  resources:
    limits:
      cpu: 1000m
      memory: 512Mi
    startup_cpu_boost: false
  scalability:
    min_instances: 0
  load_balancing:
    external_load_balancer:
      enabled: false
      backend_protocol: rest
    internal_load_balancer:
      enabled: true
      backend_protocol: grpc
  deployment:
    strategy: legacy
    rollout_traffic_percentages:
    - 5
    - 25
    - 75
    - 100

Type: string Default: "runway/v1"

The API version of the manifest schema

Type: enum (of string)

The kind of resource manifest

Must be one of:

  • "RunwayService"

Type: object
No Additional Properties

Type: string

The name of the service

Must be at most 63 characters long

Type: string

The email handle of the person or group that owns this service. See https://handbook.gitlab.com/handbook/infrastructure-standards/labels-tags/#owner-email-handle-glowneremail_handle for more information

Type: string

The department of the person or group that owns this service. See https://handbook.gitlab.com/handbook/infrastructure-standards/labels-tags/#gitlab-department-gl_dept for more information

Type: string

The department group of the person or group that owns this service. See https://handbook.gitlab.com/handbook/infrastructure-standards/labels-tags/#gitlab-department-group-gldeptgroup for more information

Type: string

The product category that owns this service. See https://handbook.gitlab.com/handbook/infrastructure-standards/labels-tags/#gitlab-product-category-glproductcategory for more information

Type: object

The specification of the service

No Additional Properties

Type: string

The container image of the service. DEPRECATED.

Type: integer Default: 8080

The container port the service should listen on. Defaults to 8080

Value must be strictly greater than 0 and strictly lesser than 65536

Type: array of enum (of string) Default: ["us-east1"]

The list of multiple regions to deploy the service

Must contain a minimum of 1 items

All items must be unique

No Additional Items

Each item of this array must be:

Type: enum (of string)

Must be one of:

  • "africa-south1"
  • "asia-east1"
  • "asia-east2"
  • "asia-northeast1"
  • "asia-northeast2"
  • "asia-northeast3"
  • "asia-south1"
  • "asia-south2"
  • "asia-southeast1"
  • "asia-southeast2"
  • "australia-southeast1"
  • "australia-southeast2"
  • "europe-central2"
  • "europe-north1"
  • "europe-southwest1"
  • "europe-west1"
  • "europe-west10"
  • "europe-west12"
  • "europe-west2"
  • "europe-west3"
  • "europe-west4"
  • "europe-west6"
  • "europe-west8"
  • "europe-west9"
  • "me-central1"
  • "me-central2"
  • "me-west1"
  • "northamerica-northeast1"
  • "northamerica-northeast2"
  • "southamerica-east1"
  • "southamerica-west1"
  • "us-central1"
  • "us-east1"
  • "us-east4"
  • "us-east5"
  • "us-south1"
  • "us-west1"
  • "us-west2"
  • "us-west3"
  • "us-west4"

Type: integer Default: 60

The maximum allowed time for an instance to respond to a request, measured in seconds with up to nine fractional digits. Defaults to 60

Value must be lesser or equal to 3600

Type: object

The startup probe of the service

No Additional Properties

Type: string Default: null

Path to access on the HTTP server

Type: string Default: null

Name of the grpc health status service

Type: integer Default: 0

Number of seconds after the container has started before the probe is initiated

Value must be greater or equal to 0 and lesser or equal to 240

Type: integer Default: 1

Number of seconds after which the probe times out

Value must be greater or equal to 1 and lesser or equal to 3600

Type: integer Default: 10

How often (in seconds) to perform the probe

Value must be greater or equal to 1 and lesser or equal to 240

Type: integer Default: 3

Minimum consecutive failures for the probe to be considered failed after having succeeded

Value must be greater or equal to 1

Type: object

The liveness probe starts only after the startupprobe is successful. Runway sends HTTP GET request to the path. If the liveness probe fails (failurethreshold * period_seconds) the container is killed with SIGKILL.

No Additional Properties

Type: string Default: null

Path to access on the HTTP server

Type: string Default: null

Name of the grpc health status service

Type: integer Default: 0

Number of seconds after the container has started before the probe is initiated

Value must be greater or equal to 0 and lesser or equal to 3600

Type: integer Default: 1

Number of seconds after which the probe times out

Value must be greater or equal to 1 and lesser or equal to 3600

Type: integer Default: 10

How often (in seconds) to perform the probe

Value must be greater or equal to 1 and lesser or equal to 3600

Type: integer Default: 3

Minimum consecutive failures for the probe to be considered failed after having succeeded

Value must be greater or equal to 1

Type: object

The container resource management of the service

No Additional Properties

Type: object

The limits to prevent the container from using more than the configured resources. When exceeded, running containers are terminated

No Additional Properties

Type: string Default: "1000m"

The limit of CPU resources, measured in cpu units

Type: string Default: "512Mi"

The limit of memory resources, measured in bytes

Type: string Default: "256Mi"

The amount of memory consumable by the in-memory volume mounted at /scratch, in bytes. Must be less than "memory".

Type: boolean Default: false

Temporarily increases CPU allocation during container instance startup

Type: object

The observability management of the service

No Additional Properties

Type: array of string

The targets to scrape Prometheus custom metrics. When present, sidecar container for OpenTelemetry collector will be deployed. Must not include metrics path.

Must contain a minimum of 1 items

All items must be unique

No Additional Items

Each item of this array must be:

Type: string
Must match regular expression: ^[^:/]+(:\d+)?$

Example:

localhost:8181

Type: object

The container scalability management of the service

No Additional Properties

Type: integer Default: 1

The minimum number of instances that will be kept running for the service

Value must be greater or equal to 0 and lesser or equal to 100

Type: integer Default: 100

The maximum number of instances that can be used for the service

Value must be greater or equal to 1 and lesser or equal to 1000

Type: integer Default: 80

The maximum number of concurrent requests per instance of the service

Value must be greater or equal to 1 and lesser or equal to 1000

Type: object

The network policies of the service

No Additional Properties

Type: boolean Default: false

Restrict load balancer traffic to Cloudflare IP ranges

Type: object

Load balancing configuration

No Additional Properties

Type: object

Configuration for the external load balancer

No Additional Properties

Type: boolean Default: true

Enable/disable the external load balancer

Type: enum (of string) Default: "HTTP"

The backend protocol to be used. Acceptable values are: rest, grpc, HTTP, HTTPS, and HTTP2. Defaults to HTTP. Support for rest and grpc is deprecated and will be removed in the next Runwayctl major version.

Must be one of:

  • "rest"
  • "grpc"
  • "HTTP"
  • "HTTPS"
  • "HTTP2"

Type: object

Configuration for the internal load balancer

No Additional Properties

Type: boolean Default: false

Enable/disable the internal load balancer. This load balancer will only be accessible within the Runway VPC and via VPC peering

Type: enum (of string) Default: "HTTP"

The backend protocol to be used. Acceptable values are: rest, grpc, HTTP, HTTPS, and HTTP2. Defaults to HTTP. Support for rest and grpc is deprecated and will be removed in the next Runwayctl major version.

Must be one of:

  • "rest"
  • "grpc"
  • "HTTP"
  • "HTTPS"
  • "HTTP2"

Type: object

The deployment management of the service

If the conditions in the "If" tab are respected, then the conditions in the "Then" tab should be respected. Otherwise, the conditions in the "Else" tab should be respected.

Type: object


Type: const
Specific value: "legacy"
Type: const
Specific value: "regional_rollout"
Type: object

Type: array of integer

Progression to assign % of traffic to the canary revision, only applies to regional_rollout and legacy. Last element has to be 100. Defaults to respective percentages described in https://docs.runway.gitlab.com/guides/deployment-strategy/

Must contain a minimum of 1 items

Must contain a maximum of 10 items

All items must be unique

No Additional Items

Each item of this array must be:

Type: integer

Value must be greater or equal to 1 and lesser or equal to 100


Example:

[1, 5, 20, 100]

Type: enum (of string) Default: "legacy"

The strategy to control how canary revisions are deployed. Acceptable values are: legacy, expedited, regional_rollout, dryrun. Defaults to legacy. Refer to https://docs.runway.gitlab.com/guides/deployment-strategy/ for more info

Must be one of:

  • "legacy"
  • "expedited"
  • "regional_rollout"
  • "dryrun"

Type: object

VPC connectivity

No Additional Properties

Type: boolean Default: false

Enable VPC access for connecting to internal services like Memorystore

Type: enum (of string) Default: "PRIVATE_RANGES_ONLY"

Type of egress traffic that should be routed via the VPC

Must be one of:

  • "PRIVATE_RANGES_ONLY"
  • "ALL_TRAFFIC"