总结traefik 在k8s 环境中的配置文件

traefik.toml配置文件引用

[www@localhost traefik-ingress]$ more *

::::::::::::::

configmap.yml

::::::::::::::

source: traefik/templates/configmap.yaml

apiVersion: v1

kind: ConfigMap

metadata:

name: traefik-ingress

namespace: test

labels:

app: traefik

data:

traefik.toml: |

logLevel = "info"

defaultEntryPoints = ["http", "https"]

[entryPoints]

[entryPoints.http]

address = ":80"

compress = true

[entryPoints.https]

address = ":443"

compress = true

[entryPoints.https.tls]

[accesslog]

bufferingSize = 100

[frontends]

[frontends.frontend1]

[frontends.frontend1.ratelimit]

extractorfunc = "client.ip"

[frontends.frontend1.ratelimit.rateset.rateset1]

period = "10s"

average = 1000

burst = 2000

[frontends.frontend1.ratelimit.rateset.rateset2]

period = "3s"

average = 5

burst = 10

[backends]

[backends.backend1]

[backends.backend1.maxconn]

amount = 10

extractorfunc = "request.host"

下面两种方式都可以实践发布traefik,daemonsets和deployment ,任选其中之一就可以

daemonsets 配置文件

::::::::::::::

daemonsets.yaml

::::::::::::::

apiVersion: apps/v1

kind: DaemonSet

metadata:

name: traefik-ingress

namespace: test

labels:

k8s-app: traefik-ingress

spec:

selector:

matchLabels:

k8s-app: traefik-ingress

template:

metadata:

labels:

k8s-app: traefik-ingress

name: traefik-ingress

spec:

serviceAccountName: traefik-ingress-controller

terminationGracePeriodSeconds: 60

containers:

# - image: traefik:1.7

- image: harbor.test.com/library/traefik:v1.7.26-alpine

name: traefik-ingress

imagePullPolicy: IfNotPresent

env:

- name: TZ

value: "Asia/Shanghai"

ports:

- name: http

containerPort: 80

protocol: TCP

- name: https

containerPort: 443

protocol: TCP

- name: admin-web

containerPort: 8080

protocol: TCP

securityContext:

capabilities:

drop:

- ALL

add:

- NET_BIND_SERVICE

args:

- --configfile=/config/traefik.toml

- --api

- --kubernetes

- --logLevel=INFO

- --insecureskipverify=true

- --kubernetes.endpoint=https://192.168.0.4:6443

- --accesslog

- --accesslog.bufferingsize=1000

- --accesslog.fields.names="StartUTC=drop"

- --traefiklog

- --traefiklog.format=json

- --retry

- --retry.attempts=5

- --metrics.prometheus

volumeMounts:

- mountPath: /config

name: config

volumes:

- name: config

configMap:

name: traefik-ingress

deployment 配置文件

::::::::::::::

deployment.yml

::::::::::::::

apiVersion: apps/v1

kind: Deployment

metadata:

name: traefik-ingress

namespace: test

labels:

k8s-app: traefik-ingress

spec:

replicas: 4

strategy:

type: RollingUpdate

rollingUpdate:

maxSurge: 25%

maxUnavailable: 25%

selector:

matchLabels:

k8s-app: traefik-ingress

template:

metadata:

labels:

k8s-app: traefik-ingress

name: traefik-ingress

spec:

serviceAccountName: traefik-ingress-controller

terminationGracePeriodSeconds: 60

containers:

# - image: traefik:1.7

- image: harbor.test.com/library/traefik:v1.7.26-alpine

name: traefik-ingress

imagePullPolicy: IfNotPresent

env:

- name: TZ

value: "Asia/Shanghai"

ports:

- name: http

containerPort: 80

protocol: TCP

- name: https

containerPort: 443

protocol: TCP

- name: admin-web

containerPort: 8080

protocol: TCP

securityContext:

capabilities:

drop:

- ALL

add:

- NET_BIND_SERVICE

args:

- --configfile=/config/traefik.toml

- --api

- --kubernetes

- --logLevel=INFO

- --insecureskipverify=true

- --kubernetes.endpoint=https://192.168.0.4:6443

- --accesslog

- --accesslog.bufferingsize=1000

- --accesslog.fields.names="StartUTC=drop"

- --traefiklog

- --traefiklog.format=json

- --retry

- --retry.attempts=5

- --metrics.prometheus

volumeMounts:

- mountPath: /config

name: config

volumes:

- name: config

configMap:

name: traefik-ingress

ingress 配置文件

::::::::::::::

ingress.yml

::::::::::::::

apiVersion: extensions/v1beta1

kind: Ingress

metadata:

name: traefik-web-ui

namespace: test

annotations:

kubernetes.io/ingress.class: traefik

spec:

rules:

  • host: traefik-admin.test.com

    http:

    paths:

    • path: /

      backend:

      serviceName: traefik-ingress-service

      servicePort: 8080

rbac 配置文件

::::::::::::::

rbac.yml

::::::::::::::

apiVersion: v1

kind: ServiceAccount

metadata:

name: traefik-ingress-controller

namespace: test

apiVersion: rbac.authorization.k8s.io/v1beta1

kind: ClusterRole

metadata:

name: traefik-ingress-controller

rules:

  • apiGroups:

    • ""

      resources:
    • services
    • endpoints
    • secrets

      verbs:
    • get
    • list
    • watch
  • apiGroups:
    • extensions

      resources:
    • ingresses

      verbs:
    • get
    • list
    • watch

kind: ClusterRoleBinding

apiVersion: rbac.authorization.k8s.io/v1beta1

metadata:

name: traefik-ingress-controller

roleRef:

