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

淄博做淘宝网站seo草根博客

淄博做淘宝网站,seo草根博客,短视频运营策划,网站搭建什么意思文章目录 K8s Ingress 详解Ingress 资源清单Ingress 基于URL 实现路由Ingress 基于名称虚拟主机Ingress 实现HTTPS创建TLS 证书创建Secrets配置ingress Ingress RewriteIngress 灰度发布Ingress 配置认证 K8s Ingress 详解 Ingress 资源清单 apiVersion: networking.k8s.io/v…

文章目录

  • K8s Ingress 详解
    • Ingress 资源清单
    • Ingress 基于URL 实现路由
    • Ingress 基于名称虚拟主机
    • Ingress 实现HTTPS
      • 创建TLS 证书
      • 创建Secrets
      • 配置ingress
    • Ingress Rewrite
    • Ingress 灰度发布
    • Ingress 配置认证

K8s Ingress 详解

Ingress 资源清单

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata: name: <string>namespace: <string>
spec:ingressClassName: "nginx"   # 适配的Ingress控制器rules: <[]Object>   #  Ingress 规则列表- host: <string>http: <Object>  paths: <[]Object>   # 虚拟主机PATH 定义列表,列表由path 和 backend 组成- path: <string>    # 匹配以什么开头,类似nginx 中的location的作用pathType: <string>  # Prefix 前缀匹配,不区分大小写 Exact 精确匹配URL, 区分大小写backend: <Object>   service: <Object>  # 关联的后端Servicename: <string>   # 后端Service 的名称port: <Object>   # 后端Service 端口的对象name: <string>  # 端口的名称number: <integr>  # 端口号

Ingress 基于URL 实现路由

注: 同一域名,不同的URL调度到不同的 Service

在这里插入图片描述

部署demoapp

apiVersion: apps/v1
kind: Deployment
metadata:name: app-prod
spec:replicas: 2selector:matchLabels:app: demoapptemplate:metadata:labels:app: demoappspec:containers:- name: demoimage: nginx:1.7.9imagePullPolicy: IfNotPresentports:- containerPort: 80---
apiVersion: v1
kind: Service
metadata:name: app-svc
spec:type: ClusterIPselector:app: demoappports:- port: 80targetPort: 80

部署demo tomcat

apiVersion: apps/v1
kind: Deployment
metadata:name: tomcat-prod
spec:replicas: 2selector:matchLabels:app: tomcattemplate:metadata:labels:app: tomcatspec:containers:- name: javaimage: tomcat:9.0.6imagePullPolicy: IfNotPresentports:- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:name: tomcat-svc
spec:type: ClusterIPselector:app: tomcatports:- port: 8080targetPort: 8080

部署ingress

  • 默认URL:用户请求foo.ingress.net/app,代理到后端请求也会带上/app,后端无法处理该UrL,就会报错
  • 修改URL:用户请求foo.ingress.net/app,代理到后端后,将请求的/app删除,foo.ingress,net/
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: foo-ingressannotations:nginx.ingress.kubernetes.io/rewrite-target: /$2  # 配置Rewrite规则
spec:ingressClassName: "nginx"rules:- host: foo.ingress.nethttp:paths:- path: /app(/|$)(.*)  # 匹配的URL的第二部分(由第二个括号捕获的部分)作为新的目标路径。pathType: Prefixbackend:service:name: app-svcport:number: 80- path: /java(/|$)(.*)pathType: Prefixbackend:service:name: tomcat-svcport:number: 8080

Ingress 基于名称虚拟主机

在这里插入图片描述

配置Ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: foo-ingress
spec:ingressClassName: "nginx"rules:- host: app.ingress.nethttp:paths:- path: /pathType: Prefixbackend:service:name: app-svcport:number: 80- host: java.ingress.nethttp:paths:- path: /pathType: Prefixbackend:service:name: tomcat-svcport:number: 8080

Ingress 实现HTTPS

在 Ingress 中引入 Secret 资源,然后告诉 Ingress 控制器使用 TLS 加密从客户端到负载均衡器的通道

创建TLS 证书

 # 使用openssl命令充当CA权威机构创建证书(生产不使用此方式生成证书,不被互联网认可的黑户证书)
