我怀疑 Ingress 也制作了 LoadBalancer,但我不能
根据第一个链接弄清楚如何修改它。
你是对的。当您创建 ingress 对象时,会在后台自动创建 负载均衡器。甚至提到了here:
如果您选择使用
Ingress,
它会创建一个 HTTP(S) 负载均衡器,您必须reserve a global
static IP
address。
您甚至可以通过转到Navigation menu -> Networking -> Network services -> Load balancing 在您的 Google Cloud Console 中列出它。
编辑它最简单的方法是点击它旁边的 3 个点,然后点击 Edit:
但您需要修改 Ingress 资源,而不是手动编辑它。
假设您已按照here 列出的步骤进行操作,并且一切都按预期工作,但只能通过 http,这也是预期的,因为您尚未配置 SSL 证书到目前为止,您的入口和它在后台使用的 负载均衡器 也被配置为仅与 http 一起使用。
如果您关注the guide you mentioned并且已经配置了Google管理的SSL证书,您只需要更新您的ingress资源配置,将networking.gke.io/managed-certificates: certificate-name注解添加为@ ldg 在他的回答中建议。
如果您没有配置 SSL 证书,您可以通过应用以下 yaml 清单从 kubernetes 级别进行配置,如 here 所述:
apiVersion: networking.gke.io/v1beta2
kind: ManagedCertificate
metadata:
name: example-cert
spec:
domains:
- example.com
将其保存为文件example-cert.yaml,然后运行:
kubectl apply -f example-cert.yaml
创建后,您可以从与之前相同的 yaml 清单重新应用您的 ingress 配置,并添加提到的注释。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: helloweb
annotations:
kubernetes.io/ingress.global-static-ip-name: helloweb-ip
networking.gke.io/managed-certificates: example-cert ### ?
labels:
app: hello
spec:
backend:
serviceName: helloweb-backend
servicePort: 8080
如果出于某种原因,您希望根据运行配置获取已部署的 ingress,则可以运行:
kubectl get ingress helloweb -o yaml > ingress.yaml
然后您可以编辑ingress.yaml 文件并重新应用它。
添加注释后,再次在 Google Cloud Console 中转到 Navigation menu -> Networking -> Network services -> Load balancing,您会注意到 负载均衡器的>协议已从HTTP更改为HTTP(S),如果证书有效,您应该可以使用您的自定义域访问您的网站通过 HTTPS。