Достаточно ли аннотации cert-manager.io/cluster-issuer: acme-Issueer для создания сертификата TLS? - PullRequest
0 голосов
/ 14 января 2020

Начиная с cert-manager do c: добавление аннотации cert-manager.io/cluster-issuer: acme-issuer к объекту Ingress должно инициировать прокладку, запросить сертификат у этого эмитента и сохранить сертификат (без какого-либо пространства имен?) (С помощью которого имя?).

Я пробовал это, и это ничего не делает. Добавление раздела tls: к определению yaml Ingress вызывает запуск shim, запрашивает сертификат и сохраняет его в том же пространстве имен, что и Ingress.

Это означает, что do c неверно, или он действительно должен работать без tls: секции?

apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
  name: acme-issuer
spec:
  acme:
    email: user@example.com
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      name: example-issuer-account-key
    solvers:
    - http01:
        ingress:
          class: nginx
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    cert-manager.io/cluster-issuer: acme-issuer
    kubernetes.io/ingress.class: nginx
  name: my-ingress-name
  namespace: mynamespace
spec:
  rules:
  - host: some.domain.eu
    http:
      paths:
      - backend:
          serviceName: my-service-name
          servicePort: 5000
        path: /
  tls:
  - hosts:
    - some.domain.eu
    secretName: secret-storage-key-for-tls-cert

Ответы [ 2 ]

1 голос
/ 14 января 2020

Если вы правильно создали эмитента, вам нужно создать сертификат, чтобы эмитент мог выдать сертификат, используя информацию, имеющуюся в ресурсе сертификата, и заполнить секрет:

apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
  name: certname
spec:
  secretName: secretName
  issuerRef:
    name: letsencrypt-prod
  commonName: <the CN>
  dnsNames:
  - <name>

Один раз у вас есть этот ресурс, он должен создать секрет, содержащий сертификаты TLS, и сохранить его в secretName.

0 голосов
/ 16 января 2020

Я использую как ты, и это создает мой TLS, хорошо. Но имя privateKeySecretRef является игуальным ClusterIssuer именем. Секция tls необходима для ingress.

Использование:

apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    # The ACME server URL
    server: https://acme-v02.api.letsencrypt.org/directory
    # Email address used for ACME registration
    email: my@email.com
    privateKeySecretRef:
      name: letsencrypt-prod
    # Enable the HTTP-01 challenge provider
    solvers:
      - http01:
          ingress:
            class: nginx

Проверка статуса сертификата для отладки:

kubectl get certificate -o wide

Если статус CertificateRequest

kubectl get CertificateRequest -o wide
...