在k8s上配置ingress并启用HTTPS证书

第一步,定义Secret文件

该文件设置tls的证书私钥和公钥内容,通过base64编码的内容
tls.crt: 证书公钥
tls.key: 证书私钥
示例

apiVersion: v1
kind: Secret
metadata:
  name: secret-tls
data:
  tls.crt: xxxxx cat xxx.crt | base64 -w 0
  tls.key: xxxxx cat xxx.pem | base64 -w 0
type: kubernetes.io/tls

第二步,定义ingress文件

如果希望http的强制转到https,把ingress.kubernetes.io/ssl-redirect设为true
hosts:如果是泛域名*,则需要添加该泛域名的定义
secretName:上一步的secret名称
backend:对应后端的service名称和端口
示例

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: secret-tls-ingress
  annotations:
    ingress.kubernetes.io/ssl-redirect: "False"
spec:
  tls:
  - hosts:
    - aaa.com
    - "*.aaa.com"
    secretName: secret-tls
  rules:
  - host: aaa.com
    http:
      paths:
      - backend:
          serviceName: jira-svc
          servicePort: 9000
        path: /

第三步,部署secret,ingress文件

kubectl create -f xxx.yml

第四步,重启ingress-controller组件

由于目前的ingress-controller版本对tls证书的bug,需要重新启动才能生效

原文地址:https://www.cnblogs.com/liubin0509/p/7561960.html