我正在尝试在 Google Cloud 上使用 GKE 部署完整的 Web 应用程序(后端为 Nodejs,前端为 Angular)。然后为其启用 SSL。
我创建了一个全局 IP 地址(随后在列表中看到了它):
gcloud 计算地址创建 mathbux-static-ip --global
之后,我部署了后端和前端 - 容器和 yaml 文件。
这里的问题是入口控制器上反映的IP地址来自任何地方,并且与我设置的不同(我上面刚刚创建的静态IP地址)。
我遵循了如何在 GKE 上安装 Nginx-ingress 设置的指南:https://kubernetes.github.io/ingress-nginx/deploy/#gce-gke
kubectl create clusterrolebinding cluster-admin-binding \
--clusterrole cluster-admin \
--user $(gcloud config get-value account)
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.34.1/deploy/static/provider/cloud/deploy.yaml
这里有一个snippet我的 ingress.yaml 的一部分:
.... truncated . . .
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: mathbux-ingress-frontend
namespace: default
annotations:
kubernetes.io/ingress.class: nginx
kubernetes.io/ingress.global-static-ip-name: "mathbux-static-ip"
networking.gke.io/managed-certificates: mathbux-ssl
nginx.ingress.kubernetes.io/rewrite-target: /
这是我的托管证书文件的片段,如 Google 文档中所示:
apiVersion: networking.gke.io/v1beta2
kind: ManagedCertificate
metadata:
name: mathbux-ssl
spec:
domains:
- mathbux.com
- www.mathbux.com
当我访问生成的 IP 地址时,整个应用程序完美运行,并且仅按预期运行:
1.) IP 地址不是我创建并假定在 ingress.yaml 上设置的特定静态全局 IP 地址
2.) 相应地,SSL 也会失败。 (请注意,我已经将我的域名指向我手动创建的静态 IP 地址)