当前位置: 首页 > 知识库问答 >
问题:

如何使用nginx-ingress和cert-manager与route53 DNS在EKS上启用HTTPS?

濮献
2023-03-14

所以,我有一个库伯内特斯集群在aws-ek上运行,目前它只是一个测试集群来学习和构建一个生产集群。我已经设法使我需要的一切工作,除了SSL证书!:(

我正在使用 cert-manager 在我的域“brunolira.dev”上添加 SSL 证书,我在谷歌域上购买并使用 AWS 的 Route53 重定向到我的 kubernetes 负载均衡器,但尚未取得任何成功。

这是我的ClusterIssuer:

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: 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

任何帮助,指导,建议或提示我如何解决这个问题将非常感谢!

如果您想查看产品生成的证书,可以访问brunoila页面。开发并验证您需要的任何东西!我还可以提供有关我的配置的任何信息,这些信息将有助于找到解决此问题的方法!

共有2个答案

宇文温文
2023-03-14

我认为这种联系在这种情况下会对你有所帮助。

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

陈修诚
2023-03-14

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

即使在提供的clusterIssuer上,我使用了“dns01”解算器,我也尝试使用“http01”。

这是我的最后一个集群发行者:

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

这个链接帮助我发现我做错了什么!相当好的教程:)

 类似资料:
  • 我正在尝试用cert-manager、istio ingress和LetsEncrypt在kubernetes中配置SSL证书。我已经安装了istio和helm,cert-manager,创建了ClusterIssuer,然后我试图创建一个证书。acme挑战无法验证,我正在尝试使用http01进行验证,但无法解决如何使用istio ingress进行验证的问题。Istio部署有以下选项: 证书配置

  • 我们在裸机服务器上设置了库伯内特斯集群。 我们部署应用程序,其中每个命名空间都是最终客户的应用程序。即customer1.mydomain.com- 我们不断获得库伯内特斯入口控制器假证书。 我们购买了自己的通配符证书*。mydomain。通用域名格式 进入。亚马尔 https://cust1.mydomain.com连接库伯内特斯入口控制器假证书

  • 我在EKS上运行服务已经有一段时间了,今天无意中删除了nginx入口。现在,当我尝试使用以下url中的入口控制器模板设置入口时,只需稍加修改: https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.34.1/deploy/static/provider/aws/deploy-tls-termination.

  • 当块注释掉时,入口可以在端口80处正常工作。但是,当我定义时,端口80上的请求返回404,这可能是挑战失败的原因。 注意:在使用我的产品时,我会得到相同的响应。 ::编辑以添加更多配置:: 服务清单: Nginx日志: 2019/12/08 14:45:44[emerg]62#62:无法加载证书“/etc/NGINX/secrets/default-myapp-cert”:PEM_read_bio

  • cert-manager cert-manager is a Kubernetes add-on to automate the management and issuance ofTLS certificates from various issuing sources. It will ensure certificates are valid and up to date periodica

  • 我已经在AWS EKS集群上部署了Ingress Nginx。入口控制器和服务作为组件部署。因此,为Ingress Nginx控制器提供了AWS网络负载平衡器 流量通过入口控制器终止的NLB和TLS。 我想做的是将AWS WAF与入口集成。AWS ALB有一种方法,但是否有方法集成上述配置的WAF?