广告
返回顶部
首页 > 资讯 > 后端开发 > Python >traefik Ingress https配置
  • 303
分享到

traefik Ingress https配置

traefikIngresshttps 2023-01-31 08:01:40 303人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

1、理解Ingress简单的说,ingress就是从kubernetes集群外访问集群的入口,将用户的URL请求转发到不同的service上。Ingress相当于Nginx、apache等负载均衡方向代理服务器,其中还包括规则定义,即URL

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 在整个集群中的权限。

 

环境介绍

系统k8s版本Dockerip主机名配置
Centos 7.61.18.119.03.510.212.20.94k8s-master2核4G
centos 7.61.18.119.03.510.212.20.240k8s-node012核8G

 

 

 

 

 

 

traefik版本

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

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

 

配置证书

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

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

mkdir /etc/kubernetes/ssl

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

目录结构如下:

./
├── tls.crt
└── tls.key

创建secret

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

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

kubectl label nodes k8s-node01 edgenode=true

配置yaml

traefik.yaml

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

---
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,将域名解析到这所部署的主机即可。

 

开始部署

kubectl apply -f traefik.yaml

 

访问traefik ui

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

10.212.20.240  traefikui.test.com

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

 

访问http和https

http://traefikui.test.com
https://traefikui.test.com

效果如下:

1.png

 

 

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

查看pod

# kubectl get pods -n test
NAME                           READY   STATUS    RESTARTS   AGE
web-wxbweb-845994566c-4dcxt    1/1     Running   2          2d23h

查看svc

# 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

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

 

发布一下

kubectl apply -f wxbweb-traefik.yaml

 

新增一条hosts记录

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


--结束END--

本文标题: traefik Ingress https配置

本文链接: https://www.lsjlt.com/news/193695.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • traefik Ingress https配置
    1、理解Ingress简单的说,ingress就是从kubernetes集群外访问集群的入口,将用户的URL请求转发到不同的service上。Ingress相当于nginx、apache等负载均衡方向代理服务器,其中还包括规则定义,即URL...
    99+
    2023-01-31
    traefik Ingress https
  • nginx ingress限速怎么配置
    本篇内容介绍了“nginx ingress限速怎么配置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!从业务场景出发在业务开发过程中...
    99+
    2023-07-06
  • 配置HTTPS服务器
    配置HTTPS服务器配置HTTPS主机,必须在server配置块中打开SSL协议,还需要指定服务器端证书和密钥文件的位置:server {listen 443;server_name www.example.com;ssl on;ssl_c...
    99+
    2023-06-04
  • nginx本地配置https
    WIN10环境Nginx配置本地项目HTTPS 安装chocolatey 管理员身份打开cmd 在cmd窗口运行以下命令 @"%SystemRoot%\System32\WindowsPo...
    99+
    2023-09-13
    nginx https php
  • nginx ingress代理websocket流量的配置方法
    目录1 概述:1.1 环境2 nginx ingress是否支持代理websocket流量3 ingress样例4 部署4.1 部署nginx ingress4.2 设置域名4.3 ...
    99+
    2022-11-13
  • Nginx配置HTTPS访问(SLL证书配置)
    一、购买证书 1.登录阿里云账号,进入控制台,找到SSL证书服务 2.点击免费证书 2.1.立即购买 选择数量20,每个账户每年有20个免费证书。同意协议后点击立即购买。 2.2.创建证书并且申请  2.3.申请证书 2.4.认证...
    99+
    2023-09-01
    服务器 阿里云 ssl nginx php
  • 怎么搞定HTTPS 配置
    本篇文章给大家分享的是有关怎么搞定HTTPS 配置,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。01、关于 FreeSSL.cnFreeSSL.cn 是一个免费提供 HTTPS...
    99+
    2023-06-17
  • SpringBoot的HTTPS配置实现
    HTTPS 配置 由于HTTPS具有良好的安全性,在开发中得到了越来越广泛的应用,像微信公众号、小程序等的开发都要使用HTTPS来完成。对于个人开发者而言,一个HTTPS 证书的价格...
    99+
    2023-05-15
    SpringBoot HTTPS配置 SpringBoot HTTPS
  • Nginx配置https的实现
    目录1:  准备https证书2: 准备nginx  ssl 模块3: 配置  ssl证书4: 浏览器  https 协议访问, 访问成功则 https 配置成功了。 1:  准备h...
    99+
    2022-11-12
  • Springboot内置tomcat配置HTTPS证书
    生成SSL证书把证书放到项目根目录下面,比如我之前给安信SSL网站安装证书的时候,就放在:把证书再放到项目resources目录下,与application.properties同一目录,然后修改application.properties...
    99+
    2023-06-04
  • 如何使用SpringBoot配置https
    这篇文章给大家分享的是有关如何使用SpringBoot配置https的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。SpringBoot配置https(SSL证书)最近在做微信小程序,https是必须条件仅需三步S...
    99+
    2023-06-22
  • 配置、查看em https端口
    https://database-hostname:portnumber/em/查non-CDB的端口号select dbms_xdb_config.gethttpsport() from dua...
    99+
    2022-10-18
  • Nginx配置Https详细教程
    本篇内容主要讲解“Nginx配置Https详细教程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Nginx配置Https详细教程”吧!安装 nginx有可能你当...
    99+
    2022-10-19
  • Asp.netCore项目配置HTTPS支持
    最近把公司的一些产品迁移到了.net core下,随之而来了一个新的问题:在公网部署的环境下,如何在Kestrel的self host模式下部署Https。本文这里就简单的介绍下.n...
    99+
    2022-11-13
  • Jenkins基于https的k8s配置
    jenkins 连接低版本的k8s时,不需要验证。但是新版本的启用了https和角色管理 二、安装kubernetes插件登录jenkins,点击 Manage Jenkins --> Manage Pl...
    99+
    2023-01-31
    Jenkins https k8s
  • nginx 配置代理ip访问https的域名配置
    目录 问题背景 解决方式 正向代理:  反向代理:  通俗点儿一句话,正向与反向的区别: 问题背景 在某些单位或机构内部,访问互联网接口需要通过指定的服务器去访问,那我们就需要通过代理 ip 和 端口去访问外网域名。 示例:如何通过指定...
    99+
    2023-09-17
    nginx tcp/ip https 正向代理 反向代理
  • 腾讯云服务器配置https
    1. 什么是 HTTPS HTTPS(Hyper Text Transfer Protocol Secure)是一种通过计算机网络进行安全通信的协议。HTTPS 的主要作用是保护网站的隐私和安全,防止黑客攻击和信息泄露。HTTPS 通过使...
    99+
    2023-10-26
    腾讯 服务器配置 https
  • Nginx 配置 Https 免费证书访
    现在做博客或者做网站没有 https 已经不行了,就记录一下我在腾讯云配置 https 的过程吧,非常简单,1个小时就可以了。 还涉及到 http 访问自动转发到 https 访问路径。同时把不带 www 的顶级域名转发到带 www 的...
    99+
    2023-01-31
    证书 Nginx Https
  • SpringBoot的HTTPS配置如何实现
    这篇文章主要讲解了“SpringBoot的HTTPS配置如何实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot的HTTPS配置如何实现”吧!HTTPS 配置由于HTTPS...
    99+
    2023-07-06
  • 阿里云服务器配置https
    阿里云服务器配置https,可以按照以下步骤进行: 首先,您需要安装 https://api.aliyun.com/ 和 https://yunshangyebaidu.com/ 。您可以在阿里云官网或者阿里云应用市场上下载最新版的 h...
    99+
    2023-10-26
    阿里 服务器配置 https
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作