Kubernetes - cert-manager - Hashicorp Vault - статус готовности сертификата пуст

Я создал Clusterissuer, который использует Vault, а затем выдал через него сертификат, но статус сертификата Готов пуст. В журналах событий и модулей диспетчера сертификатов ничего не отображается. Это тоже не создало секрета.

kubectl get cert
NAMESPACE             NAME                 READY                          SECRET                                             AGE
default               example-com                                         example-com                                      139m

clusterissuer.yaml

apiVersion: certmanager.k8s.io/v1alpha1
kind: ClusterIssuer
metadata:
  name: vault-clusterissuer
spec:
  vault:
    path: pki_int/sign/<role name>
    server: https://vault-cluster.example.com:8200
    caBundle: <base64 encoded cabundle pem>
    auth:
      appRole:
        path: approle
        roleId: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" 
        secretRef:
          name: cert-manager-vault-approle
          key: secretId

Имя роли, указанное в Пути, совпадает с ролью, созданной в Vault в pki_init.

certificate.yaml

apiVersion: certmanager.k8s.io/v1alpha1
kind: Certificate
metadata:
  name: example-com
spec:
  secretName: example-com 
  issuerRef:
    name: vault-clusterissuer
    kind: ClusterIssuer
  commonName: abc.example.com
  dnsNames:
  - abc.example.com

Поскольку он не создает никаких сообщений или журналов, я не уверен, с чего начать устранение неполадок.

Вам подходит значение path в clusterissuer.yaml ..?

заранее спасибо


person Devesh mehta    schedule 22.04.2020    source источник
comment
Находится ли ваш секретный cert-manager-vault-Approle в том же пространстве имен (по умолчанию), что и ClusterIssuer? Вы также можете предоставить вывод команды: kubectl get clusterissuers -n default?   -  person Malgorzata    schedule 22.04.2020
comment
да, секрет cert-manager-vault-approle и ClusterIssuer находятся в одном пространстве имен ..   -  person Devesh mehta    schedule 24.04.2020


Ответы (1)


CertificateConditionReady указывает, что сертификат готов к использованию.

Это определяется как:

  • Целевой секрет существует

  • Целевой секрет содержит сертификат, срок действия которого не истек.

  • Целевой секрет содержит закрытый ключ, действительный для сертификата.

  • Атрибуты commonName и dnsNames соответствуют атрибутам, указанным в сертификате.

Я думаю, что проблема в неправильном dnsNames определении в certificate.yaml файле:

Ваш файл конфигурации сертификата:

apiVersion: certmanager.k8s.io/v1alpha1
kind: Certificate
metadata:
  name: example-com
spec:
  secretName: example-com 
  issuerRef:
    name: vault-clusterissuer
    kind: ClusterIssuer
  commonName: abc.example.com
  dnsNames:
  - abc.example.com

dnsNames поле должно иметь значение: www.abc.example.com не abc.example.com

Окончательная версия должна выглядеть так:

apiVersion: certmanager.k8s.io/v1alpha1
kind: Certificate
metadata:
  name: example-com
spec:
  secretName: example-com 
  issuerRef:
    name: vault-clusterissuer
    kind: ClusterIssuer
  commonName: abc.example.com
  dnsNames:
  - www.abc.example.com

Также помните, что поле path - это путь роли Vault для серверной части PKI, а server - это базовый URL-адрес сервера Vault. path ДОЛЖЕН ИСПОЛЬЗОВАТЬ конечную точку хранилища sign.

Взгляните на: Issue-vault-setup, cert-clusterissuer.

person Malgorzata    schedule 28.04.2020
comment
Проблема была в самом диспетчере сертификатов. Проблема решена после повторного развертывания cert-maanager с нуля. - person Devesh mehta; 29.04.2020