Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >traefik Ingress https配置

traefik Ingress https配置

作者头像
py3study
发布于 2020-05-28 14:10:37
发布于 2020-05-28 14:10:37
3.2K0
举报
文章被收录于专栏:python3python3

一、概述

1、理解Ingress

简单的说,ingress就是从kubernetes集群外访问集群的入口,将用户的URL请求转发到不同的service上。Ingress相当于nginx、apache等负载均衡方向代理服务器,其中还包括规则定义,即URL的路由信息,路由信息得的刷新由Ingress controller来提供。

2、理解Ingress Controller

Ingress Controller 实质上可以理解为是个监视器,Ingress Controller 通过不断地跟 kubernetes API 打交道,实时的感知后端 service、pod 等变化,比如新增和减少 pod,service 增加与减少等;当得到这些变化信息后,Ingress Controller 再结合下文的 Ingress 生成配置,然后更新反向代理负载均衡器,并刷新其配置,达到服务发现的作用。

3、RBAC

在开始之前,需要先了解一下什么是RBAC。RBAC(基于角色的访问控制)使用 rbac.authorization.k8s.io API 组来实现权限控制,RBAC 允许管理员通过 Kubernetes API 动态的配置权限策略。在 1.6 版本中 RBAC 还处于 Beat 阶段,如果想要开启 RBAC 授权模式需要在 apiserver 组件中指定 --authorization-mode=RBAC 选项。

在 RBAC API 的四个重要概念: 

Role:是一系列的权限的集合,例如一个角色可以包含读取 Pod 的权限和列出 Pod 的权限 

ClusterRole: 跟 Role 类似,但是可以在集群中到处使用( Role 是 namespace 一级的) 

RoloBinding:把角色映射到用户,从而让这些用户继承角色在 namespace 中的权限。 

ClusterRoleBinding: 让用户继承 ClusterRole 在整个集群中的权限。

二、部署traefik

环境介绍

系统

k8s版本

docker

ip

主机名

配置

centos 7.6

1.18.1

19.03.5

10.212.20.94

k8s-master

2核4G

centos 7.6

1.18.1

19.03.5

10.212.20.240

k8s-node01

2核8G

traefik版本

traefik目前主要有2个版本,分别是1.x和2.x。因为2个版本之间,配置文件差异比较大,目前网络上的博客文章都是基于1.x编写的。

因此,本文采用1.x最后一个版本,镜像名为:traefik:v1.7.24-alpine

配置证书

https证书,是从阿里云购买的,买的通配符证书,1年1千多块钱左右。

登录master节点,创建证书目录。

代码语言:javascript
AI代码解释
复制
mkdir /etc/kubernetes/ssl

将证书上传到此目录,并重命名文件。

目录结构如下:

代码语言:javascript
AI代码解释
复制
./
├── tls.crt
└── tls.key

创建secret

创建secret,保存https证书,注意操作目录,如果不是在此目录下操作,须指定绝对路径。

代码语言:javascript
AI代码解释
复制
cd /etc/kubernetes/ssl
kubectl create secret generic ssl --from-file=tls.crt --from-file=tls.key -n kube-system

如果需要配置traefik多域名证书形式,traefik能够自动识别证书。请参考文章底部提供的参考链接!

打label标签

为 k8s-node01 节点指定label标签为edgenode=true

代码语言:javascript
AI代码解释
复制
kubectl label nodes k8s-node01 edgenode=true

配置yaml

traefik.yaml

这里面包含了rbac,DaemonSet,controller,traefik UI,https配置,configmap

代码语言:javascript
AI代码解释
复制
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
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: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: traefik-ingress-controller
  namespace: kube-system
---
kind: ConfigMap
apiVersion: v1
metadata:
  name: traefik-conf
  namespace: kube-system
data:
  traefik.toml: |
    insecureSkipVerify = true
    defaultEntryPoints = ["http","https"]
    [entryPoints]
      [entryPoints.http]
      address = ":80"
      [entryPoints.https]
      address = ":443"
        [entryPoints.https.tls]
          [[entryPoints.https.tls.certificates]]
          CertFile = "/ssl/tls.crt"
          KeyFile = "/ssl/tls.key"
---
kind: DaemonSet
apiVersion: apps/v1
metadata:
  name: traefik-ingress-controller
  namespace: kube-system
  labels:
    k8s-app: traefik-ingress-lb
