wtf
wtf copied to clipboard
Feat Request: Use current-context in Kubernetes module when default context doesn't exist.
What should it do?
In the Kubernetes module, if a context isn't specified, the behavior is to revert to the default context. If this doesn't exist, the application panics, and returns an invalid memory address.
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x1e0 pc=0x4fd5d7c]
goroutine 38 [running]:
k8s.io/client-go/tools/clientcmd.(*DeferredLoadingClientConfig).createClientConfig(0xc000432050)
k8s.io/[email protected]+incompatible/tools/clientcmd/merged_client_builder.go:77 +0x2bc
k8s.io/client-go/tools/clientcmd.(*DeferredLoadingClientConfig).ClientConfig(0xc000432050)
k8s.io/[email protected]+incompatible/tools/clientcmd/merged_client_builder.go:98 +0x25
github.com/wtfutil/wtf/modules/kubernetes.(*Widget).getKubeClient(0xc0000da640)
github.com/wtfutil/wtf/modules/kubernetes/client.go:37 +0x16a
github.com/wtfutil/wtf/modules/kubernetes.(*Widget).getInstance.func1()
github.com/wtfutil/wtf/modules/kubernetes/client.go:20 +0x65
sync.(*Once).doSlow(0x57597d6, 0x53db640)
sync/once.go:68 +0xd2
sync.(*Once).Do(...)
sync/once.go:59
github.com/wtfutil/wtf/modules/kubernetes.(*Widget).getInstance(0xc0000da640)
github.com/wtfutil/wtf/modules/kubernetes/client.go:18 +0x65
github.com/wtfutil/wtf/modules/kubernetes.(*Widget).Refresh(0xc0000da640) github.com/wtfutil/wtf/modules/kubernetes/widget.go:50 +0x4a github.com/wtfutil/wtf/app.Schedule({0x5e2d7f8, 0xc0000da640})
github.com/wtfutil/wtf/app/scheduler.go:12 +0x31
created by github.com/wtfutil/wtf/app.(*WtfApp).scheduleWidgets
github.com/wtfutil/wtf/app/wtf_app.go:167 +0xb0
A current-context exists, but I do not use a default context. I programatically generate my kubeconfigs with the aws CLI, and then remove the kubeconfig after the cluster is removed. When aws CLI regenerates the config, it isn't expected to create a default context based on the parameters sent to the aws cli.
To reproduce:
- Have no kubeconfig file exist where the module config is expecting.
- Create/update a kubeconfig without a default context:
aws eks update-kubeconfig --region us-west-2 --name my-eks-cluster --alias my-alias
- Confirm kubectl works:
❯ ~ kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system aws-node-hwc8r 1/1 Running 0 48m
kube-system aws-node-jb4gd 1/1 Running 0 49m
kube-system aws-node-jhhvj 1/1 Running 0 48m
kube-system coredns-657694c6f4-4w6gx 1/1 Running 0 56m
kube-system coredns-657694c6f4-lndn5 1/1 Running 0 56m
kube-system kube-proxy-2qdwc 1/1 Running 0 50m
kube-system kube-proxy-82w46 1/1 Running 0 50m
kube-system kube-proxy-vvnh4 1/1 Running 0 50m
- launch wtfutil, and witness similar error as above.
It seems reasonable (to me 😄 ) that a current-context can exist when a default doesn't, as this setup isn't necessarily breaking the kubeconfig. wtfutil seems to be state-dependent on the kubeconfig, adding support for the current would/could mitigate this somewhat.
Thank you!
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
@senorprogrammer Any chance the wontfix label could be removed?
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.