Skip to main content

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 to charts/ or name of remote Helm Charts (e.g. bitnami/nginx)

Defaults to app.

dependencies.[name].version

The field dependencies.[name].version denotes

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 to charts/ 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 to app;
  • the Helm charts version if from.type was set to helm.

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

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.