Kubernetes 负载均衡器终止 SSL 以反向代理入口 DigitalOcean
Kubernetes Load Balancer Terminating SSL to Reverse Proxy Ingress 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 支持(这太棒了)。我的问题是我没有创建 ingress-nginx pod。这是我错过的教程中列出的两个步骤。
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 文件过时,手动安装会导致很多问题。
我最初的基础架构是围绕本教程构建的。 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 支持(这太棒了)。我的问题是我没有创建 ingress-nginx pod。这是我错过的教程中列出的两个步骤。
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 文件过时,手动安装会导致很多问题。