duiniwukenaihe SRE Engineer(target)

2019-12-27-traefik

2019-12-27
duiniwukenaihe

集群配置: 初始集群环境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:!DHE
EOF
注: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也没有必要屏蔽了就这样吧


Similar Posts

Comments