Regex NGINX入口控制器,用于分支部署的多服务
在我的案例中,我在EKS 1.14中有一个分支部署,我想用“regex”和Nginx入口来处理这个问题 场景:-假设我有一个带有服务_A(apache服务)的分支B1,类似地在B2下有服务_A(apache服务)等等,并且希望通过URL访问该服务,如:-apache-{Branch_name}.example.com 注意:-分支B1/B2只是运行相同类型服务的唯一名称空间 我需要一个入口,从那里我可以控制所有不同的分支URL 我的示例文件:-Regex NGINX入口控制器,用于分支部署的多服务,regex,kubernetes,kubernetes-ingress,nginx-ingress,amazon-eks,Regex,Kubernetes,Kubernetes Ingress,Nginx Ingress,Amazon Eks,在我的案例中,我在EKS 1.14中有一个分支部署,我想用“regex”和Nginx入口来处理这个问题 场景:-假设我有一个带有服务_A(apache服务)的分支B1,类似地在B2下有服务_A(apache服务)等等,并且希望通过URL访问该服务,如:-apache-{Branch_name}.example.com 注意:-分支B1/B2只是运行相同类型服务的唯一名称空间 我需要一个入口,从那里我可以控制所有不同的分支URL 我的示例文件:- apiVersion: networking.k8
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
中也不可能有regex
来自NGINX:
spec.rules.host
字段中不支持正则表达式和通配符。必须使用完整的主机名
您只能在path
字段中使用regex:
ingress控制器在spec.rules.http.paths.path
字段中支持不区分大小写的正则表达式。这可以通过将nginx.ingres.kubernetes.io/使用regex
注释设置为true
(默认值为false)来启用
如果您需要控制您的serviceName
和host
dinamically,我强烈建议您使用某种自动化(可能是jenkins、bash脚本等)或模板,以便在部署时进行修改
参考文献:
Nginx入口不以这种方式工作,不可能在
serviceName
或主机中使用regex
来自NGINX:
spec.rules.host
字段中不支持正则表达式和通配符。必须使用完整的主机名
您只能在path
字段中使用regex:
ingress控制器在spec.rules.http.paths.path
字段中支持不区分大小写的正则表达式。这可以通过将nginx.ingres.kubernetes.io/使用regex
注释设置为true
(默认值为false)来启用
如果您需要控制您的serviceName
和host
dinamically,我强烈建议您使用某种自动化(可能是jenkins、bash脚本等)或模板,以便在部署时进行修改
参考文献:
您能提供更多关于您的问题的详细信息吗?我不清楚您想要实现什么。您需要路径、域的正则表达式?请在您的帖子中包含一些示例。请参阅nginx docs.added文件中的l,如果您需要更多信息,请告诉我如果您想在文件中使用正则表达式可能的。您只能在路径
字段中使用正则表达式。请参阅。动态主机和servicename需要这样的东西吗?是的,请告诉我最好的方法,我有两个唯一的分支B1和B2,但每个分支都有相同的部署和服务。因此,我们只使用分支级别来区分。这是我在Ingres下需要实现的。例如e:-apache.b1.example.com和apache.b2.example.com您是如何在Kubernetes上部署这些分支的?如果您已经为每个分支提供了两个独立的服务,那么您的服务的名称是固定的,对吗?或者您总是更改服务的名称?您可以发布一个服务的示例吗?如果可能,命令kubectl get sv的输出c
。你能提供关于你的问题的更多细节吗?我不清楚你想实现什么。你需要路径、域的正则表达式吗?请在你的帖子中包含一些示例。请参阅nginx docs.added文件中的l,如果你需要更多信息,请告诉我如果你想在文件中使用正则表达式不可能。您只能在path
字段中使用正则表达式。请参阅。动态主机和servicename需要这种方式的东西吗?是的,让我知道最好的方式,我有两个唯一的分支B1和B2,但每个分支都有相同的部署和服务。因此,我们只使用分支级别进行区分。这是我在ingress下需要实现的。like:-apache.b1.example.com和apache.b2.example.com您是如何在Kubernetes上部署这些分支的?如果您已经为每个分支提供了两个独立的服务,那么您的服务名称是固定的,对吗?或者您总是更改服务名称?您可以发布一个服务的示例吗?如果可能,命令kubectl的输出将svc
。