gpt4 book ai didi

regex - NGINX Ingress Controller 用于分支部署的多种服务

转载 作者:行者123 更新时间:2023-12-02 12:28:51 29 4
gpt4 key购买 nike

我的情况是,我在 EKS 1.14 中有一个分支明智的部署,我想用“正则表达式”和 Nginx 入口来处理这个问题。

场景:-假设我有带有 service_A(apache 服务)的分支 B1,类似地在带有 service_A((apache 服务)的 B2 下,并希望通过以下 URL 访问服务:- apache-{branch_name}.example.com
注意:- 分支 B1/B2 只不过是运行相同类型服务的唯一命名空间。

我需要一个入口,从那里我可以控制所有不同的分支 URL

我的示例文件:-

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: regex-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
tls:
- hosts:
- '*.k8s.example.com'
secretName: prod-crt
rules:
- host: {service_A-b1}.k8s.acko.in
http:
paths:
- backend:
serviceName: {service_A-b1}
servicePort: 80

- host: {service_A-b2}.k8s.acko.in
http:
paths:
- backend:
serviceName: {service_A-b2}
servicePort: 80



最佳答案

Nginx 入口不能以这种方式工作,serviceName 中不可能有正则表达式都不是host .

来自 NGINX docs :

Regular expressions and wild cards are not supported in the spec.rules.host field. Full hostnames must be used.



您可以使用正则表达式 仅限 path field :

The ingress controller supports case insensitive regular expressions in the spec.rules.http.paths.path field. This can be enabled by setting the nginx.ingress.kubernetes.io/use-regex annotation to true (the default is false).



如果您需要控制您的 serviceNamehost从动态上讲,我强烈建议使用某种自动化(可能是 jenkins、bash 脚本等)或模板 HELM这将在部署时修改。

引用文献:

https://kubernetes.github.io/ingress-nginx/user-guide/ingress-path-matching/

关于regex - NGINX Ingress Controller 用于分支部署的多种服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60753327/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com