spec:
  selector:
      matchLabels:
        k8s-app: traefik-ingress-lb
        name: traefik-ingress-lb
  template:
    metadata:
      labels:
        k8s-app: traefik-ingress-lb
        name: traefik-ingress-lb
    spec:
      serviceAccountName: traefik-ingress-controller
      tolerations:
      - key: node-role.kubernetes.io/master
        effect: NoSchedule
      terminationGracePeriodSeconds: 60
      hostNetwork: true
      #nodeSelector:
      #   ingress: traefik
      volumes:
      - name: ssl
        secret:
          secretName: ssl
      - name: config
        configMap:
          name: traefik-conf
      containers:
      - image: traefik:v1.7.24-alpine
        name: traefik-ingress-lb
        ports:
        - name: http
          containerPort: 80
          hostPort: 80
        - name: admin
          containerPort: 8080
        securityContext:
          privileged: true
        args:
        - --configfile=/config/traefik.toml
        - -d
        - --web
        - --kubernetes
        volumeMounts:
        - mountPath: "/ssl"
          name: "ssl"
        - mountPath: "/config"
          name: "config"
      nodeSelector:
        edgenode: "true"
---
kind: Service
apiVersion: v1
metadata:
  name: traefik-ingress-service
spec:
  selector:
    k8s-app: traefik-ingress-lb
  ports:
    - protocol: TCP
      port: 80
      name: web
    - protocol: TCP
      port: 8080
      name: admin
    - protocol: TCP
      port: 443
      name: https
  type: NodePort
---
apiVersion: v1
kind: Service
metadata:
  name: traefik-web-ui
  namespace: kube-system
spec:
  selector:
    k8s-app: traefik-ingress-lb
  ports:
  - port: 80
    targetPort: 8080
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: traefik-web-ui
  namespace: kube-system
  annotations:
    kubernetes.io/ingress.class: traefik
spec:
  rules:
  - host: traefikui.test.com
    http:
      paths:
      - backend:
          serviceName: traefik-web-ui
          servicePort: 80

使用DaemonSet类型来部署Traefik,并使用nodeSelector来限定Traefik所部署的主机。如果有dns,将域名解析到这所部署的主机即可。

开始部署

代码语言:javascript
AI代码解释
复制
kubectl apply -f traefik.yaml

访问traefik ui

由于内网没有dns服务器,直接修改windows10的hosts文件,添加一条记录。

代码语言:javascript
AI代码解释
复制
10.212.20.240  traefikui.test.com

注意:这里的10.212.20.240是Traefik所部署的主机。不是master节点ip

访问http和https

代码语言:javascript
AI代码解释
复制
http://traefikui.test.com
https://traefikui.test.com

效果如下:

三、traefik发布应用

现在k8s环境中,有一个vue开发的web后台。

查看pod

代码语言:javascript
AI代码解释
复制
# kubectl get pods -n test
NAME                           READY   STATUS    RESTARTS   AGE
web-wxbweb-845994566c-4dcxt    1/1     Running   2          2d23h

查看svc

代码语言:javascript
AI代码解释
复制
# kubectl get svc -n test
NAME         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)             AGE
web-wxbweb   ClusterIP   10.1.43.224   <none>        7000/TCP,7001/TCP   2d23h

目前的service类型是ClusterIP

新建一个yaml,通过traefik来暴露访问。

wxbweb-traefik.yaml

代码语言:javascript
AI代码解释
复制
kind: Ingress
metadata:
  name: web-wxbweb
  namespace: test
  annotations:
    kubernetes.io/ingress.class: traefik
    traefik.frontend.rule.type: PathPrefixStrip
spec:
  rules:
  - host: wxbweb.test.com
    http:
      paths:
      - path: /
        backend:
          serviceName: web-wxbweb
          servicePort: 7000

发布一下

代码语言:javascript
AI代码解释
复制
kubectl apply -f wxbweb-traefik.yaml

新增一条hosts记录

代码语言:javascript
AI代码解释
复制
10.212.20.240  wxbweb.test.com

访问页面是否正常。

2.0配置,请参考

https://docs.traefik.io/user-guides/crd-acme/

本文参考链接:

