2023-09-01 12:53:58 +02:00

37 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
deploymentName="server"
debugPort="9229"
echo "Storing the original deployment configuration in a file"
kubectl get deployment $deploymentName -o json > original_deployment_$deploymentName.json
function restore {
echo "Restoring the original deployment configuration and stop port forwarding"
kubectl replace --force -f original_deployment_$deploymentName.json
rm original_deployment_$deploymentName.json
}
trap restore EXIT
echo "Add the inspect flag and debug port to the configuration"
jq '.spec.template.spec.containers[0].command = ["/usr/bin/node", "--inspect=0.0.0.0:9229", "./dist/main.js"]' original_deployment_$deploymentName.json > new_deployment_$deploymentName.json
echo "Apply the new configuration"
kubectl apply -f new_deployment_$deploymentName.json
rm new_deployment_$deploymentName.json
echo "Scale down to one pod"
kubectl scale deployment $deploymentName --replicas=1
echo "Wait for the pod to be ready"
kubectl wait --for=condition=ready pod -l component=$deploymentName
while [[ $(kubectl get pods -l component=$deploymentName -o 'jsonpath={..status.phase}' | grep -o 'Running' | wc -w) -ne 1 ]]; do
echo "Waiting for scale down operation to complete..."
sleep 1
done
podName=$(kubectl get pods -l component=$deploymentName -o=jsonpath='{.items[0].metadata.name}')
echo "Forward $podName port $debugPort to localhost. Waiting for a debugger to attach ..."
kubectl port-forward pod/"$podName" $debugPort