即使问题已经得到解答,我还是想提供一个使用 Go 模板的示例:
kubectl get deployment $GKE_DEPLOYMENT_NAME \
--namespace=$GKE_DEPLOYMENT_NAMESPACE \
--output=go-template \
--template='{{range .spec.template.spec.containers}}{{.image}}{{"\n"}}{{end}}'
#=>
us.gcr.io/. . ./. . .:xxxxxxx
注意:如果您deployment
包含多个容器,此命令将列出所有Docker 镜像;因为containers
是 JSON 数组或 YAML 序列,所以没有保证顺序。即按元素索引选择不能保证返回预期的 Docker Image Repo。和标签。
注意:如果您使用此命令来确定git
commit
当前部署的内容,通过 Docker Tags 或 Docker Labels,您将需要引入字符串操作。
label
您可能希望deployment
改为:
kubectl label \
--overwrite=true \
deployment $GKE_DEPLOYMENT_NAME \
commit=$(git rev-parse --short HEAD) \
--namespace=$GKE_DEPLOYMENT_NAMESPACE \
--record=true
#=>
deployment.apps/$GKE_DEPLOYMENT_NAME labeled
并访问 this label
,无论有多个 Docker 映像,也无需字符串操作,使用:
kubectl get deployment $GKE_DEPLOYMENT_NAME \
--namespace=$GKE_DEPLOYMENT_NAMESPACE \
--output=go-template \
--template='{{index .metadata.labels "commit"}}{{"\n"}}'
#=>
xxxxxxx