我有一个nginx类的kubernetes入口和两个负载平衡器。在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我想把到达入口的交通分给两个负载平衡器。例如:
load-balancer-1将接收90%的流量
load-balancer-2将接收10%的流量
,我怎么能用库伯奈特的入口做这件事呢?
发布于 2021-01-19 20:08:38
nginx入口控制器支持通过加那利注解进行金丝雀部署。
在某些情况下,您可能希望通过向与生产服务不同的服务发送少量请求来“金丝雀”一组新的更改。金丝雀注释使Ingress规范能够作为请求路由到的替代服务,这取决于所应用的规则。在设置
nginx.ingress.kubernetes.io/canary: "true"之后,可以启用以下配置金丝雀的注释:
nginx.ingress.kubernetes.io/canary-weight:基于整数的(0-100)随机请求的百分比,应该被路由到金丝雀入侵中指定的服务。权重为0意味着不会根据金丝雀规则向金丝雀入口的服务处发送任何请求。100的权重意味着所有的请求都将发送给大会中指定的替代服务。注意,当您将入口标记为金丝雀时,除nginx.inress.kubernetes.io/load-balance和nginx.inress.kubernetes.io/上游-散列之外,所有其他非金丝雀注释都将被忽略(从相应的主入口继承)。
已知限制
目前,每个入侵规则最多可以应用一条金丝雀入口。
换句话说,您可以引入一个新的Ingress对象my-ingress-canary,在这里您可以设置注释
nginx.ingress.kubernetes.io/canary: "true" (告诉Nginx将此入口标记为“金丝雀”,并通过匹配主机和路径将该入口与主入口关联。nginx.ingress.kubernetes.io/canary-weight: "10" (从10%流量到负载均衡器-2)apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: my-ingress-canary
annotations:
nginx.ingress.kubernetes.io/canary: "true"
nginx.ingress.kubernetes.io/canary-weight: "10"
spec:
rules:
- host: my-domain.com
http:
paths:
- path: /(.*)
backend:
serviceName: load-balancer-2
servicePort: 443https://stackoverflow.com/questions/65795438
复制相似问题