![](/img/trans.png)
[英]Generate wildcard certificate on Kubernetes cluster with DigitalOcean for my Nginx-Ingress
[英]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站點的遠程證書?
最后我解決了這個問題。 該錯誤位於 DNS 記錄中。 我在 dns 中激活了通配符路由。 我沒有單獨輸入子域,而是將 *.terrainserver.com 解鎖到我的 IP 地址。 這把事情搞砸了,上面給出了錯誤。
解決方案是刪除通配符 DNS 路由並單獨定義您的子域。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.