调用“argocd登录”失败,并显示“本地配置:当前上下文未设置”

x7rlezfr  于 2023-02-06  发布在  Go
关注(0)|答案(1)|浏览(162)

我们的客户之一是遇到一个奇怪的错误时运行我们的cli二进制.我缩小了这错误到一个调用我们是为argocd login,这为一些原因失败与

Local config: current-context unset

通过深入挖掘argo-cd源代码,我 * 怀疑 * 这一切都可以归结为使用""调用os.ReadFile,而""在他们的计算机上 * 不 * 返回ENOENT。

package main

import (
    "fmt"
    "os"
)

func main() {
    _, err := os.ReadFile("")
    if err != nil {
        fmt.Printf("err: %v\n", err)
        if os.IsNotExist(err) {
            fmt.Println("err is NotExist")
        } else {
            fmt.Println("err is *not* NotExist")
        }
    } else {
        fmt.Println("no error at all")
    }
}

在我测试的每个Linux发行版上,我都得到了err is NotExist。但我怀疑这个问题可能是由客户运行的特定env引起的。目前我所知道的是,他们将shell转换为EC2,然后转换为一些内部的docker容器,并以root用户身份运行命令。
这里有没有人有任何提示,我可以寻找什么,什么可能导致这个调用 * 不 * 返回ENOENT?

kgsdhlau

kgsdhlau1#

os.ReadFile将文件名直接传递给open(2)系统调用。如果os.ReadFile("")不返回ENOENT,则意味着:

  • 内核中的非标准文件系统实现(例如,通过Fuse自定义的内容),或
  • 强制从内核获得不同结果的系统调用挂接(例如EBPF)

相关问题