Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex NGINX入口控制器,用于分支部署的多服务_Regex_Kubernetes_Kubernetes Ingress_Nginx Ingress_Amazon Eks - Fatal编程技术网

Regex NGINX入口控制器,用于分支部署的多服务

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

在我的案例中,我在EKS 1.14中有一个分支部署,我想用“regex”和Nginx入口来处理这个问题

场景:-假设我有一个带有服务_A(apache服务)的分支B1,类似地在B2下有服务_A(apache服务)等等,并且希望通过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
中也不可能有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