如何使用Wildcart证书(在裸机私有云上)替换“ Kubernetes伪证书” Nginx Ingress和证书管理器

时间:2019-04-15 08:15:28

标签: certificate kubernetes-ingress nginx-ingress bare-metal-server

我们已经在裸机服务器上设置了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证书连接

2 个答案:

答案 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)

如果您使用的是Helmcert manager,请确保每个入口资源都有一个不同的certificate name,这些值通常是通过舵图中的值文件设置的。

tls - secretName: <give certificate name> hosts: example.com

如果成功部署了入口资源,则可以检查可用的证书以避免名称冲突:

kubectl get certificates