当前位置: 首页 > news >正文

k8s---ingress对外服务(traefik)

目录

ingress的证书访问

traefik

traefik的部署方式:

deamonset

deployment

nginx-ingress与traefix-ingress相比较

nginx-ingress-controller

ui访问

deployment部署


ingress的证书访问

ingress实现https代理访问:

需要证书和密钥

创建证书 密钥

secrets 保存密钥信息,部署pod时把secrets挂载到pod

创建密钥和证书

#创建密钥和证书
openssl req -x509 -sha256 -nodes -days 356 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=nginxsvc/O=nginxsvc"
req: 生成证书文件的
x509: 生成x.509自签名的证书
-sha256:表示使用sha-256的散列算法
-nodes:表示生成的密钥不加密
-days 365: 证书有效期是365天
-newkey rsa:2048: RSA的密钥对,长度2048位
-keyout tls.key -out tls.crt: 密钥文件 key 证书文件 crt
-subj"/CN=nginxsvc/O=nginxsvc”: 主题,CN common name O : organization#用secret保存密钥和证书
kubectl create secret tls tls-secret --key tls.key --cert tls.crt
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-httpslabels:app: https
spec:replicas: 3selector:matchLabels:app: httpstemplate:metadata:labels:app: httpsspec:containers:- name: nginximage: nginx:1.22
---
apiVersion: v1
kind: Service
metadata:name: nginx-svc
spec:ports:- port: 80targetPort: 80protocol: TCPselector:app: https
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: nginx-ingress-https
spec:tls:- hosts:- www.123ccc.comsecretName: tls-secret
#加密的配置保存在ingress,请求---ingress-controller--ingress---转发到service
#在代理进行时,就要先验证密钥对,然后再把请求转发service到相应的podrules:- host: www.123ccc.comhttp:paths:- path: /pathType: Prefixbackend:service:name: nginx-svcport:number: 80

访问
https://www.123ccc.com:31505/
或
curl -k https://www.123ccc.com:31505

nginx的登录账户认证

yum -y install httpd
#借用httpd的htpasswd
htpasswd -c auth zyg
New password: 123456
Re-type new password: 123456#生成加密
kubectl create secret generic basic-auth --from-file=auth

basic-auth.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: ingress-authannotations:
#开启认证模块的配置nginx.ingress.kubernetes.io/auth-type: basic
#设置认证类型为basic,这是k8s自带的认证加密的模块nginx.ingress.kubernetes.io/auth-secret: basic-auth
#把认证的加密模块导入到ingress当中nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required -lyw'
#设置认证窗口的提示信息。
spec:rules:- host: www.zyg1.comhttp:paths:- path: /pathType: Prefixbackend:service:name: nginx-svcport:number: 80

​访问
https://www.zyg1.com:31505

重定向

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: nginx-rewriteannotations:nginx.ingress.kubernetes.io/rewrite-target: https://www.zyg1.com:31505
#访问页面会跳转到指定的页面。
spec:rules:- host: www.liukgc.comhttp:paths:- path: /pathType: Prefixbackend:service:name: nginx-svcport:number: 80
kubectl apply -f ingress-rewirte.yaml

访问
​​https://www.liukgc.com:31505

traefik

traefik ingress-controller--deployment

traefik是一个为了让部署微服务更加快捷而诞生的一个http方向代理,负载均衡,

traefix设计时就能够实时的和k8s api交互,感知后端口service以及pod的变化,可以自动更新配置和重载。

可以自带感知后端变化

traefik的部署方式:

deamonset

优点-特点:每个节点都会部署一个traefik,节点感知可以自动发现,更新容器的配置。不需要手动重载

缺点:占用资源大,大型集群中,deamonset可能会运行多个traefik实例,尤其是节点上不需要大量容器运行的情况下,无法扩缩容

部署对外集群,对外的业务会经常变更,deamonset可以更好的发现服务配置变更

deployment

优点:集中办公控制,可以使用少量的实例来运行处理整个集群的流量。更容易升级和维护。

缺点:deployment的负载均衡不会均分到每个节点。需要手动更新。他无法感知容器内部配置的变化。

部署对内集群:对内的相对稳定,更新和变化也比较少,适合deployment.

traffic-type:internal 对内服务

traffic-type:external 对外服务

