Azure AKS Traefik TLS 证书

时间:2021-07-12 16:12:09

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

我正在尝试在运行 K8s 的情况下获取 TLS。

我创建了一个简单的 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 页面”

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

谢谢!

1 个答案:

答案 0 :(得分:0)

检查 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、Middlewares 等)。您现在的问题可以相对轻松地解决,而无需去那里。尽管您应该考虑研究这一点,因为它们在处理其他基本配置(标头注入、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