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": {
        'manifest': {
            'apiVersion': "v1",
        },
     },
     "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 attribute
Cluster Rolek8s_clusterroles
Cluster Role Bindingk8s_clusterrolebindings
Config Mapk8s_configmaps
Cron Jobk8s_cronjobs
Custom Resource Definitionk8s_crd
Daemon Setk8s_daemonsets
Deploymentk8s_deployments
Ingressk8s_ingresses
Namespacek8s_namespaces
Network Policyk8s_networkpolicies
Persistent Volume Claimk8s_pvc
Rolek8s_roles
Role Bindingk8s_rolebindings
Servicek8s_services
Service Accountk8s_serviceaccounts
Secretk8s_secrets
StatefulSetk8s_statefulsets
(any)k8s_raw

You can define Custom Resources like this:

k8s_crd = {
    "custom-thing": {
        'manifest': {
            'apiVersion': "apiextensions.k8s.io/v1beta1",
            '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.