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/。测试没有充足直接用于了生产环境,然后发现微信小程序中应用出现问题如下图:
很刺激 查了下 貌似微信小程序支持的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:!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测试一下吧
以上文图很多不符啊,但是过程就是这样的,可以参考一下。至于PCI DSS不合规,我就忽略了因为咱也不是支付行业,tls1.0也没有必要屏蔽了就这样吧
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法