Traefik配置
官方文档:https://github.com/containous/traefik/blob/master/docs/configuration/backends/kubernetes.md
安装Consul
因为我们要配置Traefik高可用,数据存储就得用到Consul KV Store。
给3台服务器打上标签,Consul会以StatefulSet模式安装在上面
kubectl label nodes node1 node2 node2 consul=server创建服务
cat <<YAML | kubectl apply -f -
apiVersion: v1
kind: Service
metadata:
name: consul
namespace: kube-system
labels:
app: consul
spec:
clusterIP: None
ports:
- name: http
port: 8500
targetPort: 8500
- name: https
port: 8443
targetPort: 8443
- name: rpc
port: 8400
targetPort: 8400
- name: serflan-tcp
protocol: "TCP"
port: 8301
targetPort: 8301
- name: serflan-udp
protocol: "UDP"
port: 8301
targetPort: 8301
- name: serfwan-tcp
protocol: "TCP"
port: 8302
targetPort: 8302
- name: serfwan-udp
protocol: "UDP"
port: 8302
targetPort: 8302
- name: server
port: 8300
targetPort: 8300
- name: consuldns
port: 8600
targetPort: 8600
selector:
app: consul
YAML创建StatefulSet,数据存储在节点的/mnt/consul目录
部署traefik
执行下面代码,即可以部署traefix,执行前需要修改Email me@mydomain 为你自己的,注意,很多教程都没有提到这个Email有什么讲究,其实只要填写你自己真实的Email就可以了,Traefik会自动用你的邮箱去Let's Encrpyt注册账号,自动通过API获取域名验证字符串,Let's Encrpyt验证域名时,Traefik会自动识别URL http://your.domain/.wellknown/xxxx/xxxx (我忘了具体URL是什么),返回验证字符串,实现域名身份验证。这一切都是制动的,你需要做的就是提前把域名解析到Traefik的外网IP,提供一个真实的Email。
3个节点打上标签edgenode=true,Traefik会部署在满足这个标签的服务器上:
开始部署:
这个配置文件,是不会自动http重定向到https的,需要在独立的ingress中去声明annotations
支持的annotations 列表:https://github.com/containous/traefik/blob/master/docs/configuration/backends/kubernetes.md#general-annotations
重定向http到https: traefik.ingress.kubernetes.io/redirect-entry-point: https
查看部署状态:
查看Web界面 http://127.0.0.1:8580


注册Let'sencrypt账号
Last updated