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:
appfor applications available in Flinkwerk Marketplace.clusterfor clusters available inside or outside of Flinkwerk Marketplace.helmfor 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].typewas set toapp; - the Helm charts version if
dependencies.[name].typewas 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:
appfor applications available in Flinkwerk Marketplace.helmfor 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.typewas set toapp; - the Helm charts version if
from.typewas 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:
clusterfor a Kubernetes cluster inside or outside of Flinkwerk Marketplace.registryfor 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.