集群配置: 初始集群环境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/。测试没有充足直接用于了生产环境,然后发现微信小程序中应用出现问题如下图:
很刺激 查了下 貌似微信小程序支持的tls默认是1.2我的traefik默认的tls是1.3……然后有简单使用的腾讯云api的网关也默认都是1.2的直接指定的后端域名tls1.3的访问也出现这种状况了….。下面还是记录下处理过程吧.
1. myssl.com是个好网站
证书我都是用的腾讯云的购买的亚洲诚信的。通过这个网站可以查看自己的网站安全等级,另外他还可以给一些安全方面的建议。
通过评级测试我的域名仅为B,而且证书支持了tls1.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测试一下吧
以上文图很多不符啊,但是过程就是这样的,可以参考一下。至于PCI DSS不合规,我就忽略了因为咱也不是支付行业,tls1.0也没有必要屏蔽了就这样吧