Kubernetes - сертификат-менеджер - Hashicorp Vault - состояние готовности сертификата не заполнено - PullRequest
1 голос
/ 22 апреля 2020

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

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

Имя роли, указанное в пути, совпадает с именем, созданным в хранилище в 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

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

Имеет ли значение путь в clusterissuer.yaml выглядит правильно для вас ..?

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

1 Ответ

1 голос
/ 28 апреля 2020

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.

Пожалуйста, посмотрите: Установка-хранилище-хранилища , cert-clusterissuer .

...