使用 cert-manager 和 Nginx ingress 进行 404 质询响应

2023-12-26

我想得到LetsEncrypt/证书管理器 https://cert-manager.io/docs/installation/kubernetes/运行通过this https://hub.helm.sh/charts/jetstack/cert-manager舵图。 K8s集群位于Digital Ocean上。

我成功了verified https://cert-manager.io/docs/installation/kubernetes/#verifying-the-installation按照建议安装并创建了一个ClusterIssuer用于登台,1 个用于生产。 (letsencrypt-staging, letsencrypt-prod)

问题:acme 挑战返回 404 错误。

$ k get challenge -o wide
NAME                                                      STATE     DOMAIN                 REASON                                                                               AGE
myapp-cert-2315925673-2905389610-1118496475   pending   myapp.example.com   Waiting for http-01 challenge propagation: wrong status code '404', expected '200'   7m55s

当 Ingress 与端口 80 配合使用时,Ingress 可以正常工作tls块被注释掉了。当我定义tls然而,端口 80 上的请求返回 404,这可能就是挑战失败的原因。

注意:使用我的产品时我得到了相同的响应ClusterIssuer.

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: myapp-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: letsencrypt-staging
  labels:
    app: myapp
spec:
  rules:
  - host: myapp.example.com
    http:
      paths:
      - backend:
          serviceName: myapp
          servicePort: 80
  tls:
  - hosts:
    - myapp.example.com
    secretName: myapp-cert

:: 编辑以添加更多配置 ::

按照 @Tubc 的要求添加更多配置和日志后,当我更新入口时,Nginx 似乎抛出错误,因为证书不存在。

集群发行者清单:

---
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: [email protected] /cdn-cgi/l/email-protection
    privateKeySecretRef:
      name: letsencrypt-prod
    solvers:
    - http01:
        ingress:
          class: nginx
---
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
  name: letsencrypt-staging
spec:
  acme:
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    email: [email protected] /cdn-cgi/l/email-protection
    privateKeySecretRef:
      name: letsencrypt-staging
    solvers:
    - http01:
        ingress:
          class: nginx

服务清单:

---
apiVersion: v1
kind: Service
metadata:
  name: myapp
  labels:
    app: myapp
spec:
  ports:
    - port: 80
  selector:
    app: myapp
    tier: fe
  type: NodePort

Nginx 日志:

2019/12/08 14:45:44 [emerg] 62#62:无法加载证书“/etc/nginx/secrets/default-myapp-cert”:PEM_read_bio_X509_AUX() 失败(SSL:错误:0909006C:PEM 例程:get_name :无起始行:期望:受信任的证书) I1208 14:45:44.934644 1 event.go:209] 事件(v1.ObjectReference {种类:“Ingress”,命名空间:“default”,名称:“myapp-ingress”,UID:“610c3304-0565-415d-8cde- 0863bf9325ca",APIVersion:"extensions/v1beta1",ResourceVersion:"319124",FieldPath:""}):类型:'警告'原因:'AddedOrUpdatedWithError'已添加或更新 default/myapp-ingress 的配置,但未应用:为 default/myapp-ingress 重新加载 NGINX 时出错:nginx 重新加载失败:命令 /usr/sbin/nginx -s reload stdout: "" stderr:“nginx:[emerg]无法加载证书\”/etc/nginx/secrets/default-myapp-cert\“:PEM_read_bio_X509_AUX()失败(SSL:错误:0909006C:PEM例程:get_name:无起始行:预期:受信任的证书)\n" 完成时出现错误:退出状态 1


尽管复制了文档,但事实证明 Ingress 上的注释键是错误的。

它应该是:certmanager.k8s.io/cluster-issuer(而不是cert-manager.io/cluster-issuer如记录)

进行此更改后,404 错误消失,并且证书已正确颁发和配置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 cert-manager 和 Nginx ingress 进行 404 质询响应 的相关文章

