@@ -73,6 +73,15 @@ run_chainsaw() {
7373 --no-color
7474}
7575
76+ flattened_kubeconfig=" "
77+
78+ cleanup () {
79+ if [ -n " ${flattened_kubeconfig} " ]; then
80+ rm -f " ${flattened_kubeconfig} "
81+ fi
82+ }
83+ trap cleanup EXIT
84+
7685if command -v chainsaw > /dev/null 2>&1 ; then
7786 log_info " Running NetworkPolicy smoke test with local chainsaw"
7887 run_chainsaw " ${CHAINSAW_TEST_DIR} " " ${CHAINSAW_REPORT_PATH} "
@@ -85,19 +94,17 @@ if ! command -v docker >/dev/null 2>&1; then
8594 exit 1
8695fi
8796
88- kubeconfig =" ${KUBECONFIG :- ${HOME} / .kube / config} "
89- if [[ " ${kubeconfig} " == * : * ]] ; then
90- log_warn " KUBECONFIG contains multiple paths; using the first path for Docker-mounted Chainsaw"
91- kubeconfig= " ${kubeconfig %%:* } "
97+ flattened_kubeconfig =" $( mktemp ) "
98+ if ! kubectl config view --flatten --raw > " ${flattened_kubeconfig} " ; then
99+ log_error " Failed to create flattened kubeconfig for Docker-mounted Chainsaw"
100+ exit 1
92101fi
93102
94- if [ ! -f " ${kubeconfig } " ]; then
95- log_error " Kubeconfig not found for Docker-mounted Chainsaw: ${kubeconfig} "
103+ if [ ! -s " ${flattened_kubeconfig } " ]; then
104+ log_error " Flattened kubeconfig is empty for Docker-mounted Chainsaw"
96105 exit 1
97106fi
98107
99- kubeconfig=" $( cd " $( dirname " ${kubeconfig} " ) " && pwd -P) /$( basename " ${kubeconfig} " ) "
100-
101108case " ${CHAINSAW_TEST_DIR} " in
102109 " ${REPO_ROOT} " /* )
103110 chainsaw_test_dir_container=" /repo/${CHAINSAW_TEST_DIR# " ${REPO_ROOT} /" } "
@@ -114,7 +121,7 @@ docker run --rm \
114121 --network=" ${CHAINSAW_DOCKER_NETWORK:- host} " \
115122 -v " ${REPO_ROOT} :/repo:ro" \
116123 -v " ${CHAINSAW_REPORT_PATH} :/chainsaw-report" \
117- -v " ${kubeconfig } :/kubeconfig:ro" \
124+ -v " ${flattened_kubeconfig } :/kubeconfig:ro" \
118125 -e KUBECONFIG=/kubeconfig \
119126 " ${CHAINSAW_IMAGE} " test " ${chainsaw_test_dir_container} " \
120127 --namespace " ${NAMESPACE} " \
0 commit comments