kubernetes-证书管理器证书链

时间:2019-05-14 19:32:32

标签: kubernetes kubernetes-ingress cert-manager

我想在kubernetes集群上设置通配域证书。

我有一个crt / key对,还有一个来自我的CA的中间crt

我创建了一个引用crt / key对的Secret(我尝试过使用中间crt,也可以不使用中间crt)

apiVersion: v1
data:
  tls.crt: LS0tLS1CRUd...
  tls.key: LS0tLS1CRUd...
kind: Secret
metadata:
  name: wildcard-key-pair
type: kubernetes.io/tls

然后,我使用cert-manager并遵循https://docs.cert-manager.io/en/latest/tasks/issuers/setup-ca.html中的文档创建了一个证书和相关的颁发者

apiVersion: certmanager.k8s.io/v1alpha1
kind: Issuer
metadata:
  name: wildcard-issuer
  namespace: default
spec:
  ca:
    secretName: wildcard-key-pair
---
apiVersion: certmanager.k8s.io/v1alpha1
kind: Certificate
metadata:
  name: wildcard
  namespace: default
spec:
  secretName: wildcard-tls-secret
  dnsNames:
    - '*.example.com'
    - example.com
  commonName: '*.example.com'
  organization:
    - example
  issuerRef:
    name: wildcard-issuer
    kind: Issuer

但是当我使用kubectl描述证书时,出现以下错误:

Error getting keypair for CA issuer: certificate is not a CA

我对让通配符dns在kubernetes集群上工作的整个过程感到困惑,因此,如果您有什么想法可以指出正确的方向,请不要犹豫,分享您的想法。

1 个答案:

答案 0 :(得分:0)

如@ johnharris85所述,如果您使用证书,请确保您的证书具有CA标志为true。您可以通过

进行检查
$ openssl x509 -text -noout -in ca.crt |grep "CA:"

输出应为CA:TRUE

希望有帮助!