@@ -83,6 +83,19 @@ if ! gcloud container clusters get-credentials "${CLUSTER_NAME}"; then
8383fi
8484kubectl create ns venafi || true
8585
86+ kubectl apply -n venafi -f - << EOF
87+ apiVersion: v1
88+ kind: PersistentVolumeClaim
89+ metadata:
90+ name: coverage-pvc
91+ spec:
92+ accessModes:
93+ - ReadWriteOnce
94+ resources:
95+ requests:
96+ storage: 1Gi
97+ EOF
98+
8699# Pull secret for Venafi OCI registry
87100# IMPORTANT: we pick the first team as the owning team for the registry and
88101# workload identity service account as it doesn't matter.
@@ -123,10 +136,13 @@ venctl components kubernetes apply \
123136 --venafi-kubernetes-agent \
124137 --venafi-kubernetes-agent-version " ${RELEASE_HELM_CHART_VERSION} " \
125138 --venafi-kubernetes-agent-values-files " ${script_dir} /values.venafi-kubernetes-agent.yaml" \
139+ --venafi-kubernetes-agent-values-files " ${script_dir} /values.coverage-pvc.yaml" \
126140 --venafi-kubernetes-agent-custom-image-registry " ${OCI_BASE} /images" \
127141 --venafi-kubernetes-agent-custom-chart-repository " oci://${OCI_BASE} /charts"
128142
129143kubectl apply -n venafi -f venafi-components.yaml
144+ kubectl set env deployments/venafi-kubernetes-agent -n venafi GOCOVERDIR=/coverage
145+ kubectl rollout status deployment/venafi-kubernetes-agent -n venafi --timeout=2m
130146
131147subject=" system:serviceaccount:venafi:venafi-components"
132148audience=" https://${VEN_API_HOST} "
@@ -233,3 +249,47 @@ getCertificate() {
233249
234250# Wait 5 minutes for the certificate to appear.
235251for (( i= 0 ;;i++ )) ; do if getCertificate; then exit 0; fi ; sleep 30; done | timeout -v -- 5m cat
252+
253+ echo " Identifying the agent pod to terminate..."
254+ export AGENT_POD_NAME=$( kubectl get pods -n venafi -l app.kubernetes.io/name=venafi-kubernetes-agent -o jsonpath=" {.items[0].metadata.name}" )
255+
256+ echo " Gracefully deleting agent pod '${AGENT_POD_NAME} ' to flush coverage to the PVC..."
257+ kubectl delete pod -n venafi " ${AGENT_POD_NAME} " --grace-period=30
258+ echo " Waiting for agent pod to terminate..."
259+ kubectl wait --for=delete pod/${AGENT_POD_NAME} -n venafi --timeout=90s
260+
261+ kubectl apply -n venafi -f - << EOF
262+ apiVersion: v1
263+ kind: Pod
264+ metadata:
265+ name: coverage-helper-pod
266+ spec:
267+ containers:
268+ - name: helper
269+ image: alpine:latest
270+ command: ["sleep", "infinity"]
271+ volumeMounts:
272+ - name: coverage-storage
273+ mountPath: /coverage-data
274+ volumes:
275+ - name: coverage-storage
276+ persistentVolumeClaim:
277+ claimName: coverage-pvc
278+ EOF
279+
280+ echo " Waiting for the helper pod to be ready..."
281+ kubectl wait --for=condition=Ready pod/coverage-helper-pod -n venafi --timeout=2m
282+
283+ echo " Copying coverage files from the helper pod..."
284+ mkdir -p $COVERAGE_HOST_PATH
285+ # We copy from the helper pod's mount path.
286+ kubectl cp -n venafi " coverage-helper-pod:/coverage-data/." $COVERAGE_HOST_PATH
287+
288+ echo " Coverage files retrieved. Listing contents:"
289+ ls -la $COVERAGE_HOST_PATH
290+
291+ # --- MANDATORY CLEANUP ---
292+ # echo "Cleaning up helper pod and PersistentVolumeClaim..."
293+ # kubectl delete pod coverage-helper-pod -n venafi
294+ # kubectl delete pvc coverage-pvc -n venafi
295+ # echo "Cleanup complete."
0 commit comments