redhat-developer / vscode-openshift-tools

OpenShift extension for Visual Studio Code
https://marketplace.visualstudio.com/items?itemName=redhat.vscode-openshift-connector
MIT License
93 stars 59 forks source link

Support proxy-url from `~/.kube/config` #2468

Open flybyray opened 2 years ago

flybyray commented 2 years ago

Environment VS Code version: 1.68.1 OS: win32 Extension version: 0.4.0 Description

I have setup proxy-url in ~/.kube/config.

apiVersion: v1
clusters:
- cluster:
    proxy-url: socks5://localhost:1080

Usage description: https://kubernetes.io/docs/tasks/extend-kubernetes/socks5-proxy-access-api/#client-configuration

This works as it should with oc from command line.

~ $ oc version
Client Version: 4.10.0-0.okd-2022-06-10-131327
Server Version: 4.8.17
Kubernetes Version: v1.21.1+6438632

But the extension is not using this property.

dgolovin commented 2 years ago

@flybyray thank you for reporting this. I tested kubectl, oc and odo in exactly the same environment.

oc and odo does not support proxy-url in ~/.kube/config as you mentioned above, but they do support https_proxy env variable. kubectl supports both ways.

Workaround: set https_proxy env manually and then restart vscode.

Fix: set https_proxy env var when running oc or odo if current context has proxy-url property set.

flybyray commented 2 years ago

@dgolovin thx i know such workarround but it is not applicable for all use cases, because in this case even vscode + extensions use it and hence things do not work as expected anymore. with proxy-url the proxy will only be used selective for this specific tool.

dgolovin commented 2 years ago

@flybyray thank you for pointing that out. I'm setting higher priority for this issue.

mohitsuman commented 2 years ago

Fixed by #2502

dgolovin commented 2 years ago

@mohitsuman no it it was related to the issue, but not an actual fix.

dgolovin commented 2 years ago

@flybyray @mohitsuman It cannot be fixed for several reasons. I did my best to workaround what I could, but it didn't work. Here are the problems:

  1. Official @kubernetes/nodejs-client does not aware of proxy-url property for a cluster and when I use it to load configuration the proxy-url property is just ignored and not loaded.
  2. I was developing workaround for it which would just search for this property through the config files, but 'oc' and 'odo' removes it during login command call.

Basically nether official javascript client nor openshift oc/odo cli are supporting this use case.

flybyray commented 2 years ago

oc supports it see the description. I tested it.

Hence i understand that this extension will not support it if it is not base on oc.

dgolovin commented 2 years ago

@flybyray let me check latest oc version to confirm.

dgolovin commented 2 years ago

@flybyray this issue #1925534 describes what I see locally.

dgolovin commented 2 years ago

@flybyray probably I can workaround oc login issue, by getting proxy-url before 'oc login' then adding it back. But any 'oc login' calls outside of vscode will remove proxy-url anyway.

flybyray commented 2 years ago

@flybyray this issue #1925534 describes what I see locally.

ok now i understand. than it is only possible to have oc invocation modification to add https_proxy environmentvariable to the process all the time. :-( maybe some path to a wrapper oc

dgolovin commented 2 years ago

Related issue in @kubernetes/nodejs-client package https://github.com/kubernetes-client/javascript/issues/853.