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

网站后台管理功能梦幻西游官网

网站后台管理功能,梦幻西游官网,wordpress 4.9.6 zh,wordpress侧栏文本代码K8S中ingress-nginx通过header路由到不同后端 背景 公司使用ingress-nginx作为网关的项目#xff0c;需要在相同域名、uri#xff0c;根据header将请求转发到不同的后端中在稳定发布的情况下#xff0c;ingress-nginx是没有语法直接支持根据header做转发的。但是这个可以利…K8S中ingress-nginx通过header路由到不同后端 背景 公司使用ingress-nginx作为网关的项目需要在相同域名、uri根据header将请求转发到不同的后端中在稳定发布的情况下ingress-nginx是没有语法直接支持根据header做转发的。但是这个可以利用灰度发布的特性实现header路由功能 准备 准备两个后端后端代码如下路由均为 /app main.go package mainimport github.com/gin-gonic/ginfunc main() {r : gin.Default()r.GET(/app, func(context *gin.Context) {context.JSON(200, gin.H{message: app1})})r.Run(:8080) }使用Dockerfile构建镜像 这里构建 goapp1:v1goapp2:v1两个镜像goapp2请将main.go修改 “message”: “app2” FROM golang:1.17.13 RUN mkdir -p /go/app/; \cd /go/app/; \go mod init app1;\GOPROXYhttps://goproxy.cn,direct go get github.com/gin-gonic/ginv1.6.3 WORKDIR /go/app/ COPY main.go /go/app EXPOSE 8080 CMD go run main.go使用灰度发布的特性进行header的路由 此解决方案参考https://v2-1.docs.kubesphere.io/docs/zh-CN/quick-start/ingress-canary/注本人使用低版本ingress-nginx高版本的请大家自行修改不同之处首先部署goapp1:v1 和 goapp2:v1 的deployment和service 此为goapp1。goapp2请自行修改 apiVersion: apps/v1 kind: Deployment metadata:name: goapp1namespace: default spec:replicas: 1selector:matchLabels:app: goapp1template:metadata:labels:app: goapp1spec:containers:- image: goapp1:v1imagePullPolicy: IfNotPresentname: goapp1ports:- containerPort: 80protocol: TCP --- apiVersion: v1 kind: Service metadata:name: goapp1namespace: default spec:ports:- port: 8080protocol: TCPtargetPort: 8080selector:app: goapp1部署稳定发布版本的ingress路由至goapp1 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: goapp1 namespace: defaultannotations:kubernetes.io/ingress.class: nginx spec:rules:- host: test.comhttp:paths:- path: /app pathType: Prefixbackend:service:name: goapp1port: number: 8080 部署canary版本的ingress路由至goapp2 这里可见 域名都是 test.comuri都是 /app注解 nginx.ingress.kubernetes.io/canary: “true” # 启用canary灰度发布特性nginx.ingress.kubernetes.io/canary-by-header: canary # 通过header可选择是否转发至canary版本的后端 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: goapp2namespace: defaultannotations:kubernetes.io/ingress.class: nginxnginx.ingress.kubernetes.io/canary: truenginx.ingress.kubernetes.io/canary-by-header: canary spec:rules:- host: test.comhttp:paths:- path: /app pathType: Prefixbackend:service:name: goapp2port: number: 8080进行测试 for i in {1..20};# ingress-nginx的NodePort请自行查看替换下面的端口do curl test.com:31132/app -H canary: never; # 路由至稳定版本的goapp1echo -e ; donefor i in {1..20};do curl test.com:31132/app -H canary: always; # 路由至canary版本的goapp2echo -e ; done效果如下可以看到可以通过header控制发送请求到不同后端能够满足需求 通过nginx进行转发 第二种方法可通过在k8s集群部署一个nginx 通过nginx进行分流 流量路径如下 ingress-nginx -- nginx -- goapp1或goapp2 这里nginx写法有比较多我选择最简单的通过if判断$http_my_header在使用$http_my_header之前需要对ingress-nginx和nginx添加参数允许header中存在下划线 ingress-nginx kubectl edit cm ingress-nginx-controller ------------------ apiVersion: v1 data:allow-snippet-annotations: true# 添加下面这两个参数enable-underscores-in-headers: trueignore-invalid-headers: false kind: ConfigMap部署nginxnginx中开启允许header下划线的参数underscores_in_headers on; apiVersion: apps/v1 kind: Deployment metadata:name: nginxnamespace: default spec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.24.0ports:- containerPort: 80volumeMounts:- name: nginxmountPath: /etc/nginx/nginx.confsubPath: nginx.confvolumes:- name: nginxconfigMap:name: nginxitems:- key: nginx.confpath: nginx.conf --- apiVersion: v1 kind: Service metadata:name: nginxnamespace: default spec:selector:app: nginxports:- protocol: TCPport: 80targetPort: 80 --- apiVersion: v1 data:nginx.conf: |user nginx;worker_processes auto;error_log /var/log/nginx/error.log notice;pid /var/run/nginx.pid;events {worker_connections 1024;}http {upstream upstream_server1 {server goapp1:8080;}upstream upstream_server2 {server goapp2:8080;}include /etc/nginx/mime.types;default_type application/octet-stream;log_format main $remote_addr - $remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for $http_my_header;access_log /var/log/nginx/access.log main;sendfile on;keepalive_timeout 65;server {underscores_in_headers on; listen 80;server_name test.com;location /app {if ($http_my_header value1) {proxy_pass http://upstream_server1;}if ($http_my_header value2) {proxy_pass http://upstream_server2;}}}}kind: ConfigMap metadata:name: nginxnamespace: default上面的配置判断 $http_my_header是 value1 还是 value2再转发到不同的upstream测试 curl test.com/app -H my_header:value1 curl test.com/app -H my_header:value2
http://www.zqtcl.cn/news/774525/

相关文章:

  • thinkphp网站开发技术做电脑租赁网站
  • 网站设计评语中午版wordpress
  • 邢台企业手机网站建设汕头网站制作后缀
  • 微网站后台内容设置做网站语言排名2018
  • 嘉兴网站制作网站建设外贸营销推广平台有哪些
  • 网站开发集广州高端网站定制开发价格
  • 网站开发培训成都网站建设 报价单 doc
  • 苏州哪里有做淘宝网站的WordPress模板博客主题
  • 网站做中转做任务 网站
  • 深圳住房建设局网站网站的建设教程
  • 6免费建站的网站在线建筑设计
  • 哪些网站做任务可以赚钱的建设厅网站如何查询企业信息
  • 深圳网站设计+建设首选深圳市服装网站建设需求分析报告
  • 肥城网站制作浙江省建设厅信息港官网
  • 手机网站建设进度南宁企业网站设计
  • 建设学校网站方案大淘客网站上的推广怎么做
  • 哪个网站可以免费学设计南阳网站建设页面
  • 外贸公司建网站一般多少钱南京网站建设小程
  • 洛阳霞光做网站公司手机编程教学
  • 深圳正规网站建设公司顺德网页制作公司
  • 消防中队网站建设筑云电商网站建设公司
  • 天津网站建设天津中国东盟建设集团有限公司网站
  • 正版传奇手游官方网站宁波建设银行网站首页
  • 中铁建设集团招标网站wordpress区块编辑无法使用
  • 做电影网站需要的服务器配置网站关键词排名优化应该怎么做
  • 企业网站管理关键词你们懂的
  • 成都成华网站建设跟网站开发公司签合同主要要点
  • 手机搭建平台网站化工厂建设网站
  • 怎样建设自己网站的后台龙港哪里有做百度网站的
  • 西安做网站建设哪家好2345网址导航电脑版下载