Kubernetes 1.12.6-gke.7以降を使用すると、サービスをインターネットに公開するIngressリソースから参照されるManagedCertificateを作成できます。
Kubectl describe managedcertificate certificate-nameを実行すると、最初に証明書がプロビジョニング状態であることを示しますが、最終的にFailedNotVisibleになります。
上記のサービスのhttpバージョンに正しく解決される静的IPおよびDNSを使用しているにもかかわらず、ManagedCertificateはすべて「Status:FailedNotVisible」状態になります。
私がやっていることの概要:
予約済み(静的)外部IPアドレスの生成
CloudDNSのDNS Aレコードをsubdomain.domain.comに設定し、手順1で生成されたIPアドレスを設定します。
しばらくして
kubectlは、managedcertificateサブドメイン-ドメイン-証明書を記述します
結果は「Status: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以外のエンドポイントに正常に解決される)で証明書がチェックアウトされ、ステータスがアクティブになる必要があるかどうかを私は理解していますか?
ドメイン名がGKE IngressのIPアドレスに解決されることを確認する必要があります。「 管理された証明書でIngressを作成する 」の指示に正確に従ってください。
詳細については、Google Cloud Load Balancingのドキュメントをご覧ください。 https://cloud.google.com/load-balancing/docs/ssl-certificates#domain-status から:
「ステータスFAILED_NOT_VISIBLEは、DNSまたは負荷分散構成の問題が原因で、ドメインの証明書のプロビジョニングが失敗したことを示しています。証明書のドメインがロードバランサーのIPアドレスに解決されるようにDNSが構成されていることを確認してください。」
DNSSECは確かに私のドメインで有効にされていませんが、それを構成した後、 ManagedCertificate構成 はまだ実行されておらず、何が起こっているのかわかりませんでした。 ManagedCertificateおよびIngressマニフェストを削除して再適用しても、うまくいきませんでした。しかし、コマンドgcloud beta compute ssl-certificates list
は cloud compute ssl-certificates delete NAME ...
、そして私の場合、設定プロセスを再起動するとうまくいきました。