首页 > 解决方案 > 在 AWS Kubernetes 上为 traefik 控制器设置 SSL 证书问题

问题描述

我正在 kubernetes 上部署一个 Web 应用程序(一组相互通信的节点服务器)。我使用 Traefik 控制器,作为负载平衡器以及集群中的内部通信。我通过 AWS 购买了域名,并通过路由 53 通过简单的负载均衡器进行了设置。它对 http:// domain-name.com 非常有效。我正在尝试设置 SSL 证书(从外部供应商处购买,非 AWS),以使网站成为 https。但它不起作用。我总是最终得到连接超时。但是http方式工作得很好。

  1. 我从我公司的 IT 部门获得了 SSL 证书,其中包含 csr、密钥、临时文件。为此,在 AWS 证书管理器中创建了一个新配置。
  2. Traefik 入口控制器现在配置为启用 SSL,强制执行 SSL,以及证书正文和密钥集。我正在使用 traefik helm 图表,我将它们保存在 values.yaml 中。
  3. 安装 traefik 控制器后生成的负载均衡器链接使用在步骤 (1) 中创建的 AWS 证书管理器配置进行配置。在负载均衡器设置中,在 AWS 控制台中,打开 https 端口。
  4. 此外,我在入口设置期间配置了一个包含 ssl 证书的秘密对象。

对于初学者,这是示例应用程序,我正在尝试通过 traefik 控制器通过 https 访问。

apiVersion: v1
kind: Service
metadata:
  name: hello-kubernetes
spec:
  type: LoadBalancer
  ports:
  - port: 80
    targetPort: 8080
  selector:
    app: hello-kubernetes
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-kubernetes
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hello-kubernetes
  template:
    metadata:
      labels:
        app: hello-kubernetes
    spec:
      containers:
      - name: hello-kubernetes
        image: gcr.io/hello-minikube-zero-install/hello-node
        ports:
        - containerPort: 8080
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: hello-world-ingress
  namespace: default
  annotations:
    kubernetes.io/ingress.class: traefik
    traefik.frontend.rule.type: PathPrefixStrip
spec:
  rules:
  - http:
      paths:
      - path: / 
        backend:
          serviceName: hello-kubernetes
          servicePort: 80
  tls:
   - secretName: traefik-ui-tls-cert 

就 traefik 控制器的 helm chart 而言,

ssl:
  enabled: true
  enforced: false
  permanentRedirect: false
  upstream: false
  insecureSkipVerify: false
  generateTLS: false
  defaultSANList: []
  defaultIPList: []
  defaultCert: <crt from IT> (which I converted from csr file that IT gave me using openssh tool) 
  defaultKey: <key from IT> 

在 aws 控制台中,对于负载均衡器,在侦听器选项卡下,我添加了以下配置。

HTTPS-443-HTTP-80-e1e4096b-6a31-4b2d-9d33-9f3f94ab0320 (ACM) Change

我应该可以在 https 上访问我的网站。但是我只能在http上访问它。有什么建议么?

标签: sslhttpskubernetestraefikaws-load-balancer

解决方案


推荐阅读