背景:

环境中traefik生成的域名都是http的公网域名,就算做了域名备案。在有些对网络环境安全要求较高的环境中还会存在域名被劫持。因此会配置https域名来防止被劫持,同时保留http域名来满足不同网络环境的访问

操作原理:

traefik正常代理80端口来作为http的转发,新增443端口的转发。本次使用阿里云slb挂上eip来作为访问入口

后端服务器组为3台master节点。后端接口分别为80和443,若为安全考虑可以不用常规端口(用的都是TCP转发)

k8s内部署了nginx服务来作为各域名及后端转发

现新增nginx-https-ingress

大致配置如下:

[root@master-001 changmo]# cat nginx-glyy-https.yml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: traefik
    traefik.ingress.kubernetes.io/router.tls: "true"                  ---需要tls
  name: nginx-ingress-https
  namespace: nginx
spec:
  tls:
  - secretName: tls-secret-glyy-poc                                       将证书导入ks8 secret
  rules:
  - host: poc.come.com                                       域名保持不变
    http:
      paths:
      - backend:
          service:
            name: nginx-helm-nginx
            port:
              number: 80
        path: /
        pathType: ImplementationSpecific
  - host: open.come.com
    http:
      paths:
      - backend:
          service:
            name: nginx-helm-nginx
            port:
              number: 80
        path: /
        pathType: ImplementationSpecific

创建secret 导入证书(注意证书名要改为 tls.crt  tls.key  否则traefik会报错)

创建secret

 kubectl create secret generic tls-secret-glyy-poc --from-file=certs/come-future.com.key --from-file=certs/come-future.com.crt -n nginx

 

同理若是其他服务使用traefik生成的域名,若是http的,都可以新加一个https的ingress

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