0

我正在尝试在 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>)

返回相同的错误

4

0 回答 0