Kubernetes items

Support for Kubernetes is experimental at this time. Backwards-incompatible changes may happen at any time.

See also: Guide to Kubernetes


Manage resources in Kubernetes clusters.

k8s_namespaces = {
     "my-app": {},
     "my-previous-app": {'delete': True},
}

k8s_deployments = {
    "my-app/my-deployment": {
        'manifest': {
            ...
        },
    },
}

Note that the names of all items in a namespace must be prefixed with the name of their namespace and a forward slash /. Resource items will automatically depend on their namespace if you defined it.


Resource types

Resource typeBundle attributeapiVersion
Cluster Rolek8s_clusterrolesrbac.authorization.k8s.io/v1
Cluster Role Bindingk8s_clusterrolebindingsrbac.authorization.k8s.io/v1
Config Mapk8s_configmapsv1
Cron Jobk8s_cronjobsbatch/v1beta1
Custom Resource Definitionk8s_crdapiextensions.k8s.io/v1beta1
Daemon Setk8s_daemonsetsv1
Deploymentk8s_deploymentsextensions/v1beta1
Ingressk8s_ingressesextensions/v1beta1
Namespacek8s_namespacesv1
Network Policyk8s_networkpoliciesnetworking.k8s.io/v1
Persistent Volume Claimk8s_pvcv1
Rolek8s_rolesrbac.authorization.k8s.io/v1
Role Bindingk8s_rolebindingsrbac.authorization.k8s.io/v1
Servicek8s_servicesv1
Service Accountk8s_serviceaccountsv1
Secretk8s_secretsv1
StatefulSetk8s_statefulsetsapps/v1
(any)k8s_raw(any)

You can define Custom Resources like this:

k8s_crd = {
    "custom-thing": {
        'manifest': {
            'spec': {
                'names': {
                    'kind': "CustomThing",
                },
            },
        },
    },
}

k8s_raw = {
    "foo/CustomThing/baz": {
        'manifest': {
            'apiVersion': "example.com/v1",
        },
    },
}

The special k8s_raw items can also be used to create resources that BundleWrap does not support natively:

k8s_raw = {
    "foo/HorizontalPodAutoscaler/baz": {
        'manifest': {
            'apiVersion': "autoscaling/v2beta1",
        },
    },
}

Resources outside any namespace can be created with k8s_raw by omitting the namespace in the item name (so that the name starts with /).


Attribute reference

See also: The list of generic builtin item attributes


context

Only used with Mako and Jinja2 manifests (see manifest_processing below). The values of this dictionary will be available from within the template as variables named after the respective keys.


delete

Set this to True to have the resource removed.


manifest

The resource definition (as defined in the Kubernetes API) formatted as a Python dictionary (will be converted to JSON and passed to kubectl apply). Mutually exclusive with manifest_file.


manifest_file

Filename of the resource definition relative to the manifests subdirectory of your bundle. Filenames must end in .yaml, .yml, or .json to indicate file format. Mutually exclusive with manifest.


manifest_processor

Set this to jinja2 or mako if you want to use a template engine to process your manifest_file. Defaults to None.