Mon*_*oya 1 nginx kubernetes kubernetes-ingress nginx-ingress
我有一个 kubernetes 类入口nginx和两个负载均衡器。在 GKE v1.17 上运行。
入口 yaml 示例:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: my-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
kubernetes.io/ingress.class: "nginx"
# Enable client certificate authentication
nginx.ingress.kubernetes.io/auth-tls-verify-client: "on"
# Create the secret containing the trusted ca certificates
nginx.ingress.kubernetes.io/auth-tls-secret: "production/client-cert-secret"
# Specify the verification depth in the client certificates chain
nginx.ingress.kubernetes.io/auth-tls-verify-depth: "1"
# Automatically redirect http to https
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
# Use regex in paths
nginx.ingress.kubernetes.io/use-regex: "true"
# Allow larger request body
nginx.ingress.kubernetes.io/proxy-body-size: 30m
# For notifications we add the proxy headers
nginx.ingress.kubernetes.io/configuration-snippet: |
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
spec:
tls:
- hosts:
- my-domain.com
secretName: my-tls-certificate
rules:
- host: my-domain.com
http:
paths:
- path: /(.*)
backend:
serviceName: load-balancer-1
servicePort: 443
Run Code Online (Sandbox Code Playgroud)
我希望将到达两个负载均衡器之间入口的流量分开。例如:
load-balancer-1将获得90%的流量
load-balancer-2将获得10%的流量
我怎样才能用 kubernetes ingress 做到这一点?
nginx 入口控制器通过Canary Annotations支持金丝雀部署
\n\n\n在某些情况下,您可能希望通过向不同于生产服务的服务发送少量请求来“金丝雀”一组新的更改。金丝雀注释使 Ingress 规范能够\n充当请求的替代服务,\n根据所应用的规则路由到该请求。
\nnginx.ingress.kubernetes.io/canary: "true"设置后可以启用以下用于配置金丝雀的注释:\n
\n- \n
nginx.ingress.kubernetes.io/canary-weight:基于整数 (0 - 100)\n的随机请求百分比,\n应路由到金丝雀 Ingress 中指定的服务\n。权重为 0 意味着\n此 Canary 规则不会向 Canary 入口中的服务发送任何请求。权重为 100 意味着所有请求都将发送到 Ingress 中指定的替代服务。请注意,当您将入口标记为金丝雀时,除 nginx.ingress.kubernetes.io/load-balance 和 nginx.ingress 之外,所有其他\n非金丝雀注释都将被忽略(继承自相应的主入口)。 kubernetes.io/upstream-hash-by。
\n已知限制
\n目前,每个入口规则最多可以应用一个金丝雀入口。\n
\n
换句话说,您可以引入一个新的 Ingress 对象,my-ingress-canary在其中设置注释
nginx.ingress.kubernetes.io/canary: "true"(告诉 Nginx Ingress 将其标记为 \xe2\x80\x9cCanary\xe2\x80\x9d 并通过匹配主机和路径将此入口与主入口关联起来。
nginx.ingress.kubernetes.io/canary-weight: "10"(将百分之十的流量路由到负载均衡器-2)
apiVersion: networking.k8s.io/v1beta1\nkind: Ingress\nmetadata:\n name: my-ingress-canary\n annotations:\n nginx.ingress.kubernetes.io/canary: "true"\n nginx.ingress.kubernetes.io/canary-weight: "10"\nspec:\n rules:\n - host: my-domain.com\n http:\n paths:\n - path: /(.*)\n backend:\n serviceName: load-balancer-2\n servicePort: 443\n\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
3807 次 |
| 最近记录: |