随机推荐

  • 检测 Glassware 是通过语音命令还是触摸菜单启动

    通过 OK Glass 语音命令与触摸菜单选择启动玻璃器皿时是否可能有不同的行为 具体来说 如果使用 OK Glass 语音命令启动玻璃器皿 我们会尝试提示语音识别 否则如果从触摸菜单启动玻璃器皿 则直接转到玻璃器皿 或者 有没有办法让应用
  • 为什么我不能将对象存储在 unordered_set 中?

    我知道集合是有序的 因此添加一个对象而不会重载 lt 运算符不允许说出哪个对象较小以保持容器排序 但是 我不明白为什么这是不可能的unordered set 如果我尝试这样的事情 include
  • 如何在 Laravel 查询中添加括号?

    我的查询 laravel 是这样的 customer Customer where full name iLIKE param keyword gt orWhere mobile iLIKE param keyword gt orWhere
  • 过滤掉 ANSI 转义序列 [重复]

    这个问题在这里已经有答案了 我有一个 python 脚本 它试图解释分别写入 stdout 和 stdin 以及从中读取的数据的踪迹 问题是这些数据充满了我不关心的 ANSI 转义 这些转义符是 JSON 编码的 因此它们看起来像 033
  • Google Guice 的隐藏功能 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 django-rest-framework 中过滤 ListAPIView

    我正在使用 ListAPIView 但无法过滤结果 我的代码是 class UserPostReadView generics ListAPIView serializer class PostSerializer model serial
  • 超出 HttpClient 缓冲区大小限制

    我正在使用我的客户端获取有关存储在 Swift 对象存储中的某个文件的一些信息 该文件可以通过 REST Api 访问 在 Swift 中 指向指定对象的 HEAD 方法和 url 返回其包含在 HTML 响应 无内容 标头中的元数据 哈希
  • 捕获 QML 错误消息

    我在用着Qt createQmlObject 创建一个QML来自文件的对象 如果文件损坏 QML 会输出如下所示的消息 Qt createQmlObject failed to create object qrc graphics inli
  • Streambuilder 未收到某些快照数据

    我只是测试一些来自 GPS 的流 我可以直接插入 GPS 流 但我想暂时将其分开 所以我可以将 StreamBuilder 与我自己创建的流一起使用 这一切似乎都有效 但 Streambuilder 似乎 错过 了某些快照 这让我感到困惑
  • 如何在屏幕顶部显示通知?

    我想用jQuery 通知插件 https github com mickeyren jquery notifications 但它总是将通知栏放在页面顶部 因此 如果页面很大 则必须向上滚动到顶部才能看到通知 是否可以让通知始终显示在浏览器
  • 适用于 AMQP 的良好 Python 库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您能推荐使用什么Python库来访问AMQP RabbitMQ 吗 根据我的研究pika似乎是首选之一
  • 通过 Uri 滑动加载本地图像。

    我正在尝试使用 Glide 从本地存储加载图像 但没有成功 Glide with mContext load pictureUri Uri of the picture transform new CircleTransform into
  • 操作栏 — 带有文本和图像的子菜单项无法正常工作

    我正在开发小型 Android 应用程序 其中使用操作栏和一些菜单项 一个菜单项包含子菜单 现在我想做的是始终显示带有文本和图标的菜单项 我按以下方式定义菜单项 menu menu
  • 关于 IIS 中最大文件上传大小的建议

    我意识到这个问题的答案取决于所使用的特定服务器 但很好奇人们是否对 ASP NET Web 表单允许的最大文件大小限制有建议 在一家印刷公司工作 希望允许图形设计师上传 我知道他们会超出我给他们的任何限制 您需要让您的用户满意 如果他们需要
  • 如何解决错误 ORA-06413:连接未打开?

    我本地环境VS2012 使用 Oracle 10g XE Dim dbConn As New OleDbConnection Dim dbComm As OleDbCommand dbConn ConnectionString Provid
  • MSI 可以与 EF Code First 一起使用吗?

    我已经在这个问题上陷入了很长一段时间 没有运气能够独自推进它 我正在尝试使用 MSI 令牌从 Azure 应用服务连接到 EF CodeFirst 托管数据库 当我使用 ARM 部署应用服务时 我生成了一个输出 确保它创建了一个服务主体 p
  • 防止 PHP 等待 mail() 函数

    在我的 Web 应用程序中 当用户对其帐户进行更改时 我调用 php mail 函数向该用户发送电子邮件通知 实施此操作后 我发现帐户更改操作需要非常长的时间 gt 20 秒 才能完成 我怀疑这是因为 PHP 等待 mail 函数发送电子邮
  • 使用 Tensorflow 训练时修改张量的值

    当我使用 Tensorflow 训练模型时 我想修改张量的值 这个张量是我的模型中的张量之一 weight tf Variable np matrix 经过一些迭代后 值weight将自动更新 我的问题是 如何修改weight非自动地 我已
  • 对象行为不正确

    我正在使用 Livewires 和 pygame 游戏中为您提供额外生命的对象之一被误认为是小行星对象 当额外生命对象与玩家碰撞时 它返回 额外生命对象没有属性 handle caught 错误消息 所以我可以提供一些帮助吗 class E
  • 使用 cert-manager 和 Nginx ingress 进行 404 质询响应

    我想得到LetsEncrypt 证书管理器 https cert manager io docs installation kubernetes 运行通过this https hub helm sh charts jetstack cert