我是靠谱客的博主 震动咖啡豆,最近开发中收集的这篇文章主要介绍traefik应用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

利用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应用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部