2019-12-27-traefik

时间:2022-07-22
本文章向大家介绍2019-12-27-traefik,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

layout: post

title: "2019-12-27-traefik"

date: "2019-12-27 18:00:00"

category: "traefik"

tags: "kubernetes traefik"

author: duiniwukenaihe


  • content {:toc}

集群配置:

初始集群环境kubeadm 1.16.3

ip

自定义域名

主机名

192.168.3.8

master.k8s.io

k8s-vip

192.168.3.10

master01.k8s.io

k8s-master-01

192.168.3.5

master02.k8s.io

k8s-master-02

192.168.3.12

master03.k8s.io

k8s-master-03

192.168.3.6

node01.k8s.io

k8s-node-01

192.168.3.2

node02.k8s.io

k8s-node-02

192.168.3.4

node03.k8s.io

k8s-node-03

描述背景:

traefik2的初始环境https://duiniwukenaihe.github.io/2019/10/17/k8s-traefik2/已经安装,现在的默认版本是2.1 。新版本增加了 TraefikService,的支持,具体可以参考https://wanzi.im/posts/2019/12/kubernetes-traefik-v2.1-deploy/。测试没有充足直接用于了生产环境,然后发现微信小程序中应用出现问题如下图:

error

很刺激 查了下 貌似微信小程序支持的tls默认是1.2我的traefik默认的tls是1.3......然后有简单使用的腾讯云api的网关也默认都是1.2的直接指定的后端域名tls1.3的访问也出现这种状况了....。下面还是记录下处理过程吧.

1. myssl.com是个好网站

证书我都是用的腾讯云的购买的亚洲诚信的。通过这个网站可以查看自己的网站安全等级,另外他还可以给一些安全方面的建议。

myssl

通过评级测试我的域名仅为B,而且证书支持了tls1.3

bad
1.3

OK,下面先把自己的traefik升级到2.1增加TraefikService的支持吧 .

2. 升级traefik配置文件.就不详细写了 可以参考https://wanzi.im/posts/2019/12/kubernetes-traefik-v2.1-deploy丸子的文档, 基本就是2.0的traefik-crd.yaml配置文件增加TraefikService,然后traefik-rbac.yaml增加traefikservices的rules.

3. 参照myssl的测试报告配置TLSOption

cat <<EOF | kubectl apply -f -

apiVersion: traefik.containo.us/v1alpha1

kind: TLSOption

metadata:

name: mytlsoption

namespaces: kube-system

spec:

maxVersion: VersionTLS12

snistrict: true

ciphersuites:

- TLS_ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHEEOF
注:namespace就写kube-system了,哈哈当然其实我写的是release测试的其实.....与文不符哈。

4 增加个hsts吧

cat <<EOF | kubectl apply -f -

apiVersion: traefik.containo.us/v1alpha1

kind: Middleware

metadata:

name: hsts

namespaces: kube-system

spec:

headers:

  stsSeconds: 31536000

EOF

注:默认就先增加下hsts了 其实其他的middleware也可以加下。

5. 修改原来的ingressroute配置文件

cat <<EOF> traefik-dashboard-route-https.yaml

apiVersion: traefik.containo.us/v1alpha1

kind: IngressRoute

metadata:

namespace: kube-system

name: traefik-dashboard-route-https

spec:

entryPoints:

- websecure  routes:
    - match: Host(`traefik.saynaihe.com`)
      kind: Rule
      services:
        - name: traefik
          port: 8080
  tls:
    secretName: all-saynaihe-com
    options:
      name: mytlsoption
      middlewares:
        - name: hsts

EOF

看别人写的例子tls的配置都写在最下面了 我也就抄写一下了。

6. myssl测试一下吧

ok
ok1

以上文图很多不符啊,但是过程就是这样的,可以参考一下。至于PCI DSS不合规,我就忽略了因为咱也不是支付行业,tls1.0也没有必要屏蔽了就这样吧