Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Doc: Added debug logging doc and example #2330

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions devel/debug_logging.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Enabling Debug Logging in Kubernetes Python Client

This document describes how to enable debug logging, view logged information, and provides examples for creating, patching, and deleting Kubernetes resources.

## 1. Why Enable Debug Logging?

Debug logging is useful for troubleshooting as it shows details like HTTP request and response headers and bodies. These details can help identify issues during interactions with the Kubernetes API server.

---

## 2. Enabling Debug Logging

To enable debug logging in the Kubernetes Python client, follow these steps:

1. **Modify the Configuration Object:**
Enable debug mode by setting the `debug` attribute of the `client.Configuration` object to `True`.

2. **Example Code to Enable Debug Logging:**
Below is an example showing how to enable debug logging:
```python
from kubernetes import client, config

# Load kube config
config.load_kube_config()

# Enable debug logging
c = client.Configuration()
c.debug = True

# Pass the updated configuration to the API client
api_client = client.ApiClient(configuration=c)

# Use the API client with debug logging enabled
apps_v1 = client.AppsV1Api(api_client=api_client)
61 changes: 61 additions & 0 deletions examples/enable_debug_logging.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Copyright 2025 The Kubernetes Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# You may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# This example demonstrates how to enable debug logging in the Kubernetes
# Python client and how it can be used for troubleshooting requests/responses.

from kubernetes import client, config


def main():
# Load kubeconfig from default location
config.load_kube_config()

# Enable debug logging
configuration = client.Configuration()
configuration.debug = True
api_client = client.ApiClient(configuration=configuration)

# Use AppsV1Api with debug logging enabled
apps_v1 = client.AppsV1Api(api_client=api_client)

# Example: Create a dummy deployment (adjust namespace as needed)
deployment = client.V1Deployment(
api_version="apps/v1",
kind="Deployment",
metadata=client.V1ObjectMeta(name="debug-example"),
spec=client.V1DeploymentSpec(
replicas=1,
selector={"matchLabels": {"app": "debug"}},
template=client.V1PodTemplateSpec(
metadata=client.V1ObjectMeta(labels={"app": "debug"}),
spec=client.V1PodSpec(
containers=[
client.V1Container(
name="busybox",
image="busybox",
command=["sh", "-c", "echo Hello, Kubernetes! && sleep 3600"]
)
]
),
),
),
)

# Create the deployment
try:
print("[INFO] Creating deployment...")
apps_v1.create_namespaced_deployment(
namespace="default", body=deployment
)
except client.exceptions.ApiException as e:
print("[ERROR] Exception occurred:", e)


if __name__ == "__main__":
main()