1.克隆Ingress控制器存储库,然后更改到Deployments文件夹:
$ git clone https://github.com/nginxinc/kubernetes-ingress/
$ cd kubernetes-ingress/deployments
$ git checkout v1.10.0
2.配置RBAC
- 为Ingress控制器创建一个名称空间和一个服务帐户:
kubectl apply -f common/ns-and-sa.yaml
- 为服务帐户创建集群角色和集群角色绑定:
kubectl apply -f rbac / rbac.yaml
3.创建公共资源
- 为NGINX中的默认服务器创建一个包含TLS证书和密钥的密钥:
注意:对于未定义Ingress规则的所有域请求,默认服务器将返回404状态代码的Not Found页面。为了进行测试,我们包含了我们生成的自签名证书和密钥。但是,我们建议您使用自己的证书和密钥
kubectl apply -f common/default-server-secret.yaml
- 创建用于自定义NGINX配置的配置图:
kubectl apply -f common/nginx-config.yaml
- 创建一个IngressClass资源(用于Kubernetes> = 1.18):
kubectl apply -f common/ingress-class.yaml
创建自定义资源
1. 为VirtualServer和VirtualServerRoute,TransportServer和Policy资源创建自定义资源定义:
$ kubectl apply -f common/crds/k8s.nginx.org_virtualservers.yaml
$ kubectl apply -f common/crds/k8s.nginx.org_virtualserverroutes.yaml
$ kubectl apply -f common/crds/k8s.nginx.org_transportservers.yaml
$ kubectl apply -f common/crds/k8s.nginx.org_policies.yaml
4.部署入口控制器
我们包括两个用于部署Ingress控制器的选项:
- 部署。如果您计划动态更改Ingress控制器副本的数量,请使用Deployment。
- DaemonSet。使用DaemonSet在每个节点或节点子集上部署Ingress控制器。
在创建Deployment或Daemonset资源之前,请确保根据您的要求更新相应清单文件中Ingress Controller容器的 命令行参数。
- 运行入口控制器
- 使用部署。默认情况下,当您通过部署运行Ingress Controller时,Kubernetes将创建一个Ingress Controller Pod。
kubectl apply -f deployment/nginx-ingress.yaml
- 使用DaemonSet:当您使用DaemonSet运行Ingress Controller时,Kubernetes将在集群的每个节点上创建一个Ingress controller pod。
kubectl apply -f daemon-set/nginx-ingress.yaml