Fields
The fields to declare Flinkwerk projects and workflows.
Fields are listed in alphabetical order.
Mandatory fields
You must define the api_version
field, as well as the owner
and name
field in .flinkwerk/config.yml
. All other fields are optional.
Style
In general, all configuration field names are written in snake case.
api_version
(required)
The field api_version
defines the versioned schema of the Flinkwerk configuration file(s). The Flinkwerk CLI and Flinkwerk API convert recognized schemas to the latest internal value, and may reject unrecognized values.
dependencies
This defines your application dependencies, i.e. applications that your project relies on to function properly.
dependencies.[name]
A machine-readable name you assign to an application configuration.
Syntax constraints of name values apply.
The application name shows up in the preview URL of your deployed project.
The below fields are available within the dependencies.[name]
dictionary.
dependencies.[name].description
A free-form description of a dependency.
dependencies.[name].repository
URL of Helm chart repository. Ignored if you provided local folder at dependencies.[name].sku
.
dependencies.[name].sku
The respective SKU of Flinkwerk products or Helm charts.
dependencies.[name].type
dependencies.[name].type
sets the dependency context. Available options:
app
for applications available in Flinkwerk Marketplace.cluster
for clusters available inside or outside of Flinkwerk Marketplace.helm
for local or remote Helm Charts. Defaults tocharts/
or name of remote Helm Charts (e.g.bitnami/nginx
)
Defaults to app
.
dependencies.[name].version
The field dependencies.[name].version
denotes
- the product version in Flinkwerk Marketplace if
dependencies.[name].type
was set toapp
; - the Helm charts version if
dependencies.[name].type
was set tohelm
.
If you omit the version field, the latest available version will be used.
dependencies.[name].kubeconfig
If dependencies.[name].type
is cluster
, this field enables you to provide the path to a kubeconfig
file in case you want to use third-party clusters outside of Flinkwerk Marketplace.
description
The description of a project, which automatically becomes the long description of a product.
Allows for HTML markup.
Defaults to excerpt
content if not empty.
domain
The domain
field allows you to define a custom domain of your preview URLs. By default, the domain is flinkwerk.dev
.
Learn more about configuring a custom preview URL domain.
environments
Here you define your project environments, i.e. which Git branches you want to see deployed to which cluster and optionally custom domains to access the applications of your project.
environments.[name]
A machine-readable name you assign to an environment configuration.
Syntax constraints of name values apply.
The below fields are available within the environments.[name]
dictionary.
environments.[name].cluster
Provide the name of a global cluster resource you defined in global.[name]
to have Flinkwerk deploy to this cluster.
environments.[name].domain
Your custom domain, which applies to this environment. Can be overridden per application dependency by environments.[name].routes.*.domain
.
environments.[name].except
A list of Git branches to be excluded from automatic deployment.
environments.[name].only
A list of Git branches to be included in the automatic deployment.
environments.[name].routes
A list of routes which allow you to configure custom domains per application dependency.
environments.[name].routes.*.dependencies
Contains the names of applications which should run under a custom domain.
environments.[name].routes.*.dependencies.[name]
Provide either the full custom domain (e.g. my-org.com
) to override the domain configured at environments.[name].domain
and environments.[name].routes.*.domain
, or just the subdomain (e.g. my-subdomain
) to append it to the domain defined at environments.[name].domain
and environments.[name].routes.*.domain
.
environments.[name].routes.*.branch
The full name of a specific Git branch that you want the route settings to apply to.
environments.[name].routes.*.domain
Provide either the full custom domain (e.g. my-org.com
) to override the domain configured at environments.[name].domain
or just the subdomain (e.g. my-subdomain
) to append it to the domain defined at environments.[name].domain
.
excerpt
The excerpt of a project, which automatically serves as a product's short description.
Defaults to empty.
from
The from
field enables developers to inherit applications as the basis of a new project. Learn more how to use application inheritance.
Omit the from
field if you want to develop a Flinkwerk project from scratch.
By leaving out the from
definition, you can use a Flinkwerk project just to deploy resources.
The below fields are available within the from
dictionary.
from.dockerfile
Path to a local Dockerfile
file relative to your project root. Defaults to Dockerfile
.
from.registry
The name of a registry which you defined under registries
for pulling private container images that belong to the inherited application.
from.repository
URL of Helm chart repository.
from.sku
The respective SKU of Flinkwerk products or Helm Charts.
from.type
from.type
sets the inheritance context. Available options:
app
for applications available in Flinkwerk Marketplace.helm
for local or remote Helm charts. Defaults tocharts/
or name of remote Helm charts (e.g.bitnami/nginx
)
Defaults to app
.
from.version
The field from.version
denotes
- the product version in Flinkwerk Marketplace if
from.type
was set toapp
; - the Helm charts version if
from.type
was set tohelm
.
If you omit the version field, the latest available version will be used.
global
Resources such as clusters or registries, which are supposed to be available across all your projects, must be defined under the global
field.
Only clusters defined here can be used in environments
configurations.
global.[name]
A machine-readable name you assign to a global resource configuration.
The name of a resource is its unique identifier across all your projects.
Syntax constraints of name values apply.
A cluster name shows up in the preview URL of your deployed project.
The below fields are available within the global.[name]
dictionary.
global.[name].default
If set to true
for resource type registry
, this registry will be used by Flinkwerk if no registry name was provided at registry
.
global.[name].description
A free-form description of a global resource.
global.[name].email
The email for a global resource, e.g. for your registry.
global.[name].kubeconfig
If global.[name].type
is cluster
, this field enables you to provide the path to a kubeconfig
file in case you want to use third-party clusters outside of Flinkwerk Marketplace.
global.[name].password
The password for accessing a global resource, e.g. your registry. It is highly recommended that you use a variable for this secret.
global.[name].push_path
The path to a global resource endpoint, e.g. that of a registry, which processes the container image push, relative to the server domain you provided at registries.[name].server
.
global.[name].repository
URL of Helm chart repository.
global.[name].server
The domain name of a global resource, e.g. your registry server.
global.[name].sku
The respective SKU of a resource available inside or outside of Flinkwerk Marketplace.
global.[name].type
global.[name].type
sets the type of resource. Available options:
cluster
for a Kubernetes cluster inside or outside of Flinkwerk Marketplace.registry
for a container images registry.
Configuration of credentials to access one or more Docker registries where your image builds reside.
Unique default registry: Only one registry can be labeled as the default registry for all projects in case a project does not explicitly define a registry.
global.[name].user
The user name for accessing a global resource, e.g. your registry.
name
(required)
The name of your project is its unique identifier within the Flinkwerk system. The project name is a required field.
Once your project is initialized, you cannot change the name value.
The project name shows up in the preview URL of your deployed project.
The SKU of a product defined in your project will be automatically composed by combining the owner
field and the project name
field.
Defaults to the SKU if left empty.
owner
(required)
The project owner, which equals the login name of a Flinkwerk user. This could be either you as the creator of the project, or another Flinkwerk user who has invited you as a team member to his or her Flinkwerk project.
The project owner cannot be changed after first initialization of the project.
The project owner value shows up in the preview URL of your deployed project.
product
The product configuration enables you to define parameters for how you want your product to be sold or shared on Flinkwerk Marketplace.
Per Flinkwerk repository, you can define only one project, but one or several products. You can mix configurations of a project and one or many products or keep them separate, i.e. use a dedicated repository for just one project or just one product.
product.homepage
The URL of the product home page.
product.license
SPDX identifier of the product license. For proprietary licenses, use UNLICENSED
or SEE LICENSE IN [path-to-file]
.
Defaults to
- MIT open-source license if project owner is subscribed to the Flinkwerk Open Source plan.
UNLICENSED
, i.e. proprietary license if project owner is subscribed to a plan other than the Flinkwerk Open Source plan.
product.price
The monthly subscription price of your Flinkwerk product in USD. If visibility is set to private
, you won't have to define a price. If visibility is public
, a price value is mandatory. You could then set the value to 0.00
for free offerings.
Defaults to 0.00
if project owner is subscribed to the Flinkwerk Open Source plan.
product.type
The type of product you are selling or sharing on Flinkwerk Marketplace. Defaults to app
.
product.visibility
A flag indicating whether the product will be available to the general public in Flinkwerk Marketplace or wthin your projects only.
Options:
public
: Everyone can see, purchase and use the product through the Flinkwerk Marketplace. This is the only option if the project owner is subscribed to the Flinkwerk Open Source plan.private
: Only the account owning the project can see and use the product, as well as team members if the project owner is subscribed to the Flinkwerk Team plan.
Defaults to public
for project owners subscribed to Flinkwerk Open Source plan and to private
for others.
Typically, agencies or system integrators developing a client project would set visibility to "private" to make internal products available to the project team or the client, only. Also, "private" could be used to test the purchase process before making the product available to third parties.
registry
The name of a container image registry defined in registries
. Flinkwerk will push the custom Docker image of your project there and pull it from there upon deployment.
title
A string with a human-readable name of your project.