我在Kubernetes中有一个简单的Bash脚本运行命令,但是我需要在一个命令中自动完成才能继续:
#!/bin/bash
DATE=$(date +%Y-%m-%d_%H:%M:%S)
printf "Available Kubectl contexts:\n\n"
kubectl config get-contexts -o=name | sort -n
printf "%s\n"
echo -ne "Select Kubectl context: "; read KUBE_CONTEXT
for I in $KUBE_CONTEXT ; do
kubectl config use-context $KUBE_CONTEXT
done
echo -ne "Path to file containing Job ID list: "; read -e JOB_ID_LIST
printf "%s\n"
echo "Setting port forwarding to Prometheus POD in $KUBE_CONTEXT" ;
这是我需要自动补全的地方,因为每个kubectl环境中的pod名称都不同。
kubectl port-forward -n prometheus prometheus-prometheus-RANDOM_TEXT-RANDOM_TEXT 20001:9090
例如:
kubectl port-forward -n prometheus prometheus-prometheus-6465c4df4c-4dvf7 8080:9090 &
当我手动输入自动完成功能时,它可以工作,但是我希望Bash在脚本中自动完成它。有可能吗?
答案 0 :(得分:0)
在脚本中使用外壳程序的交互式功能应该是您的最后选择。
我们可以做到: 首先让我们获取名称空间中的所有pod名称;然后过滤所需的广告连播名称。
podName=$(kubectl get pods -n prometheus -o name | grep "^pod/prometheus-prometheus-" | cut -d/ -f2)