禁用 Cloudflare 代理时,EKS ALB TLS 不起作用

问题描述 投票:0回答:1

好的,我在 AWS EKS 中进行了一个使用 ALB 的简单部署,但我遇到了 TLS 问题。我的设置如下:

  • 我在 Cloudflare 中有一个指向 ALB 的 CNAME 条目。
  • Cloudflare TLS 设置为“完全(严格)”。
  • 我在 Cloudflare 中创建了一个证书(stuff.stf 和 *.stuff.stf),并将其导入 Amazon(步骤如下)。

如果 CNAME 未经过代理(在 Cloudflare 中),我会收到“ERR_CERT_AUTHORITY_INVALID”错误。但如果是代理的话,那就可以正常工作了。

我该如何解决这个问题,或者我错过了什么?

这是我使用的yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-stuff
  namespace: api
  labels:
    app: stuff
spec:
  replicas: 1
  selector:
    matchLabels:
      app: stuff
  template:
    metadata:
      labels:
        app: stuff
    spec:
      containers:
        - name: stuff
          image: stuff.azurecr.io/stuff-master:12
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 8080
              protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: stuff
  namespace: api
  labels:
    app: stuff
spec:
  type: NodePort
  selector:
    app: stuff
  ports:
    - name: http
      port: 8080
      targetPort: 8080
      protocol: TCP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: stuff
  namespace: api
  annotations:
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTP": 8080}, {"HTTPS":443}]'
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/certificate-arn: "arn:aws:acm:xxxxxxxxxxxxxxxxxxxx"
spec:
  ingressClassName: alb
  rules:
    - host: stuff.domain.stf
      http:
        paths:
          - path: /stuff
            pathType: Prefix
            backend:
              service:
                name: stuff
                port:
                  number: 8080

以下是证书导入步骤:

  1. 首先,我在 Cloudflare 中为我的域创建了证书。
  2. 然后我从 Cloudflare 下载了根证书。
  3. 我到AWS控制台导入证书 3.1.我设置了步骤 1 中创建的证书和私钥。 3.2.我从 Cloudflare 设置了链证书
  4. 创建后,这就是我用于 ALB 注释的 ARN。
ssl kubernetes-ingress amazon-eks cloudflare aws-application-load-balancer
1个回答
0
投票

好的,我现在发现了问题:我需要请求证书而不是导入它(在AWS ACM中)。

要验证证书,有两个选项:电子邮件或 DNS。我选择了后者。请求几分钟后,证书将包含必须在我们的 DNS 提供商中设置为 CNAME 条目的 DNS 名称和值(在我的情况下,我必须在 Cloudflare DNS 部分中进行设置)。

© www.soinside.com 2019 - 2024. All rights reserved.