Skip to content

Configuration

Similar to other Kubernetes libraries and the kubectl CLI tool, lightkube utilizes the kubeconfig file to configure the connection with Kubernetes.

The kubernetes configuration is represented by the class lightkube.KubeConfig.

Load the configuration from a file

The constructor KubeConfig.from_file() is used to load a specific configuration from the filesystem (which needs to follow the standard YAML kubeconfig format).

Example:

from lightkube import KubeConfig, Client

config = KubeConfig.from_file("path/to/my/config")
client = Client(config=config)

Notice that we didn't select a context. By default the client will pick the current context. This is in fact equivalent to

from lightkube import KubeConfig, Client

config = KubeConfig.from_file("path/to/my/config")
client = Client(config=config.get())    # pick the current context

The method .get() of KubeConfig is used to select a specific cluster and user configuration given a defined context. Without parameters the current context is assumed. A different context can be also used as follow

# use the context named my-context
client = Client(config=config.get(context_name='my-context'))  

Load in-cluster configuration

The constructor KubeConfig.from_service_account() is used to build a configuration starting from the service account data exposed inside a pod running on the cluster:

from lightkube import KubeConfig, Client

config = KubeConfig.from_service_account()
client = Client(config=config)

Auto-detect configuration from the environment

By default lightkube will do his best to detect the configuration looking at the environment.

import lightkube

client = lightkube.Client() # no configuration provided

is equivalent to

from lightkube import KubeConfig, Client

config = KubeConfig.from_env()
client = Client(config=config)

KubeConfig.from_env() will attempt to load a configuration using the following order:

  • in-cluster config.
  • config file defined in KUBECONFIG environment variable.
  • configuration file present on the default location (~/.kube/config).

Proxy configuration

The constructor KubeConfig.from_server() will build a simple configuration useful to connect to a non protected Kubernetes API. This is for example useful to tunnel API calls using kubectl proxy:

kubectl proxy --port=8080
from lightkube import KubeConfig, Client

config = KubeConfig.from_server("http://localhost:8080")
client = Client(config=config)