https://www.cnblogs.com/cptao/p/10911918.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/05/27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深入玩转K8S之如何访问业务应用(Traefik-ingress配置https篇)
上篇我们简单介绍了下traefik以及如何http访问, 但是在实际生产环境中不仅仅只是http的转发访问,还有https的转发访问,
DevinGeng
2019/04/09
1.4K0
深入玩转K8S之如何访问业务应用(Traefik-ingress配置https篇)
「走进k8s」Kubernetes1.15.1的Ingress TLS 与 Traefik路径转发(36)
PS:上面就是traefik 和 path的使用方法,通过配置ingress 填写对应的规则就可以了,不是很复杂。也描述了traefik 关于https证书的使用。
IT架构圈
2019/09/12
1.3K0
「走进k8s」Kubernetes1.15.1的Ingress TLS 与 Traefik路径转发(36)
附021.Traefik-ingress部署及使用
[root@master01 ingress]# helm repo add traefik https://containous.github.io/traefik-helm-chart
木二
2020/06/04
1.5K0
traefik系列之一 | 简介、部署和配置
基于 centos7.9,docker-ce-20.10.18,kubelet-1.22.3-0, traefik-2.9.10
Amadeus
2023/04/27
4.9K0
traefik系列之一 | 简介、部署和配置
Traefik-v2.x快速入门
traefik 与 nginx 一样,是一款优秀的反向代理工具,或者叫 Edge Router。至于使用它的原因则基于以下几点
py3study
2020/04/16
4.1K1
Kubernetes 集群部署 Ingress Traefik
Traefik 是一个开源的可以使服务发布变得轻松有趣的边缘路由器。它负责接收你系统的请求,然后使用合适的组件来对这些请求进行处理。
高楼Zee
2021/12/15
2.3K0
Kubernetes 集群部署 Ingress Traefik
Kubernetes部署升级Traefik2.6
Traefik 是一个开源的可以使服务发布变得轻松有趣的边缘路由器。它负责接收你系统的请求,然后使用合适的组件来对这些请求进行处理。 除了众多的功能之外,Traefik 的与众不同之处还在于它会自动发现适合你服务的配置。当 Traefik 在检查你的服务时,会找到服务的相关信息并找到合适的服务来满足对应的请求。 Traefik 兼容所有主流的集群技术,比如 Kubernetes,Docker,Docker Swarm,AWS,Mesos,Marathon,等等;并且可以同时处理多种方式。(甚至可以用于在裸机上运行的比较旧的软件。) 有了Traefik,就不需要维护和同步一个单独的配置文件:一切都会自动、实时地发生(没有重新启动,没有连接中断)。使用Traefik,您可以花时间在系统中开发和部署新特性,而不是配置和维护其工作状态。
王先森sec
2023/04/24
8360
Kubernetes部署升级Traefik2.6
# 一篇文章让你搞懂如何在K8s 里使用 Traefik 2.0作为Ingress Controller(上)
了解K8s的同学应该都知道,如果想要把应用暴露到公网上供外部访问,那么不可避免的会接触到Ingress资源。本文以Traefik为例,让大家对Ingress和Traefik的使用有一定的了解。
100000798482
2020/02/13
1.2K0
# 一篇文章让你搞懂如何在K8s 里使用 Traefik 2.0作为Ingress Controller(上)
【Kubernetes系列】第6篇 Ingress controller - traefik组件介绍
为了能够让Ingress资源能够工作,在Kubernetes集群中必须至少有一个运行中的ingress controller组件。也就是说如果在kubernetes集群中没有一个ingress controller组件,只是定义了ingress资源,其实并不会实现http、https协议的请求转发、负载均衡等功能。常见的ingress controller组件如下:
HankerCloud
2019/10/11
7570
【Kubernetes系列】第6篇 Ingress controller - traefik组件介绍
13-部署traefik-ingress插件
Kubernetes traefik ingress安装 Ingress简介 如果你还不了解,ingress是什么,可以先看下我翻译的Kubernetes官网上ingress的介绍Kubernetes Ingress解析。 理解Ingress 简单的说,ingress就是从kubernetes集群外访问集群的入口,将用户的URL请求转发到不同的service上。Ingress相当于nginx、apache等负载均衡方向代理服务器,其中还包括规则定义,即URL的路由信息,路由信息得的刷新由Ingress co
程序员同行者
2018/07/03
1.8K0
Traefik2.2:迎来黑暗模式与Udp LoadBalance
那么先来尝试一下将Traefik2.1 升级到Traefik2.2.0,在Traefik2.2.0的新功能介绍了解到,2.2版本的traefik增加了两种资源对象 TLSStore和 IngressRouteUDP,如果想顺利的使用Traefik2.2版本,就需要将这两种资源对象安装一下,同时也要修改Traefik的ClusterRole,不然Traefik无法使用这两种自定义的CRDs。
公众号: 云原生生态圈
2021/11/15
8280
Traefik2.2:迎来黑暗模式与Udp LoadBalance
Kubernetes 中 traefik ingress 的使用
简单的说,ingress就是从kubernetes集群外访问集群的入口,将用户的URL请求转发到不同的service上。Ingress相当于nginx、apache等负载均衡反向代理服务器,其中还包括规则定义,即URL的路由信息。
kubernetes中文社区
2019/06/24
2K0
Kubernetes 中 traefik ingress 的使用
深入玩转K8S之如何访问业务应用(Traefik-ingress篇)
上篇懒得写了索性转载了一篇nginx-ingress的,本篇我们来看神器Traefik,我个人是比较看好和偏向与Traefik的,它轻便易用而且还有界面。
DevinGeng
2019/04/09
1.3K0
深入玩转K8S之如何访问业务应用(Traefik-ingress篇)
Kubernetes的Ingress控制器比较(Traefik)
Traefik支持动态配置和静态配置,因此在实践的过程中,我们将Traefik运行的端口配置在静态配置文件中,Traefik因为功能的丰富性得到很多的人的青睐,尤其是它的弹性功能,从大量的技术博客上观察来看,现在很多人在使用并且很稳定,对于ingress-nginx来说,能动态配置的Traefik显然略胜一筹,这是一个非常大且好的升级。更多的功能点可以在官方文档(https://docs.traefik.io/)详细查阅:
公众号: 云原生生态圈
2021/11/15
2.1K0
Kubernetes的Ingress控制器比较(Traefik)
「走进k8s」Kubernetes1.15.1的外部服务发现 ingress(35)
3.现在可以供大家使用的 Ingress controller 有很多,比如 traefik、nginx-controller、Kubernetes Ingress Controller for Kong、HAProxy Ingress controller,当然你也可以自己实现一个 Ingress Controller,现在普遍用得较多的是 traefik 和 nginx-controller,traefik 的性能较 nginx-controller 差,但是配置使用要简单许多, traefik 为例给大家介绍 ingress 的使用。
IT架构圈
2019/09/12
1.8K0
「走进k8s」Kubernetes1.15.1的外部服务发现 ingress(35)
kubernetes中常用的Ingress Controller
到https://github.com/kubernetes/ingress-nginx/tree/master/deploy/static这个下面下载对应的YAML文件,有configmap.yaml,namespace.yaml,rbac.yaml,with-rbac.yaml,可以写一个如下循环下载:
极客运维圈
2020/02/04
1.9K0
kubernetes中常用的Ingress Controller
Traefik1.7.17的部署使用
因为我这里是作为kubernetes服务的暴露,因此你得有一个kubernetes集群
聂伟星
2020/07/12
1.4K0
Traefik2.2从坑出发
Traefik 2.2新增的功能如下: 1. 支持了udp 2. traefik2.2 支持使用K/V存储做为动态配置的源,分别是 consul, etcd, Redis, zookeeper 3. 能够使用kubernetes CRD自定义资源定义UDP负载平衡 IngressRouteUDP。 4. 能够使用 rancher, consul catalog, docker和 marathon中的标签定义UDP的负载平衡 5. 增加了对ingress注解的主持 6. 将TLS存储功能 TLSStores添加到Kubernetes CRD中,使kubernetes用户无需使用配置文件和安装证书即可提供默认证书。 7. 在日志中增加了http的请求方式,是http还是https 8. 因为TLS的配置可能会影响CPU的使用率,因此增加了 TLS version和 TLS cipher使用的指标信息 9. 当前的WRR算法对于权重不平衡端点存在严重的偏差问题,将EDF调度算法用于WeightedRoundRobin, Envoy也是使用了 EOF调度算法 10. 支持请求主体用于流量镜像 11. 增加了 ElasticAPM作为traefik的tracing系统。 12. Traefik的Dashboard增加了UDP的页面 13. Traefik也增加了黑暗主题
极客运维圈
2020/06/01
2.9K0
Traefik2.2从坑出发
Kubernetes生态Ingress组件Traefik v2.0浅析
上一篇文章简单介绍了下Kubernetes生态的几个组件,这篇文章重点讲解下其中的Traefik组件,Traefik组件类似与Nginx,可以为整个集群做服务暴露、域名控制等等的作用,目前Traefik主要分为两个版本,v1.x与v2.x,这两个版本之间差距较大,让人感觉在使用不同的软件。本篇文章是以v2.x版本为基础来演示的,相关脚本代码都在Github仓库https://github.com/lateautumn4lin/KubernetesResearch里面,大家使用的时候可以切换目录到ClusterEcology/initTraefik下面。
云爬虫技术研究笔记
2020/02/19
9420
Kubernetes折腾记4:ingress部署及使用
上一节,我们分享了如何对外暴露服务,今天我们再来看另外一种对外暴露服务的方式:ingress。那什么是ingress呢?它跟我们之前接触的暴露服务又有什么不同?
yaxin
2021/03/04
1.4K0
Kubernetes折腾记4:ingress部署及使用
相关推荐
深入玩转K8S之如何访问业务应用(Traefik-ingress配置https篇)
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
首页
学习
活动
专区
圈层
工具
MCP广场
首页
学习
活动
专区
圈层
工具
MCP广场