kubernetes - Traefik Ingress (Kubernetes) 没有收到 letsencrypt 证书

标签 kubernetes traefik traefik-ingress

我已经使用 let'sencrypt ACME 配置了 Traefik(helm chart),但我没有收到任何证书。 Traefik Ingress 在端口 80 和 443 上暴露给互联网。

traefik.toml

logLevel = "INFO"
InsecureSkipVerify = true
defaultEntryPoints = ["http","https"]
[entryPoints]
  [entryPoints.http]
  address = ":80"
  compress = true
  [entryPoints.https]
  address = ":443"
  compress = true
    [entryPoints.https.tls]
      [[entryPoints.https.tls.certificates]]
      CertFile = "/ssl/tls.crt"
      KeyFile = "/ssl/tls.key"
[kubernetes]
[acme]
email = "email@email.com"
storage = "/acme/acme.json"
entryPoint = "https"
onHostRule = true
caServer = "https://acme-staging-v02.api.letsencrypt.org/directory"
acmeLogging = true
  [acme.httpChallenge]
  entryPoint = "http"
[web]
address = ":8080"

Ingress 使用 Traefik 作为 IngressClass

{
  "kind": "Ingress",
  "apiVersion": "extensions/v1beta1",
  "metadata": {
    "name": "domain",
    "namespace": "reverse-proxy",
    "selfLink": "/apis/extensions/v1beta1/namespaces/reverse-proxy/ingresses/domain",
    "uid": "550cdedc-ba77-11e8-8657-00155d00021a",
    "resourceVersion": "6393921",
    "generation": 5,
    "creationTimestamp": "2018-09-17T12:43:52Z",
    "annotations": {
      "ingress.kubernetes.io/ssl-redirect": "true",
      "kubernetes.io/ingress.class": "traefik"
    }
  },
  "spec": {
    "tls": [
      {
        "hosts": [
          "domain.com"
        ],
        "secretName": "cert" // without is also not working
      }
    ],
    "rules": [
      {
        "host": "domain.com",
        "http": {
          "paths": [
            {
              "backend": {
                "serviceName": "domain",
                "servicePort": 443
              }
            }
          ]
        }
      },
      {
        "host": "www.domain.com",
        "http": {
          "paths": [
            {
              "backend": {
                "serviceName": "www-domain",
                "servicePort": 443
              }
            }
          ]
        }
      }
    ]
  },
  "status": {
    "loadBalancer": {}
  }
}

我尝试同时使用 http-01 和 tls-sni-01 质询。 dns-01 不是选项,因为我的 DNS 提供商没有 API。

最佳答案

您如何将 letsencrypt 配置注入(inject)您的 traefik Ingress 服务/守护进程?

Traefik 没有在 Kubernetes Ingress 文档中正式提供 letsencrypt。但这是一个 good guide .寻找“外部 Traefik 入口 Controller ”,您需要一个 kv 后端来存储您的证书。

你也可以试试cert-manager与 Traefik 配合使用。

关于kubernetes - Traefik Ingress (Kubernetes) 没有收到 letsencrypt 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52373805/

相关文章:

kubernetes - Kubernetes 1.9.6 是否支持适当的连接耗尽?

nginx - 在没有 GCP 负载均衡器的情况下创建 kubernetes nginx ingress

kubernetes - 我应该在 Kubernetes 上的 Traefik 部署中使用 NodePort 吗?

amazon-web-services - Traefik + 让我们在 AWS Lightsail 上加密

kubernetes - 在Google Cloud Kubernetes中运行Traefik时,LoadBalancer Healthy失败

kubernetes - Kubernetes |使用Prometheus监控HPA当前和 objective-c PU利用率

docker - 如何从 Kubernetes 中的 dockerhub 中提取图像?

traefik - 在 Traefik 中的 ForwardAuth 之后设置授权 header

kubernetes - 是否可以设置默认的前端规则类型?

ssl - Kubernetes Ingress 不适用于 Traefik 和 TLS