如何更新Google Kubernetes Engine中Guestbook应用的前端页面?
解决Guestbook前端页面更新不生效的问题
你之前执行的kubectl apply -f frontend-service.yaml只负责更新Service资源(流量转发规则),完全碰不到Pod里的页面内容,所以修改不会生效。下面分两种常见场景给出解决方案:
场景1:前端页面打包在容器镜像里(官方教程默认方式)
官方教程的前端页面是打包在镜像中部署的,修改index.html后需要重新构建镜像并更新Deployment:
构建新镜像:将修改后的index.html放到前端代码目录(与Dockerfile同路径),执行
docker build -t [你的容器仓库地址]/gb-frontend:v6 .替换
[你的容器仓库地址]为GCR或Artifact Registry的地址,版本号v6可自定义(只要比原版本号新即可)推送镜像到容器仓库:
docker push [你的容器仓库地址]/gb-frontend:v6更新前端Deployment(三种方式选其一):
- 直接指定新镜像版本:
kubectl set image deployment/frontend frontend=[你的容器仓库地址]/gb-frontend:v6 - 修改
frontend-deployment.yaml中的image字段为新镜像地址,再执行:kubectl apply -f frontend-deployment.yaml - 在线编辑Deployment配置:
找到kubectl edit deployment/frontendspec.template.spec.containers[0].image字段替换为新镜像,保存退出即可
- 直接指定新镜像版本:
场景2:前端页面通过ConfigMap挂载(自定义部署方式)
如果是将index.html存入ConfigMap后挂载到Pod中的,按以下步骤更新:
更新ConfigMap内容:
kubectl create configmap frontend-html --from-file=index.html --dry-run=client -o yaml | kubectl apply -f -这条命令会用新的index.html覆盖原有ConfigMap的内容
重启前端Pod让新配置生效:
kubectl rollout restart deployment/frontend
内容的提问来源于stack exchange,提问作者Chris_197
相关产品推荐
相关产品推荐