openssl需要下载
[root@web01 ssl_key]# openssl genrsa -idea -out server.key 2048
Enter pass phrase for server.key: 123456
Verifying - Enter pass phrase for server.key: 123456[root@web01 ssl_key]# ll
total 4
-rw-r--r--. 1 root root 1739 Dec  9 11:27 server.key#生成自签证书(公钥),同时去掉私钥的密码
[root@web01 ssl_key]# openssl req -days 36500 -x509 -sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:meiguo
Locality Name (eg, city) [Default City]:riben
Organization Name (eg, company) [Default Company Ltd]:heishoudang
Organizational Unit Name (eg, section) []:oldboy
Common Name (eg, your name or your server's hostname) []:oldboy
Email Address []:123@qq.com

创建Secrets

[root@k8s-master ssl]# kubectl create secret tls java-ingress-tls --key=server.key --cert=server.crt 
secret/java-ingress-tls created

配置ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: java-ingress
spec:ingressClassName: "nginx"# httpstls:- hosts: - java.ingress.netsecretName: "java-ingress-tls"rules:- host: java.oldxu.nethttp:paths:- path: /pathType: Prefixbackend:service:name: tomcat-svcport:number: 8080

Ingress Rewrite

  • Ingress Rewrite:Rancher(一个流行的Kubernetes管理平台)中提供的一项功能,通过改写HTTP请求和响应的URL路径,实现请求重定向、负载均衡以及URL路径的重写。
  • 请求重定向:可以将请求导向到不同的后端服务,实现简单的负载均衡。
  • URL路径重写:修改请求的URL路径,使其匹配实际需要的后端服务。

上面基于URL实现路由方案中,就应用到了 ingress rewrite 方案,下面示例插入自定义的 Nginx 配置。

apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata:  name: my-app-ingress  annotations:  nginx.ingress.kubernetes.io/rewrite-target: /$2  # 如果需要基于路径重写,可以使用这个注解,但这里仅作为示例  nginx.ingress.kubernetes.io/configuration-snippet: |  location /old-path/ {  rewrite ^/old-path/(.*)$ /new-path/$1 break;  proxy_pass http://my-app-service;  }  
spec:  rules:  - http:  paths:  - path: /  pathType: Prefix  backend:  service:  name: my-app-service  port:  number: 80

Ingress 灰度发布

Ingress 灰度发布就是通过两套ingress 配置同一个域名,来实现

Ingress 灰度发布可以通过三个方式实现,

  1. 基于Request Header的流量切分

    • 使用nginx.ingress.kubernetes.io/canary-by-headernginx.ingress.kubernetes.io/canary-by-header-value annotations。
    • 客户端请求时,根据Request Header的值决定是否将请求路由到灰度版本。
  2. 基于Cookie的流量切分

    • 使用nginx.ingress.kubernetes.io/canary-by-cookie annotation。
    • 根据客户端Cookie的值来决定是否将请求路由到灰度版本。
  3. 基于服务权重的流量切分

    • 使用nginx.ingress.kubernetes.io/canary-weight annotation。
    • 设定灰度版本的权重(0-100%),按权重比例将请求路由到灰度版本。
  4. 流量切分的优先级 header 和 cookie > 权重

生产版本

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: demoapp-ingress-prod
spec:ingressClassName: "nginx"rules:- host: "demoapp.ingress.net"http:paths:- path: /pathType: Prefixbackend:service:name: demoapp-prod-svcport:number: 80

灰度版本

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: demoapp-ingress-canaryannotations:nginx.ingress.kubernetes.io/canary: "true"                  # 启动灰度发布#nginx.ingress.kubernetes.io/canary-by-header: "deploy"    # 基于header#nginx.ingress.kubernetes.io/canary-by-header-value: "new"#nginx.ingress.kubernetes.io/canary-weight: "30"    # 权重 30%流量调度到这个灰度的版本上nginx.ingress.kubernetes.io/canary-by-cookie: "request_from_wh"  # cookie
spec:ingressClassName: "nginx"rules:- host: "demoapp.ingress.net"http:paths:- path: /pathType: Prefixbackend:service:name: demoapp-canary-svcport:number: 80

Ingress 配置认证

先生成一个 basic-auth secret ,再引入nginx 就能给 nginx 设置账户密码

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: java-ingressannotations:nginx.ingress.kubernetes.io/auth-type: basic  # 认证类型nginx.ingress.kubernetes.io/auth-secret: basic-auth  # 包含用户和密码的 secret 资源名称nginx.ingress.kubernetes.io/auth-realm: 'Please User password'  # 要显示的信息nginx.ingress.kubernetes.io/rewrite-target: /$2nginx.ingress.kubernetes.io/configuration-snippet: |        # 自定义跳转规则rewrite ^/docs/(.*)$  /java/docs/$1 redirect;rewrite ^/manager/(.*)$  /java/manager/$1 redirect;rewrite ^/examples/(.*)$  /java/examples/$1 redirect;nginx.ingress.kubernetes.io/server-snippet: |set $agentflag 0;if ($http_user_agent ~* "(iPhone|android)" ){set $agentflag 1;}if ( $agentflag = 1 ) {return 301 http://app.ingress.net;}spec:ingressClassName: "nginx"rules:- host: java.ingress.nethttp:paths:- path: /java(/|$)(.*)pathType: Prefixbackend:service:name: tomcat-svcport:number: 8080
http://www.dt0577.cn/news/26320.html

相关文章:

  • 自己做好网站腾讯企业qq
  • 滨州j建设局网站投诉电话湖北网站seo设计
  • 网站推广都做什么内容百度小说风云榜排行榜官网
  • dnf交易网站建设博客网站seo
  • 通辽市网站建设做网络推广的团队
  • 餐饮手机网站建设互联网营销师证书骗局
  • 网站推荐男生正能量2021竞价恶意点击报案
  • b2b电子商务网站怎么做短视频seo是什么
  • 建设农村信息网站网络广告营销的概念
  • 移动端网站怎么做外链武汉大学人民医院精神科
  • 网站开发软件有哪些站长工具忘忧草社区
  • 网站优化新闻北京公司排名seo
  • dw怎样做网站切换百度关键词排名联系
  • 广州网站制作品牌怎么接广告赚钱
  • 做推广哪家网站好百度网盘登录入口
  • 宝塔做两个网站6百度搜索引擎的网址
  • 产品网络推广seo网站推广有哪些
  • 六安网页设计游戏优化大师
  • 先做网站还是做APP武汉seo引擎优化
  • 如何建一个简单的网站投稿网站
  • 南昌网站定制湖北网络推广公司
  • 介绍公司的文案seo排名点击 seo查询
  • 日本做暖暖的网站郑州网站网页设计
  • 做外汇著名网站机构类网站有哪些
  • 深圳旅游必去十大景点西安seo专员
  • 做公众好号的网站在线制作网站免费
  • 易网做的网站后台磁力屋 最好用
  • 时时彩做号网站线上宣传的方式
  • 做靓号网站成都网站建设技术支持
  • 北京网站开发哪家公司好百度百家号官网登录