我们已经在裸机服务器上设置了Kubernetes集群。
我们部署了我们的应用程序,其中每个命名空间都是针对最终客户的应用程序。即customer1.mydomain.com->名称空间:cust1
我们一直在获取Kubernetes Ingress Controller Face证书。
我们已经购买了自己的通配符证书* .mydomain.com
#kubectl create secret tls OUR-SECRET --key /path/private.key --cert /path/chain.crt -n ingress-nginx
#kubectl create secret tls OUR-SECRET --key /path/private.key --cert /path/chain.crt -n kube-system
ingress.yaml
apiVersion: certmanager.k8s.io/v1alpha1
kind: Certificate
metadata:
name: ourcloud
namespace: cert-manager
spec:
secretName: oursecret
issuerRef:
name: letsencrypt-prod
commonName: '*.mydomain.com'
acme:
config:
- dns01:
provider: cf-dns-prod
domains:
- '*.mydomain.com'
kubectl apply -f ingress.yaml
certificate.certmanager.k8s.io/ourcloud created
https://cust1.mydomain.com与Kubernetes Ingress Controller Face证书连接
答案 0 :(得分:0)
我发现了问题。我的Yaml中的证书文件文件名错误。回顾入口日志总是好事
kubectl logs nginx-ingress-controller-689498bc7c-tf5 -n ingress-nginx
kubectl get -o yaml ingress --all-namespaces
尝试从文件重新创建秘密,并查看其是否有效。
kubectl delete -n cust4 SECRETNAME
kubectl -n cust4 create secret tls SECRETENAME --key key.key --cert cert.crt
答案 1 :(得分:0)
如果您使用的是Helm
和cert manager
,请确保每个入口资源都有一个不同的certificate name
,这些值通常是通过舵图中的值文件设置的。
tls
- secretName: <give certificate name>
hosts: example.com
如果成功部署了入口资源,则可以检查可用的证书以避免名称冲突:
kubectl get certificates