在这篇博客中,我们将学习Ingress以及如何创建Ingress规则,请继续关注!
前提条件
- Minikube集群
- 已安装kubectl
什么是Ingress?
Ingress是一个API对象,它允许基于路由机制的外部流量进入Kubernetes集群。它提供了路由规则来管理外部用户通过HTTP/HTTPS对Kubernetes集群的访问。
为什么我们要使用ingress?
当你的集群上有多个服务,并希望用户请求根据他们的路径被路由到服务时,就可以使用ingress。
例如,如果我必须去geeksforgeeks.com,那么geeksforgeeks域名将指向我的集群,我的集群应该知道这个请求到底指向哪里,这个工作由ingress来完成。
它是如何工作的?


在上面的图中。
- 用户访问浏览器中的URL,基本上会被重定向到ingress服务。
- 然后,服务将请求转发给控制器,控制器检查规则,并根据这些规则决定将请求发送到哪里。
- 如果是geeksforgeeks.com,那么我们就去这个特定的服务,如果是tutorialspoint.com,那么我们就去这个服务。
- 这些服务充当了pod的负载平衡器,因此你的请求是通过服务被发送到pod的。
此外,为了更好地理解,让我们进入演示环节
1.如果你的系统中没有安装minikube和kubectl
2.启动你的minikube集群
minikube start
3.启用nginx ingress控制器
minikube addons enable ingress
4.检查命名空间
kubectl get namespaces


在这里,你会看到 "ingress-nginx"
5.验证它是否正在运行
kubectl get pods -n ingress-nginx


现在,让我们部署一个Hello World应用程序
1.创建一个用于部署的清单文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: ingress-demo
spec:
selector:
matchLabels:
app: myapp
replicas: 1
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: ingress-cont
image: gcr.io/google-samples/hello-app:1.0
在这里,我创建了一个名称为 "1复制 "的部署。
2.应用这个文件
kubectl apply -f [file-name]
kubectl apply -f ingress-deploy.yaml
3.检查部署、豆荚和副本的状态
kubectl get deployments
kubectl get pods
kubectl get replicaset
4.现在,公开这个部署
kubectl expose deployment ingress-demo --type=NodePort --port=8080
5.验证服务
kubectl get service
通过节点IP和节点端口访问该应用程序
6.要检查节点IP
kubectl get nodes -o wide


打开你的浏览器,像这样输入<节点-IP>:<节点-端口>[192.168.49.2:31900]。


你会看到这样的输出
7.现在,让我们为Ingress创建一个清单文件
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-app
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: hello-worldapp.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: ingress-demo
port:
number: 8080
此清单文件与 kubernetes 中所有其他清单文件类似。在这里,种类是Ingress,在元数据文件中,它包括关于Ingress的详细信息,如名称、注释。在规范部分,我们写了规则,对于规则,我们将提到主机,这样我们就可以用域名而不是IP地址访问应用程序。
8.应用这个清单文件
kubectl apply -f [file-name]
9.9.让我们进行验证
kubectl get ingress
归档的地址需要几分钟的时间


在你的系统中的hosts(/etc/hosts)文件中添加主机和地址


进入你的浏览器,输入hello-worldapp.com


你会看到这个输出
结论
与其通过IP地址和端口访问你的应用程序,不如创建入口规则,通过域名访问你的应用程序。