nginx-ingress与traefix-ingress相比较

nginx-ingress 相对较慢

traefix-ingress 自带更新的的重载快,更方便

工作原理都一样,都是7层代理,都可以动态的更新配置,都可以自动发现服务

traefik的并发能力只有nginx-ingress的6成 60%

nginx-ingress-controller

ui访问

#权限
wget  https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/traefik-rbac.yaml#deamonset的
wget  https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/traefik-ds.yaml#deployment的
wget  https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/traefik-deployment.yaml#ui的
wget  https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/ui.yaml

kubectl apply -f  traefik-rbac.yaml
kubectl apply -f  traefik-deployment.yaml
kubectl apply -f  ui.yaml

访问ui
http://192.168.10.10:30488/dashboard/

deployment部署

123.yaml

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-traefixlabels:nginx: traefik
spec:replicas: 3selector:matchLabels:nginx: traefiktemplate:metadata:labels:nginx: traefikspec:containers:- name: nginximage: nginx:1.22
---
apiVersion: v1
kind: Service
metadata:name: nginx-traefix-svc1
spec:ports:- port: 80targetPort: 80protocol: TCPselector:nginx: traefik
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: nginx-traefix-test1
spec:rules:- host: www.yyw.comhttp:paths:- path: /pathType: Prefixbackend:service:name: nginx-traefix-svc1port:number: 80

做映射

访问
http://www.yyw.com:30227/


总结

nginx-ingress-controller

deployment+loadbalancer:要公有云提供的负载均衡的公网地址

daemonset+hostbnetwork+nodeselector: 和节点服务共享网络,一个节点只能部署一个controller pod,使用宿主机的端口性能最好,适合大并发

deployment+NodePort:最常见、最常用,最简单的方法。但行呢个不太好,多了一层nat地址转发

适用于大并发

traefik-ingress-controller:

daemonset 对外 可以自动更新容器的配置 host节点网络 deployment 对内 无法自动自动更新配置 Nodeport

适用于小的集群,并发是ingress的

https: 1.生成证书密钥 2.创建secret,保存证书和密钥

3.创建ingress把secret导入

加密认证: 1、htpasswd -c auth 认证文件只能是auth 2、 创建ingress:

nginx.ingress.kubernets.io/auth-type: basic
#声明认证类型
nginx.ingress.kubernets.io/auth-secret: basic-auth
#导入认证的密钥文件,sercet的方式存储集群当中

重定向:

nginx.ingress.kubernetes.io/rewrite-target: https://123ccc.com:31505

在ingress文件当中声明的URI都会跳转到这个地址

http://www.lryc.cn/news/285999.html

相关文章:

  • MySQL-SQL-DQL
  • Docker(十四)Etcd 项目
  • EtherNet/IP开发:C++开发CIP源代码
  • 【算法题】68. 文本左右对齐
  • PHP 调用 e 签宝接口签名指南
  • 穿越Flink的时间隧道:解锁实时数据之窗,掌握流处理之巅
  • 服务器与Ajax
  • Electron项目架构方案心得
  • Java中创建List接口、ArrayList类和LinkedList类的常用方法(一)
  • 顶级开源社区开发者体验实践分享
  • STM32之RTC实时时钟
  • Java JVM 堆、栈、方法区详解
  • Oracle篇—分区表和分区索引的介绍和分类(第一篇,总共五篇)
  • Vue中的模式和环境变量
  • 用ChatGPT教学、科研!亚利桑那州立大学与OpenAI合作
  • 问题解决:django模型查询报错,找不到数据库表
  • 持续集成工具Jenkins的使用之安装篇(一)
  • 【JavaScript】面向后端快速学习 笔记
  • 笨蛋学设计模式行为型模式-命令模式【19】
  • windows用msvc编译opencv、opencv-python、opencv_contrib、cuda
  • JVM实战篇:GC调优
  • C# 获取QQ会话聊天信息
  • Java中的内存溢出与内存泄漏深度解析
  • 计算机网络安全——密码学入门
  • go语言(八)---- map
  • Flutter:跨平台移动应用开发的未来
  • 二维码地址门牌管理系统:智慧城市新篇章
  • 学习JavaEE的日子 day14 继承,super(),this(),重写
  • 一文梳理Windows自启动位置
  • 【Java 设计模式】行为型之策略模式