Minimal Kubernetes client for Lilush. Talks directly to the k8s API
server using web.request — no kubectl dependency. Supports kubeconfig
parsing, bearer token and client certificate authentication, and core
CRUD operations against the k8s REST API.
| Module | Description |
|---|---|
| k8s.api | Kubernetes API URL builder and request execution. |
| k8s.kubeconfig | Ad-hoc YAML parser for Kubernetes kubeconfig files. |
| k8s.resources | Kubernetes resource type registry mapping resource names to their API group, version, and namespace scope. |
| Name | Signature |
|---|---|
get | get(self, resource, name, opts) -> result, err |
list | list(self, resource, opts) -> result, err |
create | create(self, resource, body, opts) -> result, err |
update | update(self, resource, name, body, opts) -> result, err |
patch | patch(self, resource, name, body, opts) -> result, err |
delete | delete(self, resource, name, opts) -> result, err |
logs | logs(self, pod_name, opts) -> text, err |
close | close(self) |
new | new(cfg) -> client, err |
load_kubeconfig | load_kubeconfig(path) -> config, err |
get(
self,resource,name,opts) ->result,err
Get a single resource by name
list(
self,resource,opts) ->result,err
List resources of a given type
Returns the k8s List object containing an items array. Supports
label_selector, field_selector, limit, and continue in opts.
create(
self,resource,body,opts) ->result,err
Create a new resource
update(
self,resource,name,body,opts) ->result,err
Replace (full update) an existing resource
patch(
self,resource,name,body,opts) ->result,err
Patch an existing resource
Supports different patch strategies via opts.patch_type:
"strategic" (default) — strategic merge patch
"merge" — JSON merge patch
"json" — JSON patch (body is an array of operations)
delete(
self,resource,name,opts) ->result,err
Delete a resource by name
logs(
self,pod_name,opts) ->text,err
Get logs from a pod
Returns plain text log output. Supported opts:
container — specific container name
tail_lines — number of lines from the end
since_seconds — relative time filter in seconds
previous — get logs from previous container instance
namespace — override default namespace
close(
self)
Clean up temporary certificate files
new(
cfg) ->client,err
Create a new Kubernetes client
Constructs a k8s client from either a kubeconfig file or explicit configuration.
Kubeconfig mode:
local client, err = k8s.new({
kubeconfig = "~/.kube/config",
context = "my-context", -- optional, uses current-context if omitted
namespace = "my-ns", -- optional, overrides context namespace
timeout = 10, -- optional, request timeout in seconds
})
Explicit mode:
local client, err = k8s.new({
server = "https://k8s-api:6443",
token = "my-token", -- or token_file = "/path/to/token"
ca_cert = "/path/to/ca.crt",
client_cert = "/path/to/cert.pem", -- optional, for mTLS
client_key = "/path/to/key.pem", -- optional, for mTLS
namespace = "default",
timeout = 10,
})
load_kubeconfig(
path) ->config,err
Load and parse a kubeconfig file without creating a client