nginx 统一入口_如何在PMKFT上设置NGINX入口控制器

nginx 统一入口

绝大多数Kubernetes集群用于托管容器,以处理从微服务到完整Web应用程序的传入请求。 将这些传入请求传入一个中央位置,然后通过Kubernetes中的服务分发出去,这是配置集群的最安全方法。 该中央入口点是入口控制器。

NGINX是用作私有托管的Kubernetes集群的入口控制器的最常见产品。 NGINX具有企业所需的大多数功能,无论Kubernetes运行在哪个云,虚拟化平台或Linux操作系统上,NGINX都将用作Kubernetes的入口控制器。

第一步

将NGINX用作Platform9管理的Kubernetes集群上的Ingress控制器的第一步是拥有一个正在运行的Kubernetes集群。

在这种情况下,我们将使用的群集称为“入测试”,并被列为健康。 它是在Ubuntu 16.04服务器上运行的单节点群集。

% ssh root@64.227 .56 .189
Welcome to Ubuntu 16.04 .6 LTS (GNU/Linux 4.4 .0 -173 -generic x86_64)
root@pmkft:~# kubectl get nodes
NAME            STATUS   ROLES    AGE   VERSION
64.227 .56 .189   Ready    master   10 h   v1 .14 .8
root@pmkft:~# kubectl get namespaces
NAME              STATUS   AGE
default           Active   11 h
kube-node-lease   Active   11 h
kube-public       Active   11 h
kube-system       Active   11 h

运行“ kubectl获取节点”和“ kubectl获取名称空间”可确认身份验证正在运行,集群节点已准备就绪且未配置NGINX Ingress控制器。

NGINX入口控制器的强制性组件

入口控制器是Kubernetes的核心组件,因此它不仅需要配置Pod和路由,还需要配置集群中更多的移动部件。

对于NGINX,其推荐的配置包含三个ConfigMap:

基本部署TCP配置UDP配置

用于运行服务的服务帐户位于群集中,并且将为该服务帐户分配几个角色。

群集角色已分配给服务帐户,从而允许它获取,列出和读取所有服务和事件的配置。 如果要有多个入口控制器,则可能会受到限制。 但是在大多数情况下,这太过分了。

为服务帐户分配了特定于名称空间的角色,以读取和更新NGINX Ingress控制器自己的配置所特有的所有ConfigMap和其他项。

最后一部分是将Pod实际部署到其自己的名称空间中,以便轻松地为安全性和资源配额划定边界。

部署指定将引用哪些ConfigMap,将使用的容器映像和命令行以及有关如何运行实际NGINX Ingress控制器的所有其他特定信息。

NGINX在GitHub中维护了一个文件,该文件Kubernetes文档链接到Kubernetes文档 ,该文件在YAML中详细说明了所有配置并准备部署。

要应用此配置,要运行的命令是:

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.28.0/deploy/static/mandatory.yaml

这将生成以下输出:

namespace/ingress-nginx created
configmap/nginx-configuration created
configmap/tcp-services created
configmap/udp-services created
serviceaccount/nginx-ingress-serviceaccount created
clusterrole.rbac.authorization.k8s.io/nginx-ingress-clusterrole created
role.rbac.authorization.k8s.io/nginx-ingress-role created
rolebinding.rbac.authorization.k8s.io/nginx-ingress-role-nisa-binding created
clusterrolebinding.rbac.authorization.k8s.io/nginx-ingress-clusterrole-nisa-binding created
deployment.apps/nginx-ingress-controller created
limitrange/ingress-nginx created

公开NGINX入口控制器

一旦基本配置到位,下一步就是将NGINX入口控制器暴露给外界,使其能够开始接收连接。 这可以通过类似AWS,GCP或Azure上的负载平衡器进行。 在您自己的基础架构或功能较少的云提供商上进行部署时,另一个选择是使用NodePort创建服务以允许访问Ingress Controller。

使用位于GitHub上的NGINX提供的service-nodeport.yaml文件,可以定义在端口80和443上运行的服务。可以像以前一样使用单个命令行来应用它。

root@pmkft:~# kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.28.0/deploy/static/provider/baremetal/service-nodeport.yaml
service/ingress-nginx created

验证NGINX入口控制器

最后一步是确保Ingress控制器正在运行。

root@pmkft:~# kubectl get pods --all-namespaces -l app.kubernetes.io/name=ingress-nginx
NAMESPACE       NAME                                        READY   STATUS    RESTARTS   AGE
ingress-nginx   nginx-ingress-controller-6 c7686c6b4-stnq7   1 / 1     Running   0          6 m36s
root@pmkft:~# kubectl get services ingress-nginx --namespace=ingress-nginx
NAME            TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx   NodePort   10.21 .83 .193   <none>        80 : 30757 /TCP, 443 : 31353 /TCP   34 m

通过头盔安装

Platform9支持helm3,并且可供使用该方法进行部署的任何人使用,该方法通常更易于管理。

要使用Helm安装NGINX Ingress控制器 ,请使用图表sttable / nginx-ingress(可在官方存储库中找到)。 要以发布名称ingress-nginx安装图表:helm install stable / nginx-ingress --name ingress-nginx

如果kubernetes集群启用了RBAC,则运行:helm install stable / nginx-ingress --name ingress-nginx --set rbac.create = true

使用NGINX入口控制器公开服务

现在,集群中正在运行入口控制器,您将需要创建使用主机,URI映射或什至两者都利用它的服务。

通过使用“ Ingress”类型的入口控制器的基于主机的服务映射的示例:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: hello-world
  annotations:
    kubernetes.io/ingress.class: ingress-nginx
spec:
  rules:
  - host: host1.domain.ext
    http:
      paths:
      - backend:
          serviceName: hello-world
          servicePort:80

使用URI涉及相同的基本布局,但是在yaml文件的“路径”部分中指定了更多详细信息。 当需要TLS加密时,您将需要将证书作为密钥存储在Kubernetes中。 这可以手动完成,也可以使用诸如cert-manager之类的开源工具完成。 yaml文件需要一些额外的信息来启用TLS(在入口控制器中完成了从端口443到端口80的映射):

下一步

使用功能齐全的集群和入口控制器,甚至是单个节点,您都可以像在生产环境中一样开始构建和测试应用程序,并具有测试配置文件和应用程序流量路由的能力。 您只有一些容量限制,这些限制在真正的多节点群集上不会发生。

**请注意,我是Platform9的员工,团队成员对此指南做出了贡献**




翻译自: https://hackernoon.com/how-to-set-up-an-nginx-ingress-controller-on-pmkft-257u32o5

nginx 统一入口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值