我想在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集群上工作的整个过程感到困惑,因此,如果您有什么想法可以指出正确的方向,请不要犹豫,分享您的想法。
答案 0 :(得分:0)
如@ johnharris85所述,如果您使用证书,请确保您的证书具有CA标志为true。您可以通过
进行检查$ openssl x509 -text -noout -in ca.crt |grep "CA:"
输出应为CA:TRUE
。
希望有帮助!