我正在学习kubernetes及其生态系统,尽管我看到了许多如何使用nginx (作为反向代理)来执行前端任务的例子,但我很难理解如何设置/配置它以服务多条路径。例如,如果我将两个后端(app1和app2)部署到kubernetes,并且希望它们以/app1和/app2的形式出现在我的前端,那么我将假设我需要以下nginx配置:
upstream app1 {
server app1
}
upstream app2 {
server app2
}
server {
listen 443;
location /app1 {
proxy_pass https://app1:PORT1;
# and additional configuration stuff
}
location /app2 {
proxy_pass https://app2:PORT2;
# and additional configuration stuff
}
}通过这个站点配置,我可以构建nginx映像并将其作为服务部署到kubernetes中。但是对于部署,我需要在yaml中指定要匹配的应用程序。而且,如果我想将我的前端与我的两个后端相匹配,我应该如何编写它的部署规范?我从这里开始学习示例1,但仍然不明白如何将它扩展到前面提到的用例。
发布于 2018-03-08 16:12:52
欢迎来到kubernetes生态系统!
让我把问题说回来,以确保我们谈论的是同样的事情:
- a Deployment for each
- the Deployment for each comprises and therefore also creates in the cluster a ReplicaSet and some Pods for each app.
- the Pod spec for each app references the app's container image
- a Service spec which uses labels to refer to the respective Deployment/ReplicaSet/Pod objects for each application. The name of the Service can be used in other Kubernetes objects
如果这一切都是准确的,那么就没有必要部署您自己的nginx容器。您只需使用另一个Kubernetes对象,名为Ingress。
如果您在裸金属或类似的环境上运行自己的Kubernetes集群,那么在具体术语上,什么就相当于一个特殊配置的nginx。
如果您是在gcloud、azure或AWS上运行托管Kubernetes,那么从具体的角度来说,Ingress通常是云提供的负载均衡器。
这些文件应有助于:
https://kubernetes.io/docs/concepts/services-networking/ingress/
更确切地说,Ingress是一个Kubernetes术语,它是集群中监视宏资源的软件,然后使用这些资源中的详细信息来生成新的配置。
nginx大会控制器:
https://github.com/kubernetes/ingress-nginx/blob/master/README.md
将首先在集群中创建nginx荚,然后监视in规范的更改,更新nginx配置以匹配规范中指定的内容,然后在配置更改时重新启动nginx荚。
云侵入控制器的工作方式类似,尽管它使用云API来更新云负载均衡器配置。
因此,首先,您可能想要做的是遵循简单的扇own示例,该示例在单个域中的两条路径下公开两个应用程序--每个应用程序背后都有它们自己的服务(如上面所述):
https://kubernetes.io/docs/concepts/services-networking/ingress/#simple-fanout
希望这能有所帮助。
https://stackoverflow.com/questions/49176989
复制相似问题