我必须检查复制控制器中的应用程序容器是否在某个端口上运行。这是带有我正在使用的go模板字符串的命令。
kubectl get rc my-rc --namespace=nightly --template='{{range .spec.template.spec.containers}}{{if .ports}}{{range .ports}}{{if .containerPort}}{{if eq .containerPort 5445}}{{end}}{{end}}{{end}}{{end}}{{end}}'
我认为它不是字符串比较,因为它是一个端口。偶数字符串比较会抛出错误“错误调用eq:不兼容的类型进行比较'”
我可以获取一个容器端口数组并在外面进行比较,但希望在go模板中完成它。
我是Go lang的新手。感谢使用模板字符串或使用模板文件完成此任何建议..谢谢
答案 0 :(得分:0)
使用printf "%T" .containerPort
检查.containerPort表明它是一个float64。如果你将你的端口与尾随5445.0
进行比较,它应该可以工作。
您还有一些不必要的if语句。
--template='{{range .spec.template.spec.containers}}{{range .ports}}{{if eq .containerPort 5445.0}}True{{end}}{{end}}{{end}}'
您的示例也缺少-o="go-template"
标志,以将输出指定为Go模板。