Сертификаты Kubernetes Cert-Manager с истекшим сроком действия

Сертификаты Kubernetes Cert-Manager с истекшим сроком действия

Мне досталась среда GKE Kubernetes, и я уже несколько дней пытаюсь разобраться, но, к сожалению, просто не знаю, что делать дальше.

Кластер настроен на использование cert-manager (установленного через helm) для применения сертификатов Let's Encrypt к кластеру. По какой-то причине это работало отлично более двух лет, но начиная с 4/16 я начал видеть предупреждения SSL в браузерах для всех заметок в кластере.

При запуске kubectl describe certificates site-cloud-tlsсертификат, похоже, обновился, но не применяется к входящему трафику.

Name:         site-cloud-tls
Namespace:    cs
Labels:       <none>
Annotations:  <none>
API Version:  certmanager.k8s.io/v1alpha1
Kind:         Certificate
Metadata:
  Creation Timestamp:  2019-06-02T09:55:05Z
  Generation:          34
  Owner References:
    API Version:           extensions/v1beta1
    Block Owner Deletion:  true
    Controller:            true
    Kind:                  Ingress
    Name:                  cs-nginx
    UID:                   7f312326-851c-11e9-8bf0-4201ac10000c
  Resource Version:        541365011
  UID:                     7f36cc40-851c-11e9-8bf0-4201ac10000c
Spec:
  Dns Names:
    site.cloud (changed name but is correct)
  Issuer Ref:
    Kind:       ClusterIssuer
    Name:       letsencrypt-dns
  Secret Name:  site-cloud-tls
Status:
  Conditions:
    Last Transition Time:  2022-04-24T05:26:13Z
    Message:               Certificate is up to date and has not expired
    Reason:                Ready
    Status:                True
    Type:                  Ready
  Not After:               2022-06-15T17:01:48Z
Events:                    <none>
kubectl describe ingress
Name:             cs-nginx
Namespace:        cs
Address:          192.168.1.32
Default backend:  default-http-backend:80 (10.16.3.12:8080)
TLS:
  site-cloud-tls terminates site.cloud (changed naming but seems correct)
Rules:
  Host                       Path  Backends
  ----                       ----  --------
  site.cloud   
                             /   site:8080 (10.10.10.10:8080)

Annotations:                 certmanager.k8s.io/cluster-issuer: letsencrypt-dns
                             kubernetes.io/ingress.class: nginx
                             nginx.ingress.kubernetes.io/ssl-redirect: true
                             nginx.org/websocket-services: datahub
Events:                      <none>

У нас есть промежуточная среда, которая также пострадала. Я пробовал переустановить cert-manager, переустановить nginx-ingress, но, к сожалению, не смог вернуть все обратно и запустить (вероятно, из-за ошибки конфигурации, которую я сделал).

После 3 дней я не знаю, что делать, и не знаю Kubernetes достаточно хорошо, чтобы знать, что делать дальше. Есть ли какие-либо указания? Могу ли я предоставить дополнительную информацию, которая может помочь?

Спасибо!

решение1

Проблема в том, что cluster-issuerв вашем определении Ingress вы ссылаетесь на тип:

Annotations:                 certmanager.k8s.io/cluster-issuer: letsencrypt-dns

Но объект, который вы определили, является Certificateвидом:

Name:         site-cloud-tls
Namespace:    cs
Labels:       <none>
Annotations:  <none>
API Version:  certmanager.k8s.io/v1alpha1
Kind:         Certificate

Вот почему это не применяется к Ingress. Что вам нужно, так это создатьЭмитентресурс в Kubernetes для обработки сертификата. Здесь вы можете найти пример базовогоАКМЕ ClusterIssuerфайл манифеста:

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-staging
spec:
  acme:
    # You must replace this email address with your own.
    # Let's Encrypt will use this to contact you about expiring
    # certificates, and issues related to your account.
    email: [email protected]
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      # Secret resource that will be used to store the account's private key.
      name: example-issuer-account-key
    # Add a single challenge solver, HTTP01 using nginx
    solvers:
    - http01:
        ingress:
          class: nginx

Связанный контент