Kubernetes 如何使用nginx入口和带有route53 DNS的证书管理器在EKS上启用HTTPS?

Kubernetes 如何使用nginx入口和带有route53 DNS的证书管理器在EKS上启用HTTPS?,kubernetes,ssl-certificate,kubernetes-ingress,amazon-eks,cert-manager,Kubernetes,Ssl Certificate,Kubernetes Ingress,Amazon Eks,Cert Manager,所以,我有一个运行在aws eks上的Kubernetes集群,它目前只是一个学习和构建生产集群的测试集群。 除了SSL证书之外,我已经设法使所有我需要的东西都工作了!: 我正在使用cert manager在我的域brunolira.dev上添加SSL证书,我在google domains上购买了它,并使用AWS的Route53重定向到我的kubernetes负载平衡器,但还没有成功 通过使用登台证书管理器,我在firefox上获得以下证书: 当我使用prod cert manager url

所以,我有一个运行在aws eks上的Kubernetes集群,它目前只是一个学习和构建生产集群的测试集群。 除了SSL证书之外,我已经设法使所有我需要的东西都工作了!:

我正在使用cert manager在我的域brunolira.dev上添加SSL证书,我在google domains上购买了它,并使用AWS的Route53重定向到我的kubernetes负载平衡器,但还没有成功

通过使用登台证书管理器,我在firefox上获得以下证书:

当我使用prod cert manager url时,它会更改为: 我不明白为什么说Kubernetes入口控制器伪造证书,也不明白为什么 DNS更改为ingress.local

这是我的俱乐部会员:

apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    email: MYEMAIL(WHICH I DID NOT REGISTER ANYWHERE, IS THERE SUCH A THING?)
    privateKeySecretRef:
      name: cluster-issuer-account-key
    server: https://acme-prod-v02.api.letsencrypt.org/directory
    solvers:
    - selector:
        dnsZones:
          - "brunolira.dev"
      dns01:
        route53:
          region: us-east-2
          hostedZoneID: HOSTEDZONE ID ON ROUTE 53
          role: arn:aws:iam::IAMUSERID:role/dns-manager
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
 name: letsencrypt-prod
 namespace: cert-manager
spec:
 acme:
   server: https://acme-v02.api.letsencrypt.org/directory
   email: MYEMAIL
   privateKeySecretRef:
     name: letsencrypt-prod
   solvers:
   - http01:
       ingress:
         class:  nginx
这是我的入口:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
    cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
  tls:
  - hosts:
    - brunolira.dev
    secretName: echo-tls
  rules:
  - host: brunolira.dev
    http:
      paths:
      - path: /common
        backend:
          serviceName: common-service
          servicePort: 80
      - path: /offline
        backend:
          serviceName: offline-service
          servicePort: 80
任何关于如何解决此问题的帮助、指导、建议或提示都将不胜感激

如果您想查看prod生成的证书,您可以访问该页面并验证您需要的任何内容! 我还可以提供有关我的配置的任何信息,这些信息对于找到此问题的解决方案非常有用

我认为link在这方面会对您有所帮助

TLS机密将自动创建,您只需在入口规则中提及。

已解决! 长话短说,我使用了错误的letsencrypt产品URL:

即使在提供的集群服务器上,我使用的是dns01解算器,但我也在尝试使用http01

这是我最后的一次聚会:

apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    email: MYEMAIL(WHICH I DID NOT REGISTER ANYWHERE, IS THERE SUCH A THING?)
    privateKeySecretRef:
      name: cluster-issuer-account-key
    server: https://acme-prod-v02.api.letsencrypt.org/directory
    solvers:
    - selector:
        dnsZones:
          - "brunolira.dev"
      dns01:
        route53:
          region: us-east-2
          hostedZoneID: HOSTEDZONE ID ON ROUTE 53
          role: arn:aws:iam::IAMUSERID:role/dns-manager
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
 name: letsencrypt-prod
 namespace: cert-manager
spec:
 acme:
   server: https://acme-v02.api.letsencrypt.org/directory
   email: MYEMAIL
   privateKeySecretRef:
     name: letsencrypt-prod
   solvers:
   - http01:
       ingress:
         class:  nginx
这是我最后一次进入:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
    cert-manager.io/acme-challenge-type: "http01"
    cert-manager.io/cluster-issuer: "letsencrypt-staging"
spec:
  tls:
  - hosts:
    - brunolira.dev
    secretName: echo-tls
  rules:
  - host: brunolira.dev
    http:
      paths:
      - path: /serviceA
        backend:
          serviceName: serviceA
          servicePort: 80
      - path: /ServiceB
        backend:
          serviceName: serviceB
          servicePort: 80

这让我明白我做错了什么!非常好的教程:

嗨,塔萨!谢谢你的链接!我试着按照这些指示去做,但没有成功。好消息是,我已经按照我答案中链接的教程解决了这个问题。