繁体   English   中英

Kubernetes nginx 入口证书错误

[英]Kubernetes nginx ingress Certificate Error

我一直在使用我的 Nginx Ingress 一段时间,最近在尝试从我的 pod 内访问 HTTPS 站点时遇到错误。

错误总是一样的:

E1022 17:33:58.843638 1 controller.go:131] cert-manager/controller/orders "msg"="re-queuing item due to error processing" "error"="error creating new order: Get https://acme-v02.api.letsencrypt.org/directory: x509: certificate is valid for ingress.local, not acme-v02.api.letsencrypt.org" "key"="gitlab/git-cert-1197334735-497646583"

我的 gitlab 跑步者也因图像拉取错误而失败,这是相同的

 Step 1/8 : FROM node:12.9
Get https://registry-1.docker.io/v2/: x509: certificate is valid for ingress.local, not registry-1.docker.io
ERROR: Job failed: command terminated with exit code 1

我已经从入口官方页面安装入口,我的入口资源如下

apiVersion: extensions/v1beta1
kind: Ingress                                                                      
metadata:  
    name: resources-ingress  
    namespace: gitlab                                                                  
    annotations:        
    kubernetes.io/ingress.class: nginx            
    cert-manager.io/cluster-issuer: le-clusterissuer        
spec:                                                       
    tls:                                                  
    - hosts:                                        
        - git.terrainserver.com                   
          secretName: git-cert-secret             
        - hosts:                             
        - registry.terrainserver.com         
          secretName: registry-cert-secret      
        - hosts:                              
        - www.terrainserver.com                
          secretName: pts-server-cert-secret     
    rules:                                                                            
    - host: git.terrainserver.com                 
    http:                                 
        paths:                               
        - path: /                           
        backend:                            
        serviceName: gitlab                  
        servicePort: 80                     
    - host: registry.terrainserver.com  
    http:                                 
        paths:                                
        - path: /                             
        backend:                               
        serviceName: registry                  
        servicePort: 5000                     
        - host: www.terrainserver.com          
    http:                                   
        paths:                                    
        - path: /                                 
        backend:
          serviceName: pts-server
          servicePort: 5000

底线是:问题与证书管理器无关,而不是从 kubernetes pod 连接到安全 URL 的问题

我正在使用证书管理器来管理来自 Let encrypt 的证书。 问题是,从 kubernetes 集群传出的连接无法验证远程主机证书。 我的理解是 Nginx 正在替换从远程主机传入的自己的证书,即 docker 或letsencrypt。 因此与 docker.io 建立连接,但传入证书是本地 nginx 证书。 也许入口正在拦截和替换来自 docker.io 或letsencrypt站点的远程证书?

你可以按照这个来安装 Jetstack cert-manager,一旦你安装了这个,请按照这个stackoverflow 帖子。

它将解决您的查询。

您创建的当前证书不是必需的,这里证书将由 jetstack 自动创建,一旦它能够验证 acme 质询,为了验证,您需要 map DNS 或负载均衡器的主机名 ZA12A3079E14CED46EAZ66 nginx。

这应该可以解决您将 http 转换为 https 的目的

最后我解决了这个问题。 该错误位于 DNS 记录中。 我在 dns 中激活了通配符路由。 我没有单独输入子域,而是将 *.terrainserver.com 解锁到我的 IP 地址。 这把事情搞砸了,上面给出了错误。

解决方案是删除通配符 DNS 路由并单独定义您的子域。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM