我正在尝试在 Kubernetes Pod 容器上执行远程命令。我在本地 go-client 和 Kube api-server 中有一个代理。此代理需要在 HTTP 请求标头中提供一个令牌以进行身份验证。但不知何故,这个令牌并没有从客户端传播到代理。因此,请求会收到 403 禁止错误。以下是代码:-
restconfig := &rest.Config{
Host: <PROXY-URL>,
BearerToken: <TOKEN>,
}
coreclient, err := corev1client.NewForConfig(restconfig)
if err != nil {
fmt.Println(err)
return
}
req := coreclient.RESTClient().
Post().
Namespace("default").
Resource("pods").
Name("nginx").
SubResource("exec").
VersionedParams(&corev1.PodExecOptions{
Command: []string{"/bin/sh"},
Stdin: true,
Stdout: true,
Stderr: true,
TTY: true,
}, scheme.ParameterCodec)
exec, err := remotecommand.NewSPDYExecutor(restconfig, "POST", req.URL())
if err != nil {
fmt.Println(err)
return
}
err = exec.Stream(remotecommand.StreamOptions{
Stdin: os.Stdin,
Stdout: os.Stdout,
Stderr: os.Stderr,
Tty: true,
})
if err != nil {
fmt.Println("error streaming connection", err)
return
}
开/关:
error streaming connection
有人可以告诉我如何向连接添加令牌吗?
PS:另外,将令牌添加到req
req.SetHeader("Authorization", "Bearer "+<TOKEN>)
返回相同的错误