概述
利用traefik使应用对外提供服务
创建一组pod和对应的service
apiVersion: v1
kind: Service
metadata:
name: whoami
spec:
ports:
- protocol: TCP
name: web
port: 80
selector:
app: whoami
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: whoami
labels:
app: whoami
spec:
replicas: 2
selector:
matchLabels:
app: whoami
template:
metadata:
labels:
app: whoami
spec:
containers:
- name: whoami
image: containous/whoami
ports:
- name: web
containerPort: 80
[root@master tarefik-test]# kubectl get service |grep whoami
whoami ClusterIP 10.68.54.237 <none> 80/TCP 5m42s
[root@master tarefik-test]# kubectl get pods |grep whoami
whoami-678c86b5c7-8fk4k 1/1 Running 0 5m51s
whoami-678c86b5c7-ddxtb 1/1 Running 0 5m51s
创建ingress路由
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: simpleingressroute
spec:
entryPoints:
- web
routes:
- match: Host(`who.ronnie.com`) && PathPrefix(`/notls`)
kind: Rule
services:
- name: whoami
port: 80
通过entryPoints指定了我们这个应用的入口点事web,也就是80端口,然后访问的规则就是要匹配who.ronnie.com这个域名,并且具有/notls的路径前缀的请求才会被whoami这个service所匹配,我们可以直接创建上面的几个资源对象,然后对域名做对应的解析后,就可以访问了
在 IngressRoute
对象中我们定义了一些匹配规则,这些规则在 Traefik 中有如下定义方式:
https配置
如果我们需要用 HTTPS 来访问我们这个应用的话,就需要监听 websecure
这个入口点,也就是通过 443 端口来访问,同样用 HTTPS 访问应用必然就需要证书,这里我们用 openssl
来创建一个自签名的证书:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=who.ronnie.com"
# kubectl create secret tls who-tls --cert=tls.crt --key=tls.key
secret/who-tls created
# kubectl get secret who-tls -o yaml
vi https-traefik-whoami.yaml
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: ingressroutetls
spec:
entryPoints:
- websecure
routes:
- match: Host(`who.ronnie.com`) && PathPrefix(`/tls`)
kind: Rule
services:
- name: whoami
port: 80
tls:
secretName: who-tls
kuberctl apply -f who_route.yaml
http跳转https
利用traefik2实现http跳转需要用到中间件,我们可以根据自己的各种需求去选择不同的中间件来满足服务,Traefik 官方已经内置了许多不同功能的中间件,其中一些可以修改请求,头信息,一些负责重定向,一些添加身份验证等等,而且中间件还可以通过链式组合的方式来适用各种情况
如下所示,我们使用 redirectScheme
中间件来创建提供强制跳转服务:
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: redirect-https
spec:
redirectScheme:
scheme: https
然后将这个中间件附加到 http 的服务上面去,因为 https 的不需要跳转:
---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: ingressroutetls-http
spec:
entryPoints:
- web
routes:
- match: Host(`who.ronnie.com`) && PathPrefix(`/tls`)
kind: Rule
services:
- name: whoami
port: 80
middlewares:
- name: redirect-https
最后
以上就是震动咖啡豆为你收集整理的traefik应用的全部内容,希望文章能够帮你解决traefik应用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复