The KuboCD Package
A Package is an OCI-compliant container image that bundles an application descriptor along with one or more Helm charts.
It serves as the standardized unit of deployment, encapsulating everything needed to describe and install an application.
Refer to A first deployment for an introductory example.
The OCI image is built from a manifest, whose structure is described below.
Templating
Some attributes can accept a template, rendering the final value. There are noted as the following:
- template(string): A template which must render a string.
- template(bool): A template that must render a string convertible to a boolean value. (1, t, T, TRUE, true, True, 0, f, F, FALSE, false, False)
- template(list(string)): A template which must render a list of string
- template(map): A template which must render a map/object.
- template(duration): A template that must render a string convertible to a duration value.
Package
apiVersion
String, required | The manifest version. Only allowed value is currently v1alpha1
type
String, optional: The manifest type. Only allowed value is Package. May be omitted.
name
String, required: The name of the package. Will be used in the OCI repository name. Must be a valid DNS Subdomain name (RFC 1123).
tag
String, required: The tag for the OCI image.
description
Template(string), optional: A short description of the package. Will act as default for its Release counterpart.
protected
Bool, Default: false: Prevent deletion. Will act as default for its Release counterpart
schema.parameters
Map, Optional: Allow validation or the Parameters defined in the Release object. It could be a JSON/OpenAPI
schema or a KuboCD specific format.
If none is provided, this means the Release will not accept any parameters.
schema.context
Map, Optional: Allow validation or the Context of the deployment. It could be a JSON/OpenAPI
schema or a KuboCD specific format.
If none is provided, there will be no control on provided Context
modules
List(Modules), Required: The list of modules included in this package.
roles
Template(List(string)), optional: The roles this package aims to fulfill. See Release Dependencies and Roles
dependencies
Template(List(string)), optional: The roles this package depends on. See Release Dependencies and Roles
Package.module
A Module embed an Helm Chart
name
String, required: The module name. Must be unique for a package. Used in the name of several Kubernetes ressources, so it must be a valid DNS Subdomain name (RFC 1123)
source
Map, required:: Provide the location from which to fetch the Helm chart. Must contain of the following sub-elements:
values
Template(map), Optional: The template rendering the 'values file' used to deploy the Helm Chart. Refer to A first deployment for an simple first example.
timeout
Template(duration), default: 2m: Timeout is the time to wait for any individual Kubernetes operation (like Jobs for hooks) during the performance of a Helm action.
enabled
Template(bool), default: true: When set to false, the module is not deployed at all. See for an example.
targetNamespace
Template(string), default: {{ .Release.spec.targetNamespace }}: The namespace to deploy the application into.
dependsOn
Template(list(string)), optional: A list of other modules of this package we depends on.
specPatch
Template(map), optional: A patch applied to the spec section of the Flux HelmRelease resource.
It allows you to set any parameters that are not exposed by KuboCD.
Package.module.source.helmRepository
Use this section to fetch an Helm Chart stored on an Helm Repository.
url
String, required: The URL of the Helm repository
chart
String, required: The Chart name
version
String, required: The Chart version
Package.module.source.git
Use this section to fetch an Helm Chart stored on an Git Repository.
url
String, required: The URL of the Git repository
branch
String, required if tag is not defined: The branch to fetch
tag
String, required if branch is not defined: The tag to fetch
path
String, required: The folder inside the Git repository of the Chart (Where is Chart.yaml is located)
Package.module.source.oci
Use this section to fetch an Helm Chart stored as an OCI image.
repository
String, required: The repository URL without oci:// and tag.
tag
String, required: The image tag.
insecure
Bool, default: false: Repository access is in clear text (non encrypted)
Package.module.source.local
Use this section to fetch an Helm Chart stored on your workstation, alongside the Package manifest.
path
String, required: The local folder of the Chart (Where is Chart.yaml is located). Relative to the Package
manifest location