簡體   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