簡體   English   中英

創建 ManagedCertificate 結果為“Status: FailedNotVisible”

[英]Creating a ManagedCertificate results in "Status: FailedNotVisible"

使用 Kube.netes 1.12.6-gke.7 或更高版本,可以創建一個 ManagedCertificate,然后從向 Inte.net 公開服務的入口資源引用該證書。

首先運行 kubectl describe managedcertificate certificate-name 表示證書在 Provisioning state 中,但最終轉到 FailedNotVisible。

盡管使用 Static IP 和 DNS 可以很好地解決上述服務的 http 版本,但所有 ManagedCertificate 最終都處於“狀態:FailedNotVisible”state。

我在做什么的概述:

  1. 生成保留(靜態)外部 IP 地址

  2. 將 CloudDNS 中的 DNS A 記錄配置到 subdomain.domain.com 以從步驟 1 生成 IP 地址。

  3. 使用 kubectl apply -f 創建一個名為“subdomain-domain-certificate”的 ManagedCertificate,其中 spec:domains 包含對應於步驟 2 中的 subdomain.domain.com DNS 記錄的單個域。
  4. 創建一個簡單的部署和服務公開它
  5. 創建 Ingress 資源,引用步驟 4 中的默認服務后端以及步驟 1 中創建的 static ip 的注釋和步驟 3 中生成的托管證書。
  6. 確認 Ingress 已創建並分配 static IP
  7. 訪問http://subdomain.domain.com為第 4 步部署中創建的 pod 提供 output

過了一會兒

kubectl 描述 managedcertificate 子域域證書

結果為“狀態:FailedNotVisible”。

Name:         subdomain-domain-certificate
Namespace:    default
Labels:       <none>
Annotations:  <none>
API Version:  networking.gke.io/v1beta1
Kind:         ManagedCertificate
Metadata:
  Creation Timestamp:  2019-04-15T17:35:22Z
  Generation:          1
  Resource Version:    52637
  Self Link:           /apis/networking.gke.io/v1beta1/namespaces/default/managedcertificates/subdomain-domain-certificate
  UID:                 d8e5a0a4-5fa4-11e9-984e-42010a84001c
Spec:
  Domains:
    subdomain.domain.com
Status:
  Certificate Name:    mcrt-ac63730e-c271-4826-9154-c198d654f9f8
  Certificate Status:  Provisioning
  Domain Status:
    Domain:  subdomain.domain.com
    Status:  FailedNotVisible
Events:
  Type    Reason  Age   From                            Message
  ----    ------  ----  ----                            -------
  Normal  Create  56m   managed-certificate-controller  Create SslCertificate mcrt-ac63730e-c271-4826-9154-c198d654f9f8

據我了解,如果負載均衡器配置正確(在 ManagedCertificate 資源的幕后完成)和 DNS(可以很好地解析為非 https 端點)檢查證書應該 go 進入狀態:活動 state?

我的問題背后的問題最終是 DNSSEC 配置錯誤。 通過https://dnssec-analyzer.verisignlabs.com/運行 DNS 后,我能夠識別並解決問題。

DNSSEC 確實沒有為我的域啟用,但是在配置之后, ManagedCertificate 配置仍然沒有通過,我不知道發生了什么。 刪除並重新應用 ManagedCertificate 和 Ingress 清單並沒有解決問題。 但是發出命令gcloud beta compute ssl-certificates list顯示了幾個未使用的托管證​​書,並使用cloud compute ssl-certificates delete NAME ...刪除它們,然后重新啟動配置過程在我的情況下起到了作用。

您需要確保域名解析為 GKE Ingress 的 IP 地址,完全按照“ 使用托管證書創建 Ingress ”的說明進行操作。

有關更多詳細信息,請參閱 Google Cloud 負載平衡文檔。 https://cloud.google.com/load-balancing/docs/ssl-certificates#domain-status

“狀態 FAILED_NOT_VISIBLE 表示由於 DNS 或負載平衡配置問題,域的證書配置失敗。確保配置了 DNS,以便證書的域解析為負載平衡器的 IP 地址。”

就我而言,此問題是由我在Ingress資源中輸入的拼寫錯誤引起的,該拼寫錯誤拼寫了受管證書的名稱。

networking.gke.io/managed-certificates: elasticseach-certificate

我剛剛在設置新服務時遇到了這個問題,並且我的 8 個外部 IP 已用完。

按照故障排除指南,我檢查了是否有端口 443 到我的入口的轉發規則。 沒有。 當我嘗試手動設置它時,我收到一個錯誤消息,告訴我我用完了我的 8 個魔術地址。 我刪除了我不需要的轉發規則等等!

現在,為什么我無法為同一個入口成功設置端口 80 的轉發規則。

我遇到了同樣的錯誤,發現我在錯誤的 Kubernetes 命名空間中創建了 managedCertificate。 一旦 managedCertificate 被放置在正確的命名空間中,一切都會工作。

閱讀故障排除指南后,我仍然無法解決我的問題。 當我查看GCP ingress事件時,顯示ingress無法定位到SSL策略。 檢查您在創建入口時是否遺漏了什么。

這是另一個有用的參考資料,可用於驗證您的 k8s 清單以設置托管證書和入口。 希望它能幫助別人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM