Service Configuration Reference
service:
name: "" # required, unique Service name in the Application
application: "" # required, Application that this Service belongs to
# at least one of the following configurations are required
kubernetesConfig: # optional, configure a Kubernetes Service
type: KUBERNETES | KUSTOMIZE # required
local:
# one of path, paths is required
path: "" # relative path to Kubernetes config file or directory. If directory, all YAML files (side from .pvn.yaml files) are concatenated together.
paths: # same as `path`, but can be specified multiple times
- ""
subPath: "" # optional, used in conjunction with path to allow templating `path` to Kubernetes config file. When specified, `path` must be a directory and the entire content of the directory will be uploaded to Prodvana. Cannot be used with `paths`.
excludePattern: # optional, used in conjunection with subPath to exclude sub paths from being tarball'ed and uploaded to Prodvana. Follows the same format as gitignore.
- ""
patches: # optional, patch the Kubernetes or Kustomize configs that was read in
- target: # optional, only apply this patch to objects matching this filter
# if any of these fields are omitted, it is the same as not filtering on that field
group: "" # optional, Kubernetes API group. e.g. `apps` (the part of `apiVersion` before the /)
version: "" # optional, Kubernetes API version. e.g. `v1` (the part of `apiVersion` after the /)
kind: "" # optional, Kubernetes object kind. e.g. `Deployment`
name: "" # optional, Kubernetes object name
namespace: "" # optional, Kubernetes namespace
replace: # required
path: "" # json6902 path leading to the field to patch, e.g. `/spec/replicas` or `/spec/template/spec/containers/0/ports/0/nodePort`
# one of these is required
string: "" # string value
intAsString: "" # int value written as a string. Will be coerced to an int and patched in as an int
helm: # optional, configure a Helm Service
# one of local or remote is required
remote: # a remote Helm chart
repo: "" # required, Helm repo name
chart: "" # required, Helm chart name
chartVersion: "" # required, Helm chart version
local: # a local Helm chart
path: "" # path to directory containing Chart.yaml
valuesOverrides: # optional, override Helm values. When multiple are specified, they are merged with the later ones taking precedence.
- # one of local or inlined is required
inlined: "" # inlined Helm values.yaml string
local:
path: "" # required, path to values.yaml file
subPath: "" # optional, used in conjunction with path to allow templating `path` to Helm values.yaml file. When specified, `path` must be a directory and the entire content of the directory will be uploaded to Prodvana.
releaseName: "" # optional, Helm release name, defaults to an autogenerated name. Mainly useful for migrating an existing Helm release into Prodvana.
customRuntime: # optional, configure a Service that runs on a custom Runtime.
parameterValues: # pass parameters to the Custom Runtime
- 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: ""
awsEcs:
taskDefinition: # required, ECS task definition
local:
path: "" # path to task definition JSON
subPath: "" # optional, used in conjunction with path to allow templating `path` to task definition JSON. When specified, `path` must be a directory and the entire content of the directory will be uploaded to Prodvana.
# one of serviceDefinition or updateTaskDefinitionOnly is required
serviceDefinition: # ECS service definition
local:
path: "" # path to service definition JSON
subPath: "" # optional, used in conjunction with path to allow templating `path` to service definition JSON. When specified, `path` must be a directory and the entire content of the directory will be uploaded to Prodvana.
updateTaskDefinitionOnly: false # update task definition without touching the service definition. The ECS service must already exist.
ecsServiceNameOverride: "" # optional, override the ECS service name. Defaults to the Prodvana service name. Override this if you are deploying the same service to the same ECS cluster via many different Release Channels
googleCloudRun:
local:
path: "" # path to cloud run YAML
subPath: "" # optional, used in conjunction with path to allow templating `path` to cloud run YAML. When specified, `path` must be a directory and the entire content of the directory will be uploaded to Prodvana.
terraform:
image: "" # required: The full Terraform Docker image.
path: "" # required: The path inside your Docker image to the Terraform module to run.
shellPath: "" # optional: A shell needed by the Terraform Runner. `sh` and `bash` are supported. Defaults to `/bin/sh`.
backendConfig: # extra backend configurations, to be passed to -backend-config=key=value in terraform-init.
"key": "value"
# end of configuration one of
env: # optional, additional env to be injected into the running Service. only supported for Kubernetes.
"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)
convergenceExtensions: # optional, Convergence Extensions that every Release Channel should get
- # one of `inlined`, `instance`, or `ref` is required
inlined: # define a Convergence Extension inlined
name: "" # required, name of the convergence extension
# one of `kubernetesConfig` or `taskConfig` is required
kubernetesConfig: # Kubernetes config defining a Job
type: KUBERNETES | KUSTOMIZE
local:
path: "" # relative path to the Job definition or a directory containing the Job definition
subPath: "" # optional, used in conjunction with path to allow templating `path` to the Job definition. When specified, `path` must be a directory and the entire content of the directory will be uploaded to Prodvana.
taskConfig:
program: # required
name: "" # required, container name
# one of `image` or `imageTag` with `imageRegistryInfo` is required.
image: "" # docker image
imageRegistryInfo:
containerRegistry: "" # container registry name on Prodvana
imageRepository: "" # image repository (path after the domain)
imageTag: "" # image tag, used in conjunction with imageRegistryInfo
entrypoint: # optional, override the image entrypoint
- ""
cmd: # optional, override the image command
- ""
env: # optional, env variables
"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)
workingDirectory: "" # optional, override working directory from the image
lifecycle: CONVERGENCE_START | PRE_APPROVAL | APPROVAL | POST_APPROVAL | DEPLOYMENT | POST_DEPLOYMENT # lifecycle the extension should run in
dependencies: # optional, list of other Convergence Extensions that will run before this one
- name: "" # name of a Convergence Extension defined in the `convergenceExtensions` field
convergenceExtensionInstances: {} # Deprecated
convergenceProtections: # optional, Protections on the convergence that every Release Channel should get
- 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: # required, indicate when the Protection should run
# 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.
noCleanupOnDelete: false # optional, do not delete resources on the Runtime when deleting the Service or Release Channel. Only used for Kubernetes and Helm (other backends already do not support cleanup).
runtimeConnection: "" # optional, which Runtime in the Release Channel to use. Will default to whatever the appropriate Runtime is (e.g. Kubernetes Runtime if the service is a Kubernetes Service).
autoRollback: # optional
disabled: false # disable automatic rollbacks
maestro: # optional, configure Maestro strategy. Defaults to IMMEDIATE
strategy: IMMEDIATE | RELEASE_TRAIN
parameters: # optional, parameters that can be changed from the UI without editing config files. Available in template variables as {{.Params.*}}
- name: "" # required, parameter name, used as the template variable name
description: "" # optional
required: false # optional, mark parameter as required
string: # string parameter
defaultValue: "" # optional, default value
dockerImage: # docker image parameter, populated from a docker registry integration
imageRegistryInfo:
containerRegistry: "" # container registry name on Prodvana
imageRepository: "" # image repository (path after the domain)
defaultTag: "" # optional, default value
int: # int parameter
defaultValue: 0 # optional, default value
commit: # commit parameter, populated from a repository integration
repository: "" # required, e.g. github.com/foo/bar
branch: "" # optional, branch to pull commits from when populating parameter textbox in the Prodvana UI
blob: # similar to string, but pass a blob ID in the template variable instead of the string content. Useful if the string content is going to be very large.
defaultValue: "" # optional, default value
secret: {} # secret stored on Prodvana. The content of the secret is passed via the template variable
constants: # optional, constants to be made available in template variables under {{.Constants.*}}
- name: "" # required, name of constant, also used as template variable name
string:
value: "" # constant value
perReleaseChannel: # optional, Release Channel-specific settings to override or merge with values above
- releaseChannel: "" # required, Release Channel name
kubernetesConfig: ... # overrides Service-level
helm: # merged with Service-level
valuesOverrides: # appended to Service-level
... # the rest overrides Service-level
customRuntime: # merged with Service-level
clearOnPerReleasechannelMerge: false # override Service-level parameters list instead of appending
parameterValues: ... # appended or overrides depending on clearOnPerReleasechannelMerge
awsEcs: ... # merged with Service-level
googleCloudRun: ... # merged with Service-level
env: ... # merged with Service-Level, takes precedence
constants: ... # appended to Service-level, takes precedence
convergenceExtensions: ... # appended to Service-level
runtimeConnection: "" # overrides Service-level
convergenceProtections: ... # appended to Service-level
protections: # Service-instance-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: {}
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.
Updated 6 months ago