Application Configuration Reference
application:
name: "" # requried, unique Application name
releaseChannels: # required
- name: "" # required, Release Channel name
group: "" # if specified, this Release Channel is part of a group. This can affect how release channels are rendered on the Prodvana UI.
runtimes: # required, list of Runtimes that Services in this Release Channel can deploy to. A Service will pick only one Runtime on this list to deploy to, e.g. having an ECS Runtime and Kubernetes Runtime available in the same Release Channel for appropriate Services.
- runtime: "" # Runtime name
name: "" # optional, fill this in if the Release Channel has more than one Runtime capable of running the same kind of Services. Will be used by the Service's `runtimeConnection` setting.
containerOrchestration: # optional settings for certain kinds of Runtimes
k8s: # Kubernetes Runtime settings
namespace: "" # optional, what namespace to use for this Release Channel. If not specified, Prodvana will create one based on the Application and Release Channel names.
preconditions: # optional, what needs to be true before deploying to this Release Channel
- # exactly one of these can be specified
releaseChannelStable: # wait for a Release Channel to be stable
# one of `releaseChannel`, `selector` is required
releaseChannel: "" # Release Channel name that the Service must be stable in before deploying
selector: "" # a label selector query to wait on a group of Release Channels. @application=<app name> is added automatically.
allowEmpty: false # if using selector, allow selector to return an empty list (otherwise, doing so will result in an error).
manualApproval: # wait for an approval via Prodvana UI
name: "" # optional, approval name. will be autogenerated
description: "" # optional
everyAction: false # request approval before every deployment action, not just the first. Only works for Custom Runtimes, ignored otherwise.
sharedManualApproval: # like manualApproval, but have a single approval shared by many different Release Channels
name: "" # required, the name is what determines uniqueness.
protections: # Release-Channel-level protections
- name: "" # optional, defaults to Protection name. Useful if the same Protection is instantiated many times in the same Service/Release Channel
ref: # required, reference a Protection defined from `pvnctl configs apply`
- name: "" # required, Protection name
parameters:
- name: "" # required, parameter name
# one of the following is required and must match the parameter definition
string: "" # string parameter value
int: 0 # int parameter value
dockerImageTag: "" # docker image tag parameter value
commit: "" # commit parameter value
blob: "" # blob parameter value, the content of the blob to pass as an ID
secret: # a Prodvana secret
secretRef:
key: ""
version: ""
lifecycle: # optional, if not specified, the Protection will run but not impact convergence
# at least one of these is required
preApproval: {}
postApproval: {}
deployment:
failureBehavior: FAIL | BLOCK # optional, defaults to FAIL. What to do when the protection fails. BLOCK prevents Prodvana from applying further changes until Protection starts passing again, while FAIL causes the convergence to fail and any automatic rollback to be triggered.
postDeployment:
checkDuration: 0s # required, how long to check the Protection for after deployment is complete
delayCheckDuration: 0s # optional, how long to wait before checking the Protection. If specified, the total duration in this lifecycle is the sum of checkDuration and delayCheckDuration.
serviceInstanceProtections: ... # Service-Instance-level Protections to apply to every Service in this Release Channel. Same schema as `protections`.
convergenceProtections: ... # convergence-level Protections to apply to every Service in this Release Channel. Same schema as `protections`.
policy: # optional
defaultEnv: # optional, default env variables for all Services, only supported for Kubernetes or Prodvana-backend-agnostic config
"key":
# one of these is required
value: "" # string value
secret: # reference a secret stored on Prodvana
key: "" # required
version: "" # required
kubernetesSecret: # reference a Kubernetes secret. The secret must already exist on the same namespace as the Service.
secretName: "" # required, secret name
key: "" # required, map key inside the secret to use (Kubernetes secrets are stored as a map)
constants: # optional, constants to be made available to Services in template variables under {{.Constants.*}}
- name: "" # required, name of constant, also used as template variable name
string:
value: "" # constant value
labels: # optional, custom Release Channel labels
- label: "" # required
value: "" # required
deployAnnotations: # optional, annotations used when pushing events to external systems
honeycomb: # optional
environment: "" # required, Honeycomb environment
dataset: "" # optional
disableAllProtections: false # optional, disable all Protections defined on this Release Channel. Useful for testing or spinning up new Release Channels quickly.
releaseChannelGroups: # optional, used to generate a large list of Release Channels from a Runtime label selector.
- name: "" # required, Release Channel group name
runtimeSelector: "" # required, label selector for runtimes to generate release channels for. One release channel will be generated for each runtime that matches this selector. The selector will automatically be intersected with "@type=runtime".
allowEmpty: false # required, allow selector to return an empty list (otherwise, doing so will result in an error).
# optional, customize how the release channel will be generated.
# Template variables .Builtins.Group an d.Builtins.Runtime are available.
# Any value specified here will be merged with:
# name: {{.Builtins.Group}}-{{.Builtins.Runtime.Name}}
# group: {{.Builtins.Group}}
# runtimes:
# - runtime: {{Builtins.Runtime.Name}}
template: ...
notifications: # optional
slack: # Slack notification for releases
channel: "" # Slack channel to send notifications to
errorChannel: "" # optional, Slack channel to only send error notifications to
Updated 6 months ago