HTTPS证书类型的Secret

在传统架构中,域名证书一般在集群入口的代理服务器上进行管理,比如Nginx。

在Kubernetes中,一般服务都是通过Ingress发布的,此时可以将域名证书保存在TLS类型的Secret上,之后Ingress即可绑定该证书。

首先创建HTTPS的证书文件,假设域名为test.com(自签名证书不受浏览器信任):

openssl.exe req -newkey rsa:2048 -nodes -keyout tls.key -x509 -days 365 -out tls.crt 
-subj "/CN=test.com"

根据生成的tls.key和tls.crt创建Secret:

$ kubectl -n default create secret tls nginx-test-tls --key=tls.key --cert=tls.crt

最后创建一个Ingress将证书绑定到指定的域名上:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-https-test
  labels:
    name: nginx-https-test
spec:
  rules:
  - host: https-test.com
    http:
      paths:
      - backend:
          serviceName: nginx-svc
          servicePort: 80            
  tls: 
  - sercretName: nginx-test-tls

注意:

  • 一个Ingress可以绑定多个TLS类型的Secret

  • 同一个Secret也可以被多个Ingress使用

最后更新于