Kubernetes 负载均衡器终止 SSL 以反向代理入口 DigitalOcean



我围绕本教程构建了原始基础结构。 https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nginx-ingress-with-cert-manager-on-digitalocean-kubernetes。

现在,我正在尝试迁移到管理自己的证书并在负载均衡器上终止 SSL。

通过我的 YAML 更新,DigitalOcean 中的负载均衡器显示所有节点都不健康,我的 URL 响应为"503 服务不可用" 没有服务器可用于处理此请求。但是,终结点显示安全的 HTTPS 连接。 我做错了什么?

我在下面新的非功能性 YAML 定义。

负载均衡器

apiVersion: v1
kind: Service
metadata:
name: ingress-nginx
namespace: ingress-nginx
annotations:
service.beta.kubernetes.io/do-loadbalancer-redirect-http-to-https: "true"
service.beta.kubernetes.io/do-loadbalancer-enable-proxy-protocol: "true"
service.beta.kubernetes.io/do-loadbalancer-certificate-id: "**************"
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
spec:
type: LoadBalancer
selector:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
ports:
- name: http
port: 80
targetPort: http
- name: https
port: 443
targetPort: http

入口

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/proxy-body-size: "50m"
spec:
tls:
- hosts:
- ******.com
- api.*******.com
rules:
- host: **********.com
http:
paths:
- backend:
serviceName: frontend-angular
servicePort: 80
- host: api.********.com
http:
paths:
- backend:
serviceName: backend-server
servicePort: 80

我联系了DigitalOcean的支持(这令人难以置信(。我的问题是我没有创建入口nginxpod。这是我错过的教程中列出的两个步骤。

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.26.1/deploy/static/mandatory.yaml

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.26.1/deploy/static/provider/cloud-generic.yaml.

我的实际 YAML 定义是正确的。

最好的方法是使用Digital Ocean Marketplace(https://marketplace.digitalocean.com/apps/nginx-ingress-controller(。

手动安装它会导致很多问题,因为过时的yml文件。

最新更新