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

晋城北京网站建设咸阳企业做网站

晋城北京网站建设,咸阳企业做网站,一条龙平台,网站开发需要什么开发工具目录 介绍ingress 安装 基本使用请查看域名重定向前后端分离配置默认证书配置指定证书配置白名单配置黑名单配置Annotations 配置ConfigMap 配置 匹配请求头速率限制限制客户端的最大连接数限制每秒钟段并发连接数限制每分钟段并发请求突发访问限制限制传输速度速率限制白名单 … 目录 介绍ingress 安装 基本使用请查看域名重定向前后端分离配置默认证书配置指定证书配置白名单配置黑名单配置Annotations 配置ConfigMap 配置 匹配请求头速率限制限制客户端的最大连接数限制每秒钟段并发连接数限制每分钟段并发请求突发访问限制限制传输速度速率限制白名单 灰度发布基于权重配置基于 Header 控制流量走向基于 Cookie 控制流量走向 自定义错误页面基本认证 介绍 本次所有操作都是在K8S 1.26.14 上面操作太老的版本不知道会不会有问题。 更多 Ingress 配置请查看ingress-nginx 官网 ingress 安装 基本使用请查看 点击跳转 域名重定向 配置成功以后再次访问会直接跳转到百度首页。 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: prometheus-ingressnamespace: monitoringannotations:## 配置域名重定向将百度的域名改成自己业务需要的即可nginx.ingress.kubernetes.io/permanent-redirect: https://www.baidu.com spec:ingressClassName: nginxrules:- host: prometheus.monitoring.cnhttp:paths:- backend:service:name: prometheus-k8sport:name: webpath: /pathType: Prefixtls:- hosts:- prometheus.monitoring.cnsecretName: prometheus.monitoring.cn修改域名重定向的同时还可以修改状态码默认是301本次修改成308. apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: prometheus-ingressnamespace: monitoringannotations:## 配置域名重定向将百度的域名改成自己业务需要的即可nginx.ingress.kubernetes.io/permanent-redirect: https://www.baidu.com## 修改状态码nginx.ingress.kubernetes.io/permanent-redirect-code: 308 spec:ingressClassName: nginxrules:- host: prometheus.monitoring.cnhttp:paths:- backend:service:name: prometheus-k8sport:name: webpath: /pathType: Prefixtls:- hosts:- prometheus.monitoring.cnsecretName: prometheus.monitoring.cn再次访问的时候可以看到状态码已经修改了在网页调试里面查看 前后端分离配置 部署好以后用这个域名访问即可prometheus.monitoring.cn/test在nginx上面这个配置就是地址重写。 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: prometheus-ingressnamespace: monitoringannotations:nginx.ingress.kubernetes.io/use-regex: true ## 启用正则表达式匹配路径nginx.ingress.kubernetes.io/rewrite-target: /$2 spec:ingressClassName: nginxrules:- host: prometheus.monitoring.cnhttp:paths:- backend:service:name: prometheus-k8sport:name: webpath: /test(/|$)(.*)pathType: ImplementationSpecifictls:- hosts:- prometheus.monitoring.cnsecretName: prometheus.monitoring.cn默认证书配置 测试环境可以用openssl 生成一个证书即可正常生产环境是需要购买的证书才可以的要不浏览器会提示不安全。 比如申请的域名是以 *.monitoring.cn 的证书 就可以设置默认域名。 在 K8S上面创建证书。 ## 创建证书 kubectl create secret tls monitoring.cn --key monitoring.cn.key --cert monitoring.cn_bundle.pem -n ingress-nginx## 查看创建的证书 [rootmaster01 ~]# kubectl get secrets -n ingress-nginx NAME TYPE DATA AGE monitoring.cn kubernetes.io/tls 2 65s修改 ingress-nginx 配置 kubectl edit daemonsets.apps -n ingress-nginx ingress-nginx-controller### 找到这一行spec:containers:- args:- /nginx-ingress-controller### 在此处添加 “- --default-ssl-certificateingress-nginx/monitoring.cn” 等号后面写命名空间/后面加上名字 不是非得创建到 ‘ingress-nginx’理论上那个命名空间都可以- --default-ssl-certificateingress-nginx/monitoring.cn- --publish-service$(POD_NAMESPACE)/ingress-nginx-controller- --election-idingress-nginx-leader保存退出即可。 使用方法 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: prometheus-ingressnamespace: monitoring spec:ingressClassName: nginxrules:- host: prometheus.monitoring.cnhttp:paths:- backend:service:name: prometheus-k8sport:name: webpath: /pathType: PrefixNGINX 将提供默认证书但不会强制 HTTPS 重定向。就是用HTTP访问也行HTTPS访问也行。 如果需要强制转换HTTPS访问 在后面添加 tls 即可 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: prometheus-ingressnamespace: monitoring spec:ingressClassName: nginxrules:- host: prometheus.monitoring.cnhttp:paths:- backend:service:name: prometheus-k8sport:name: webpath: /pathType: Prefixtls:- hosts:- prometheus.monitoring.cn指定证书配置 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: prometheus-ingressnamespace: monitoring spec:ingressClassName: nginxrules:- host: prometheus.monitoring.cnhttp:paths:- backend:service:name: prometheus-k8sport:name: webpath: /pathType: Prefixtls:- hosts:- prometheus.monitoring.cnsecretName: prometheus.monitoring.cn ## 这行要是注释了就是用默认的证书没注释就是使用指定证书。白名单配置 白名单建议使用 annotations 配置这个只对的单个Ingress生效。 添加 nginx.ingress.kubernetes.io/whitelist-source-range 注释以实现白名单。未授权的 IP 访问会提示 403。 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: prometheus-ingressnamespace: monitoringannotations: ## 多个IP 用逗号隔开。nginx.ingress.kubernetes.io/whitelist-source-range: 192.168.1.175 spec:tls:- hosts:- prometheus.monitoring.cningressClassName: nginxrules:- host: prometheus.monitoring.cnhttp:paths:- backend:service:name: prometheus-k8sport:name: webpath: /pathType: Prefix黑名单配置 黑名单建议使用 ConfigMap 配置此配置对整个集群段 Ingress 都生效。 Annotations 配置 这个注释可以指定具体的IP地址也可以写IP段的地址以逗号分隔举例192.168.1.0/24,192.168.1.2 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: prometheus-ingressnamespace: monitoringannotations: ## 添加这个注释以开启黑名单设置nginx.ingress.kubernetes.io/denylist-source-range: 172.31.163.46 spec:tls:- hosts:- prometheus.monitoring.cningressClassName: nginxrules:- host: prometheus.monitoring.cnhttp:paths:- backend:service:name: prometheus-k8sport:name: webpath: /pathType: PrefixConfigMap 配置 注意此操作全局生效修改完保存即可生效老版本的 Ingress-nginx 可能需要重启pod。 kubectl edit cm -n ingress-nginx ingress-nginx-controllerapiVersion: v1 data:allow-snippet-annotations: true## 添加如下配置即可IP 段也可以添加用逗号隔开即可。denylist-source-range: 172.31.163.46 kind: ConfigMap metadata:annotations:meta.helm.sh/release-name: ingress-nginxmeta.helm.sh/release-namespace: ingress-nginxlabels:app.kubernetes.io/component: controllerapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/managed-by: Helmapp.kubernetes.io/name: ingress-nginxapp.kubernetes.io/part-of: ingress-nginxapp.kubernetes.io/version: 1.8.1helm.sh/chart: ingress-nginx-4.7.1name: ingress-nginx-controllernamespace: ingress-nginx匹配请求头 当请求头匹配到是用手机访问段就跳转到百度。 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: prometheus-ingressnamespace: monitoringannotations:nginx.ingress.kubernetes.io/server-snippet: |set $agentflag 0;if ($http_user_agent ~* (Mobile) ){set $agentflag 1;}if ( $agentflag 1 ) {return 301 https://www.baidu.com;} spec:tls:- hosts:- prometheus.monitoring.cningressClassName: nginxrules:- host: prometheus.monitoring.cnhttp:paths:- backend:service:name: prometheus-k8sport:name: webpath: /pathType: Prefix速率限制 本次仅展示部分 Ingress 配置。 限制客户端的最大连接数 nginx.ingress.kubernetes.io/limit-connections 是用于限制每个客户端与后端服务的最大并发连接数。当前设置段同一客户端最大连接数是10个这种限制可以帮助防止某些类型的 DoS攻击。超出这个限制的连接请求将被 NGINX 阻止返回 HTTP 503 错误。 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: example-ingressnamespace: defaultannotations:nginx.ingress.kubernetes.io/limit-connections: 10 spec:限制每秒钟段并发连接数 nginx.ingress.kubernetes.io/limit-rps 是用于限制每秒钟每个客户端 IP 地址可以发送到后端服务的请求数量当前设置为每秒并发五个连接。 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: example-ingressnamespace: defaultannotations:nginx.ingress.kubernetes.io/limit-rps: 5 spec:rules:限制每分钟段并发请求 这个和每秒的那个限制基本一致。当前配置是每分钟允许同一个客户端并发100个请求。 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: example-ingressnamespace: defaultannotations:nginx.ingress.kubernetes.io/limit-rpm: 100 spec:突发访问限制 nginx.ingress.kubernetes.io/limit-burst-multiplier 是用于控制请求速率限制中的突发请求数。它在配置 limit-rps每秒请求数限制或 limit-rpm每分钟请求数限制时一起使用以允许短时间内超过设定请求速率的突发请求。 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: example-ingressnamespace: defaultannotations:nginx.ingress.kubernetes.io/limit-rps: 10nginx.ingress.kubernetes.io/limit-burst-multiplier: 2 spec:工作原理 nginx.ingress.kubernetes.io/limit-rps: “10”每个客户端 IP 每秒最多允许 10 个请求。nginx.ingress.kubernetes.io/limit-burst-multiplier: “2”允许的突发请求数是 10 的两倍即 20 个请求。 这意味着在一个短时间窗口内最多可以处理 20 个请求超过 limit-rps 限制的 10 个正常请求数之后请求速率将受 limit-rps 的限制。 限制传输速度 nginx.ingress.kubernetes.io/limit-rate-after 是用于控制在限制速率Rate Limiting生效之前将以当前带宽的最大速率这项设置与 nginx.ingress.kubernetes.io/limit-rate 配合使用用于管理响应速率的上限。 注意此功能必须在启用代理缓冲的情况下使用。如果需要全局配置修改ConfigMap即可。 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: example-ingressnamespace: defaultannotations:nginx.ingress.kubernetes.io/proxy-buffering: on # 启用代理缓冲默认情况是禁用段的nginx.ingress.kubernetes.io/proxy-buffers: 8 16k # 8 个 16KB 缓冲区nginx.ingress.kubernetes.io/proxy-buffer-size: 16k # 初始缓冲区大小 16KBnginx.ingress.kubernetes.io/limit-rate: 1024 # 每秒最多传输 1024 字节1KBnginx.ingress.kubernetes.io/limit-rate-after: 5120 # 传输超过 5120 字节后开始限速5k spec:也可以直接使用这条 nginx.ingress.kubernetes.io/limit-rate: “1024”既每秒传输1Kb必须启用代理缓冲 工作原理 客户端在请求前 5120 字节的数据时数据会以网络能够支持的最高速率传输。当传输的数据量超过 5120 字节后速率限制生效传输速率限制为 1024 字节/秒1KB/秒。 速率限制白名单 nginx.ingress.kubernetes.io/limit-whitelist 是用于指定不受速率限制rate limiting影响的客户端 IP 地址或 IP 地址范围。 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: example-ingressnamespace: defaultannotations:nginx.ingress.kubernetes.io/limit-rate: 1024 # 每秒传输限制 1KBnginx.ingress.kubernetes.io/limit-whitelist: 192.168.1.0/24,10.0.0.1 # 白名单 spec:白名单中的 IP 不受每秒传输1Kb速度的限制。 灰度发布 基于权重配置 nginx.ingress.kubernetes.io/canary-weight基于整数百分比的随机请求应路由到金丝雀入口中指定的服务。权重为 0 表示此金丝雀规则不会将任何请求发送到金丝雀入口中的服务。 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:labels:k8s.kuboard.cn/layer: webk8s.kuboard.cn/name: test01name: test01namespace: appsannotations:nginx.ingress.kubernetes.io/canary: true## 有百分之10的流量回到这个服务剩下百分之90的流量到下面的那个服务。nginx.ingress.kubernetes.io/canary-weight: 10 spec:ingressClassName: nginxrules:- host: example.comhttp:paths:- backend:service:name: test01port:number: 80path: /pathType: Prefix --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata:labels:k8s.kuboard.cn/layer: webk8s.kuboard.cn/name: test02name: test02namespace: apps spec:ingressClassName: nginxrules:- host: example.comhttp:paths:- backend:service:name: test02port:number: 80path: /pathType: Prefix基于 Header 控制流量走向 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:labels:k8s.kuboard.cn/layer: webk8s.kuboard.cn/name: test01name: test01namespace: appsannotations:nginx.ingress.kubernetes.io/canary: truenginx.ingress.kubernetes.io/canary-by-header: X-Canarynginx.ingress.kubernetes.io/canary-by-header-value: always spec:ingressClassName: nginxrules:- host: example.comhttp:paths:- backend:service:name: test01port:number: 80path: /pathType: Prefix --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata:labels:k8s.kuboard.cn/layer: webk8s.kuboard.cn/name: test02name: test02namespace: apps spec:ingressClassName: nginxrules:- host: example.comhttp:paths:- backend:service:name: test02port:number: 80path: /pathType: Prefix测试方法 不添加请求头的时候是访问 test02 。 [rootmaster01 ~]# curl example.com test022222添加请求头的时候是访问 test01请求时候命令行里面的键值对必须和 Ingress 里面的对应上。 [rootmaster01 ~]# curl -H X-Canary: always example.com test0111111基于 Cookie 控制流量走向 nginx.ingress.kubernetes.io/canary-by-cookie用于通知 Ingress 将请求路由到 Canary Ingress 中指定的服务的 cookie。当 cookie 值设置为 时always它将被路由到 Canary。当 cookie 设置为 时never它将永远不会被路由到 Canary。对于任何其他值将忽略 cookie并根据优先级将请求与其他 Canary 规则进行比较。 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:labels:k8s.kuboard.cn/layer: webk8s.kuboard.cn/name: test01name: test01namespace: appsannotations:nginx.ingress.kubernetes.io/canary: truenginx.ingress.kubernetes.io/canary-by-cookie: canary-user spec:ingressClassName: nginxrules:- host: example.comhttp:paths:- backend:service:name: test01port:number: 80path: /pathType: Prefix --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata:labels:k8s.kuboard.cn/layer: webk8s.kuboard.cn/name: test02name: test02namespace: apps spec:ingressClassName: nginxrules:- host: example.comhttp:paths:- backend:service:name: test02port:number: 80path: /pathType: Prefix测试方法 将 cookie 的值设置为always是将访问test01将值设置为never将访问 test02. [rootmaster01 ~]# curl -b canary-useralways example.com test0111111或者不写cookie 或者值乱写也是访问test02 [rootmaster01 ~]# curl -b canary-usernever example.com test022222Canary 规则按优先顺序进行评估。优先顺序如下canary-by-header - canary-by-cookie - canary-weight 自定义错误页面 定义服务托管页面后段程序为了演示使用 nginx 部署。 部署自定义页面 配置文件。 apiVersion: v1 kind: ConfigMap metadata:name: custom-error-pagesnamespace: apps data:404.html: |htmlheadtitle404 Not Found/title/headbodyh1404 Not Found/h1pThe page you are looking for was not found./p/body/html502.html: |htmlheadtitle502 Bad Gateway/title/headbodyh1502 Bad Gateway/h1pThere was a problem with the upstream server./p/body/html503.html: |htmlheadtitle503 Service Unavailable/title/headbodyh1503 Service Unavailable/h1pThe service is currently unavailable. Please try again later./p/body/html部署 nginx Deployment 服务 apiVersion: apps/v1 kind: Deployment metadata:name: error-pagesnamespace: apps spec:replicas: 1selector:matchLabels:app: error-pagestemplate:metadata:labels:app: error-pagesspec:containers:- name: nginximage: nginx:alpinevolumeMounts:- name: error-pagesmountPath: /usr/share/nginx/htmlvolumes:- name: error-pagesconfigMap:name: custom-error-pages --- apiVersion: v1 kind: Service metadata:name: error-pagesnamespace: apps spec:ports:- port: 80selector:app: error-pages部署 Ingress 同一个命名空间直接写SVC名字即可要是不同的命名空间情网下看。 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:labels:k8s.kuboard.cn/layer: webk8s.kuboard.cn/name: test02name: test02namespace: appsannotations:nginx.ingress.kubernetes.io/custom-http-errors: 404,500nginx.ingress.kubernetes.io/default-backend: error-pages spec:ingressClassName: nginxrules:- host: example.comhttp:paths:- backend:service:name: test02port:number: 80path: /pathType: Prefix不同命名空间配置 apiVersion: v1 kind: Service metadata:name: error-pagesnamespace: apps spec:type: ExternalNameexternalName: error-pages.apps.svc.cluster.localports:- port: 80基本认证 创建用户名和密码 htpasswd -c auth user## 没有这个命令直接yum安装 yum install -y httpd-tools创建 secret kubectl create secret generic auth-secret --from-fileauth -apps创建Ingress apiVersion: networking.k8s.io/v1 kind: Ingress metadata:labels:k8s.kuboard.cn/layer: webk8s.kuboard.cn/name: test02name: test02namespace: appsannotations:nginx.ingress.kubernetes.io/auth-type: basic ## 指定使用基本身份验证nginx.ingress.kubernetes.io/auth-secret: auth-secret ## 指定刚刚创建的 secretnginx.ingress.kubernetes.io/auth-realm: Authentication Required ## 对话框面熟文字就是在网页弹出的那个输入密码那个对话框的面熟问题写什么都可以。 spec:ingressClassName: nginxrules:- host: example.comhttp:paths:- backend:service:name: test02port:number: 80path: /pathType: Prefix在页面访问会提示输入账号密码。 官网还有更多Ingress 配置我这里只列出了经常能用到的。 Ingress-Nginx 官方文档
http://www.laogonggong.com/news/128623.html

