网上找的版本,都显得过时了。于是,我作了一个针对新版本helm及traefik的可用实践步骤。
一,安装helm及traefik。
安装好k3s时,已默认安装好Tiller v2.16.8版本和traefik 1.81.0版本。
二,调整traefik的yaml文件。
编辑/var/lib/rancher/k3s/server/manifests/traefik.yaml文件,helm文件中新增dashboard的value。全部内容如下:
kind: HelmChart
metadata:
name: traefik
namespace: kube-system
spec:
chart: https://%{KUBERNETES_API}%/static/charts/traefik-1.81.0.tgz
valuesContent: |-
rbac:
enabled: true
ssl:
enabled: true
dashboard:
enabled: true
domain: "traefik.me.k3s"
metrics:
prometheus:
enabled: true
kubernetes:
ingressEndpoint:
useDefaultPublishedService: true
image: "rancher/library-traefik"
tolerations:
- key: "CriticalAddonsOnly"
operator: "Exists"
- key: "node-role.kubernetes.io/master"
operator: "Exists"
effect: "NoSchedule"
此yaml文件中,启用了dashboard,且使用了一个traefik.me.k3s域名访问。(此域名在windows下,以改写C:\Windows\System32\drivers\etc\目录下的Hosts文件实现)
当我们更新完此yaml文件之后,k3s会自动调用Helm(helm-install-traefik)来重新部署一次traefik。
如果部署失败,需要检查配置文件。
三,步骤一个简单的nginx。
不再赘述,见我的前面的简书。
https://www.jianshu.com/p/485923b5fbde
四,使用ingress代码nginx。
kubectl apply -f xxx.yaml的内容如下:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: traefik-nginx
namespace: default
annotations:
kubernetes.io/ingress.class: traefik
spec:
rules:
- host: traefik.dracula.io
http:
paths:
- backend:
serviceName: nginx-service
servicePort: 80
此ingress使用traefik.dracula.io域名,实现nginx-service:80的k8s service服务。域名实现方式与第二步同样
五,验证访问。
1,在C:\Windows\System32\drivers\etc\hosts文件内,新增如下内容:
192.168.1.213 traefik.dracula.io
192.168.1.213 traefik.me.k3s
2,访问traefik的dashboard
http://traefik.me.k3s/dashboard/
3,通过traefik访问nginx服务
http://traefik.dracula.io/
4,通过traefik访问nginx与通过nodeport直接访问Nginx的区别。
k8s的nodeport比较难管理
traefik是作为API网关代码,有更多的治理功能。nginx ingress,KONG,ambassador等都是类似的,但traefik实现最简单。
网友评论