【问题标题】:Azure AKS Traefik TLS CertificateAzure AKS Traefik TLS 证书
【发布时间】:2021-09-21 19:29:50
【问题描述】:

我正在尝试让 TLS 与 K8s 一起运行。

我创建了一个简单的 Azure AKS 服务并通过 HELM 部署了 Traefik(helm install tr​​aefik traefik/traefik)

在这一步之后,我部署了一个简单的 WHOAMI 容器,以及它的服务和入口

---
kind: Deployment
apiVersion: apps/v1
metadata:
  namespace: default
  name: whoami
  labels: 
    app: whoami
spec:
  replicas: 1
  selector:
    matchLabels:
      app: whoami
  template:
    metadata:
      labels:
        app: whoami
    spec:
      containers:
      - name: whoami-container
        image: containous/whoami
        ports: 
          - name: web
            containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
  name: whoami-srv

spec:
  type: ClusterIP
  ports:
  - port: 80
    name: websecure
  selector:
    app: whoami
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: whoami-ingress
spec:
  tls:
    - hosts:
        - test.mydomain.de
      secretName: wildcardcert
  rules:
  - host: test.mydomain.de
    http:
      paths:
      - path: /
        pathType: ImplementationSpecific
        backend:
          service:
            name: whoami-srv
            port:
              number: 80

我可以通过打开 Http://test.mydomain.de 来访问 WHOAMI。如果我打开 HTTPS://test.mydomain.de 我可以看到正确的证书,但我仍然得到“404 页面未找到”

您的网站有什么提示吗?我来回尝试了几次:)

谢谢!

【问题讨论】:

  • 当您点击服务并获得 404 时,traefik 日志中有任何内容吗?
  • kubectl logs traefik-5db6d78d4-z26s2 -n kube-system --since-time 2021-07-12T17:08:46Z 访问https后没有日志
  • 你能分享值文件吗,你安装过 Traefik,如果有的话?请注意,对于大多数 Ingress 控制器,您的 Ingress spec.tls 是您通常会做的,但对于 Traefik,您将改为设置注释,请参阅 doc.traefik.io/traefik/routing/providers/kubernetes-ingress/…。或者您可以强制将所有 http 重定向到您的 https 端点,并且永远不要设置这些注释。

标签: ssl kubernetes tls1.2 azure-aks traefik


【解决方案1】:

检查 Traefik 文档 [1]、[2]

在 Ingress 中设置 spec.tls 不足以让 Traefik 在 https 中为您的应用程序提供服务。需要添加注解:

annotations:
  traefik.ingress.kubernetes.io/router.tls: true

或者,如果您打算将所有 http 重写为 https,假设 Traefik Helm Chart,您可以设置 ports['web'].redirectTo: websecure

Traefik 与其他 Ingress Controller 完全不同,因为它带有自己的自定义资源定义(IngressRoute、TLSOptions、TLSStores、中间件……)。您现在的问题可以相对容易地处理而无需去那里。尽管您应该考虑研究一下,因为它们可能对处理其他基本配置(标头注入、url 重写等)很有帮助

[1]https://doc.traefik.io/traefik/routing/providers/kubernetes-ingress/#enabling-tls-via-annotations

[2]https://doc.traefik.io/traefik/routing/providers/kubernetes-ingress/#certificates-management

【讨论】:

  • 感谢您的回复。我的理解就我不使用“traefik.containo.us/v1alpha1”而言,我不需要使用注释。我想通过 http 和 https 访问来启用应用程序。 Http 运行良好,https --> 404,但我可以在 Google/Safari 浏览器中看到证书,这是有效的。
  • 我所说的注释适用于 Ingress,如networking.k8s.io/v1 / v1beta1。如果你不设置它,那么 Traefik 认为你不想使用 TLS 暴露你的 Ingress。
  • annotations: traefik.ingress.kubernetes.io/router.entrypoints: web, websecure 我加了这个注解,还是不行。
  • `traefik.ingress.kubernetes.io/router.tls: true` 一个。该文档对此非常明确,非常值得一读。
猜你喜欢
  • 2021-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-01
  • 1970-01-01
  • 2021-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多