未反映 Google Cloud Kubernetes Ingress 静态 IP 地址且与设置不同

Rav*_*ven 0 docker google-cloud-platform kubernetes google-kubernetes-engine devops

我正在尝试在 Google Cloud 上使用 GKE 部署一个完整的 Web 应用程序(后端为 nodejs,前端为 angular)。然后为它启用 SSL。

我创建了一个全局 IP 地址(后来在列表中看到了它): gcloud compute addresses create mathbux-static-ip --global

之后,我部署了后端和前端——容器和 yaml 文件。

在 Google Cloud 中的样子

这里的问题是入口控制器上反映的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
Run Code Online (Sandbox Code Playgroud)

这是我的 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: /
Run Code Online (Sandbox Code Playgroud)

这是我在 Google 文档中托管的证书文件的片段:

apiVersion: networking.gke.io/v1beta2
kind: ManagedCertificate
metadata:
  name: mathbux-ssl
spec:
  domains:
    - mathbux.com
    - www.mathbux.com
Run Code Online (Sandbox Code Playgroud)

当我转到生成的 IP 地址时,整个应用程序运行良好,并且仅按预期运行:

1.) IP 地址不是我在 ingress.yaml 上创建和设置的特定静态全局 IP 地址

2.) 相应地,SSL 也失败了。(请注意,我已经将我的域名指向了我手动创建的静态 IP 地址)

tal*_*dor 6

您正在使用的注释 - kubernetes.io/ingress.global-static-ip-name- 可用于默认 GKE 入口,它本质上是一个谷歌负载均衡器 - 请参阅此处的文档 - https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer

但是,您所做的是部署了 ingress-nginx(这是一个不同的入口提供程序)并将您的入口资源分配给它, kubernetes.io/ingress.class: nginx这基本上使您的静态 ip 注释毫无意义。

因此,您需要决定要使用哪个入口。如果您想使用 GKE 的负载均衡器,请删除入口 nginx 并按照我上面链接的默认 GKE 入口文档进行操作。

如果你想使用 ingress nginx,你可以在这里找到它的文档,包括 ssl 配置 - https://kubernetes.github.io/ingress-nginx/