将 kubectl exec 的返回值获取到 powershell 脚本中

将 kubectl exec 的返回值获取到 powershell 脚本中

所以我正在开发一个运行纠缠测试的 powershell 脚本。该脚本连接到带有 Mongo 数据库的 Kubernetes Pod。目标是检查数据库中的集合是否为空。我对“返回计数”行之前的代码感到满意。我知道 shell 中没有 return 命令,但我将其放入以进行说明。

我本质上是试图将“count”值从“kubectl exec”获取到powershell代码中。这可能吗?

Context "Foo collection" {
    It "should have no documents"{

        kubectl exec -it $podName -n mongo `
            -- mongosh -u root -p $mongoSecret `
            --eval "`
            db = db.getSiblingDB('thisOne')
            collection = db.getCollection('foo')
            count = collection.countDocuments({}, {limit: 1})

            return count
        "

        $docs = count
        $docs | Should -Be 0
    }
}

答案1

我也在 stackoverflow 上发布了这个,在那里我得到了一个提示,可以找到这里的解决方案:https://stackoverflow.com/questions/73175179/get-return-value-from-kubectl-exec-out-into-powershell-script/73226204#73226204,即:

将返回值存储kubectl在变量中就可以了。eval将脚本中最终命令的返回结果输出到标准输出。然而,--quiet需要该参数来获取没有 mongodb shell 段落“噪音”的返回值。

Context "Foo collection" {
    It "should have no documents"{

        $count = kubectl exec -it $podName -n mongo `
            -- mongosh --quiet -u root -p $mongoSecret `
            --eval "`
            db = db.getSiblingDB('thisOne')
            collection = db.getCollection('foo')
            collection.countDocuments({}, {limit: 1})
            "

        $count | Should -Be 0
    }
}

相关内容