-
Notifications
You must be signed in to change notification settings - Fork 3.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Umut Deniz
committed
Jan 23, 2025
1 parent
e93f240
commit f61d181
Showing
2 changed files
with
95 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() |