apiGroup: rbac.authorization.k8s.io

kind: ClusterRole

name: traefik-ingress-controller

subjects:

  • kind: ServiceAccount

    name: traefik-ingress-controller

    namespace: test

traefik svc 配置文件

::::::::::::::

svc.yml

::::::::::::::

kind: Service

apiVersion: v1

metadata:

name: traefik-ingress-service

namespace: test

spec:

selector:

k8s-app: traefik-ingress

type: NodePort

ports:

- name: http

port: 80

targetPort: 80

protocol: TCP

nodePort: 30080

- name: https

port: 443

targetPort: 443

protocol: TCP

nodePort: 30443

- protocol: TCP

port: 8080

nodePort: 38080

name: admin-web

总结traefik 在k8s 环境中的配置文件的更多相关文章

  1. 在集成环境中修改配置文件php.ini不生效的解决办法

    配置完成之后一定要重启服务,如果重启服务还是不生效. 就去看一下phpinfo(),找到Loaded Configuration File选项,这个才是真正读取的配置文件

  2. K8S生产环境中实践高可靠的配置和技巧都有哪些?

    K8S环境中实践高可靠的配置和技巧都有哪些? 磁盘类型及大小 磁盘类型: 推荐使用ssd 磁盘 对于worker节点,创建集群时推荐使用挂载数据盘.这个盘是专门给/var/lib/docker 存放本 ...

  3. Kubernetes+Flannel 环境中部署HBase集群

    2015-12-14注:加入新节点不更改运行节点参数需求已满足,将在后续文章中陆续总结. 注:目前方案不满足加入新节点(master节点或regionserver节点)而不更改已运行节点的参数的需求, ...

  4. 在 k8s 以外的分布式环境中使用 Dapr

    在Dapr 文档和实践案例中多是推荐采用k8s, 其实我目前也是在k8s 上操作的,有公有云TKE,AKS,还有私有云的Rancher ,它并没有传闻中的那么难,而且我认为它非常容易上手.不过,我还是 ...

  5. RHEL7 在不同的环境中使用不同的网络配置文件

    比如,我们可以设置RHEL7 系统在公司时使用一个网卡配置文件:在家时则使用另外一个配置文件(可以根据不同的环境设置多个网卡配置文件). 网卡配置信息如下: [root@rhel7 ~]# nmcli ...

  6. Kubernetes 在生产环境中常用架构

    Kubernetes 在生产环境中常用架构 首先,我们来梳理下Kubernetes生产架构,其设计适用于绝大多数环境.如下图所示 在该架构中,我们可以将其分为四层,如下: Client层:即Kuber ...

  7. k8s环境搭建--基于kubeadm方法

    环境 master node: 数量 1, 系统 ubuntu 16.04_amd64 worker node: 数量 1, 系统 ubuntu 16.04_amd64 kubernetes 版本: ...

  8. Kubernetes用户指南(三)--在生产环境中使用Pod来工作、管理部署

    一.在生产环境中使用Pod来工作 本节将介绍一些在生产环境中运行应用非常有用的功能. 1.持久化存储 容器的文件系统只有当容器正常运行时有效,一旦容器奔溃或者重启,所有对文件系统的修改将会丢失,从一个 ...

  9. 生产环境中的kubernetes 优先级与抢占

    kubernetes 中的抢占功能是调度器比较重要的feature,但是真正使用起来还是比较危险,否则很容易把低优先级的pod给无辜kill.为了提高GPU集群的资源利用率,决定勇于尝试一番该feat ...

随机推荐

  1. css3 & content & attr & data-*

    css3 & content & attr & data-* content: attr(data-value); https://github.com/oliviale/CS ...

  2. Nice!JavaScript基础语法知识都在这儿了

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star 转载请注明出处! 链接:https://blog.csdn ...

  3. .Net Core 3.1浏览器后端服务(三) Swagger引入与应用

    一.前言 前后端分离的软件开发方式已逐步成为互联网项目开发的业界标准,前后端分离带来了诸多好处的同时,也带来了一些弊端. 接口文档的维护就是其中之一,起初前后端约定文档规范,开发的很愉快,随着时间推移 ...

  4. ELK的一点认识

    为什么需要ELK: 一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以 ...

  5. vue高级

    1.nrm nrm提供了一些最常用的npm包镜像地址,可以快速切换服务器地址下载资源.它只是提供了地址,并不是装包工具.如果没有安装npm,需要安装node,然后直接安装即可.node下载链接:htt ...

  6. Python3+PYQT5 实现并打包exe小工具(1)

    前言: 由于项目原因,配置测试环境与正式环境切换频率很高,固写了一键切换环境的工具.用于记录. 实现逻辑: 1.读取注册表中客户端的安装目录,把固定的环境配置文件添加到固定目录下实现配置测试环境: 2 ...

  7. GPU 总结

    What features of GPUs allow them to perform computations faster than a typical CPU? GPUs have a mass ...

  8. 开发在线教育平台项目步骤(Python3.7.6 + Django 3.0)

    1. 新建虚拟环境 mkvirtualenv eduonline 2. 安装mysql数据库 pip install mysqlclient pip install pymysql 3. 在setti ...

  9. SpringBoot(五):SpringBoot使用拦截器

    1.按照SpringMVC的方式编写一个拦截器: 2.配置一个类   implements WebMvcConfigurer 接口 为该类添加注解@Configuration  (等价于一个sprin ...

  10. 女朋友看了会生气的回答 URI和URL有什么区别?

    URL是什么 URL 代表着是统一资源定位符(Uniform Resource Locator).作用是为了告诉使用者 某个资源在 Web 上的地址.这个资源可以是一个 HTML 页面,一个 CSS ...