GKE集群中用Nginx Ingress的Web应用能否使用appspot.com子域名?
很遗憾,这是不可行的。appspot.com子域名是Google App Engine(GAE)专属的服务特性——Google会为每个GAE应用自动分配一个[your-app-id].appspot.com子域名,这个域名体系和Google Kubernetes Engine(GKE)完全分离,GKE并没有权限或机制来获取appspot.com的子域名分配。
替代方案(无需付费域名)
如果你不想购买付费域名,这里有几个免费的替代方式可以对外暴露你的GKE Web应用:
使用GKE Ingress自动生成的临时域名
当你创建GKE Ingress资源(无论是Nginx Ingress还是GCP原生Ingress)后,Google会自动为你的Ingress分配一个由其管理的临时公网域名(格式类似a1b2c3d4e5f6g7.hxx.europe-west1.lb.goog)。你可以通过kubectl get ingress命令查看这个域名,直接用它来访问你的Web应用。这个域名是免费的,只要你的Ingress资源存在就可以使用。使用免费二级域名服务
比如Cloudflare提供免费的二级域名托管,你可以申请一个your-app.your-custom-name.cloudflare.com这样的域名,然后将其DNS解析指向你的GKE Ingress公网IP,之后在Ingress配置中设置对应的host规则即可。本地测试用hosts映射
如果只是本地开发测试需求,你可以修改本地的hosts文件(Windows是C:\Windows\System32\drivers\etc\hosts,Linux/macOS是/etc/hosts),添加一行[Ingress公网IP] my-app.local,这样在本地就能用my-app.local访问你的应用了——不过这个方式只能在修改了hosts的机器上访问,无法对外公开。
额外建议
如果非常想要类似appspot.com的简洁子域名体验,你可以考虑:
- 将应用迁移到GAE(如果应用架构适配的话);
- 注册一个免费的顶级域名(比如
.tk、.ml这类免费后缀),然后解析到GKE Ingress IP,配置Ingress的host规则。
内容的提问来源于stack exchange,提问作者Adan nua

