繁体   English   中英

在kubernetes集群中使用Nginx反向代理组织.net核心应用的最佳方法是什么?

[英]What is the best way to organize a .net core app with nginx reverse proxy inside a kubernetes cluster?

我想在Azure Kubernetes服务上使用NGINX反向代理部署.NET Core应用程序。 整理豆荚和容器的最佳方法是什么?

  1. 两个单一容器的容器,一个用于nginx的容器,一个用于应用程序(.net-core / kestrel)的容器,因此每个容器可以独立于另一个容器进行扩展

  2. 一个多容器容器,该容器具有两个容器(一个用于nginx,一个用于应用程序)

  3. 一个单一容器的容器,一个同时运行Nginx和.net应用程序的容器

我会选择第一个选项,但是我不知道它是否是正确的选择,知道每个选项的优缺点将非常高兴。

如果我选择第一个选项,那么最好设置亲和力以将Nginx Pod放置在与App Pod相同的节点中吗? 还是反亲和力,以便它们部署在不同的节点上? 还是根本没有亲和力/反亲和力?

Kubernetes中入站流量的最佳实践是使用Ingress资源。 由于没有内置的入口控制器,因此需要在AKS中进行一些额外的设置。 您绝对不愿意做#2,因为它不灵活,而据我所知,#3是不可能的。

Kubernetes Ingress资源是一个配置文件,用于管理入站群集流量的反向代理规则。 这样,您就可以将多个服务看作是组合的API。

要设置入口,请首先在自动生成的MC资源组中创建一个公共IP地址:

az network public-ip create `
    -g MC_rg-name_cluster-name_centralus `
    -n cluster-name-ingress-ip `
    -l centralus `
    --allocation-method static `
    --dns-name cluster-name-ingress

现在创建一个入口控制器。 这实际上是处理来自公共IP的入站流量所必需的。 它坐着并监听Kubernetes API Ingress更新,并自动生成nginx.conf文件。

# Note: you'll have to install Helm and its service account prior to running this. See my GitHub link below for more information
helm install stable/nginx-ingress `
    --name nginx-ingress `
    --namespace default `
    --set controller.service.loadBalancerIP=ip.from.above.result `
    --set controller.scope.enabled=true `
    --set controller.scope.namespace="default" `
    --set controller.replicaCount=3

kubectl get service nginx-ingress-controller -n default -w

设置好之后,请确保在您的Ingress资源上使用此注释: kubernetes.io/ingress.class: nginx

如果您想了解有关如何进行设置的更多信息,请参阅我本周整理的GitHub自述文件 我还在cert-manager包括了TLS终止,并且也随Helm一起安装了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM