kubectl exec の戻り値を powershell スクリプトにインポートします。

kubectl exec の戻り値を powershell スクリプトにインポートします。

だから私はタングルテストを実行するpowershellスクリプトを開発しています。このスクリプトはMongoデータベースを持つKubernetes Podに接続します。目標は、データベースのコレクションが空であることを確認することです。 「戻り回数」行の前のコードに満足しています。私はシェルにreturnコマンドがないことを知っていますが、説明のために入れました。

私は本質的に "kubectl exec"の "count"値を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スクリプトから最終コマンドの戻り結果を次に出力します。標準出力。ただし、--quietmongodbシェル段落の「ノイズ」なしで戻り値を取得するには、このパラメータが必要です。

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
    }
}

関連情報