stg*_*iaf 2 nginx kubernetes kubernetes-ingress nginx-ingress
我们目前正在设置一个 kubernetes 集群来部署我们的生产工作负载(主要是 http Rest 服务)。在这个集群中,我们设置了 nginx 入口控制器来将流量从外部路由到我们的服务。由于入口控制器主要用于路径路由,我确实有以下问题:
是否可以将流量路由到后端,而无需在入口规范中专门指定后端名称?例如我有以下入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: example-ingress
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /apple
backend:
serviceName: apple-service
servicePort: 8080
Run Code Online (Sandbox Code Playgroud)
是否有可能 /apple 请求被路由到 apple-service 而没有在 serviceName 中具体指定?那么/apple会自动路由到apple-service服务,/orange会自动路由到orange服务而无需显式指定后端名称?
如果没有第 1 点的解决方案,以便我们可以根据某些约定进行部署,那么现在的问题是如何以自动化的方式管理入口。由于服务将通过自动化 CI/CD 管道进行部署,并且当服务添加到集群时可能会添加新路径,那么当部署应用程序时,ci/cd 编排器(例如 jenkins)如何更新入口路由?这样我们就可以确定集群不需要手动干预,并且每个路由都与相应的服务一起部署?
我希望所提供的信息足以理解该问题。非常感谢您的支持。
Just have a step in your ci/cd pipeline that checks for what the current ingress is and some kind of param if it needs to be updated.
High level steps...
kubectl get ingress example-ingress -o yaml > ex-ingress.yaml
Run Code Online (Sandbox Code Playgroud)
you can write that output to a file and read it, updated it, verify it and so on.
and then push it to the cluster along with your deployment
kubectl replace -f ex-ingress.yaml
Run Code Online (Sandbox Code Playgroud)
https://kubernetes.io/docs/concepts/services-networking/ingress/
归档时间: |
|
查看次数: |
10483 次 |
最近记录: |