相关文章:

  • php与mysql网站开发网站推广方式推荐
  • 建设学院实验网站的作用怎么用小皮创建网站
  • 做法城乡建设部网站河池市网站建设
  • 同城便民网站开发广州建设工程交易中心南沙交易部
  • 校园网站建设招标公告wordpress登陆页美化
  • 找培训学校去哪个网站建筑网课学习观后感
  • 小城镇建设期刊网站网站建设的上机报告
  • 做膜结构那个网站好高校档案网站建设的目的是什么意思
  • 博客 建立网站王也身高
  • 中国著名摄影网站烟台高端品牌网站建设
  • 企业官方网站建设方案网络运营课程
  • 肇庆市住房和城乡建设局网站wordpress dirname(__file__)
  • 做一个商务平台网站的费用最珠海app下载官网
  • 企业网站硬件方面建设卫辉网站建设
  • jsp 网站开发学信网为什么不承认开放大学
  • 厦门市建设局电工报名网站建设银行陕西分行网站
  • 威海建设集团信息网站wordpress自动提交
  • 网站制作教程 百度文库如何做旅游网站推销
  • 工程公司手机网站如何把网站放在主机上
  • 做网站开发公司通过网页制作能赚钱吗
  • 做视频网站视频存放问题游戏开发软件排行榜前十名
  • 做网站的结论单位网站建设费合同印花税
  • 免费网站模板库网站素材设计
  • 丽水网站推广公司网站版块设计是什么意思
  • 中小学网站建设规范网站建设的市场定位
  • 做珠宝建个网站推广怎么样网店营销与推广策划方案
  • 在线免费源码资源源码站无限责任公司
  • 郑州百姓网征婚交友seo查询 工具
  • 济南网站建设 泉诺wordpress接入qq互联
  • 网站大全app下载html引导页源码