繁体   English   中英

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 文件,手动安装它会导致很多问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM