You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
What happened (please include outputs or screenshots):
Attempting to run a simple test program to merely load configuration breaks with a json.dumps TypeError error when using a configuration file similar to those generated by executing the gcloud container clusters get-credentials <cluster> --region <region> --project <gcp_project> command with the gke-gcloud-auth-plugin authentication helper installed:
$ cat test.py
from kubernetes import client, config
config.load_kube_config()
$ KUBECONFIG=config python test.py
ERROR:root:Object of type ConfigNode is not JSON serializable
What you expected to happen:
Empty output (provided a valid non-example configuration is provided and one has the gcloud auth plugin installed).
How to reproduce it (as minimally and precisely as possible):
Create a test Kubernetes configuration file as follows as a file called config:
apiVersion: v1
kind: Config
preferences: {}
contexts:
- context:
cluster: test-cluster
user: test-user
name: test
clusters:
- cluster:
certificate-authority-data: bm90X2FfcmVhbF9jZXJ0Cg==
server: https://w.x.y.z
name: test-cluster
users:
- name: test-user
user:
exec:
apiVersion: client.authentication.k8s.io/v1beta1
command: gke-gcloud-auth-plugin
installHint: Install gke-gcloud-auth-plugin for use with kubectl by following
https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl#install_plugin
provideClusterInfo: true
current-context: test
Create a test.py script as follows:
from kubernetes import client, config
config.load_kube_config()
Ensure kubernetes 32.0.0 is installed (31.0.0 works for me):
pip install kubernetes==32.0.0
Execute the script, specifying the KUBECONFIG environment variable to override the default location to your test file:
KUBECONFIG=config python test.py
You should receive the following error message from the default logger due to the error being caught and logged without a stacktrace:
ERROR:root:Object of type ConfigNode is not JSON serializable
I haven't looked extensively into what could have changed between versions, but version 31.0.0 appears to work; FWIW here's the requirements.txt for a more-involved test project where version 31.0.0 appears to function with the test file; swapping kubernetes==32.0.0 in breaks it:
I'm also using pyenv with a virtualenv whereas the gke-gcloud-auth-plugin binary likely uses the system python installation; this shouldn't matter as it's invoked in a subprocess, just as relative versus absolute path in the kube config for it likewise doesn't make a difference. You shouldn't need to even install it to reproduce, as it fails prior to the subprocess call AFAICT; that said, I haven't tried it on a totally 100% clean system without it installed.
Environment:
Kubernetes version (kubectl version):
Client Version: v1.31.2
Kustomize Version: v5.4.2
Server Version: v1.31.4-gke.1256000
OS:
Mac OSX 12.6.1
Python version (python --version)
Python 3.9.20
Python client version (pip list | grep kubernetes)
kubernetes 32.0.0
The text was updated successfully, but these errors were encountered:
What happened (please include outputs or screenshots):
Attempting to run a simple test program to merely load configuration breaks with a json.dumps TypeError error when using a configuration file similar to those generated by executing the
gcloud container clusters get-credentials <cluster> --region <region> --project <gcp_project>
command with thegke-gcloud-auth-plugin
authentication helper installed:What you expected to happen:
Empty output (provided a valid non-example configuration is provided and one has the gcloud auth plugin installed).
How to reproduce it (as minimally and precisely as possible):
Create a test Kubernetes configuration file as follows as a file called
config
:Create a
test.py
script as follows:Ensure kubernetes 32.0.0 is installed (31.0.0 works for me):
Execute the script, specifying the
KUBECONFIG
environment variable to override the default location to your test file:You should receive the following error message from the default logger due to the error being caught and logged without a stacktrace:
Anything else we need to know?:
This is likely due to the call here passing in a
kubernetes_exec_info
structure containing a ConfigNode instance rather than serializable Python native types:https://github.com/kubernetes-client/python/blob/v32.0.0/kubernetes/base/config/exec_provider.py#L76
I haven't looked extensively into what could have changed between versions, but version 31.0.0 appears to work; FWIW here's the requirements.txt for a more-involved test project where version 31.0.0 appears to function with the test file; swapping kubernetes==32.0.0 in breaks it:
I'm also using pyenv with a virtualenv whereas the
gke-gcloud-auth-plugin
binary likely uses the system python installation; this shouldn't matter as it's invoked in a subprocess, just as relative versus absolute path in the kube config for it likewise doesn't make a difference. You shouldn't need to even install it to reproduce, as it fails prior to the subprocess call AFAICT; that said, I haven't tried it on a totally 100% clean system without it installed.Environment:
kubectl version
):OS:
Mac OSX 12.6.1
Python version (
python --version
)pip list | grep kubernetes
)The text was updated successfully, but these errors were encountered: