一文读懂Ingress-Nginx以及实战教程
Ingress-Nginx简介
Ingress-Nginx是Kubernetes的一个入口控制器,它允许您将外部HTTP和HTTPS流量路由到集群内的服务。除了标准的HTTP/HTTPS路由功能外,Ingress-Nginx还支持WebSocket、gRPC、TCP和UDP协议。
实战教程:从零开始部署Ingress-Nginx
步骤1:环境准备
确保您的Kubernetes集群版本为v1.29.7,并且已经安装了Helm v3.15.3用于包管理。如果尚未安装,请参考Helm官方文档进行安装。
步骤2:添加Ingress-Nginx Helm仓库
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
步骤3:下载并修改Ingress-Nginx Chart
首先,下载Ingress-Nginx的Chart:
mkdir helm && cd helm
helm pull ingress-nginx/ingress-nginx --version 4.11.1
tar zxvf ingress-nginx-4.11.1.tgz
cd ingress-nginx
接下来,根据需要调整values.yaml
文件中的参数,例如镜像地址、NodePort端口等。
步骤4:部署Ingress-Nginx
使用以下命令检查配置是否正确:
helm install ingress-nginx . --dry-run=client --namespace=ingress-nginx
确认无误后,执行以下命令部署Ingress-Nginx:
helm install ingress-nginx . --namespace=ingress-nginx --create-namespace
步骤5:创建Deployment、Service和Ingress资源
以下是创建Nginx实例的YAML示例:
Nginx Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-test
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: registry.cn-hangzhou.aliyuncs.com/hcie/nginx:1.26.1-alpine
ports:
- containerPort: 80
Nginx Service:
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
type: ClusterIP
ports:
- port: 80
targetPort: 80
Ingress Resource:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-http
spec:
ingressClassName: "nginx"
rules:
- host: nginx.steven.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-service
port:
number: 80
使用如下命令应用上述配置:
kubectl apply -f ingress-test.yaml
步骤6:测试部署结果
通过查看Pod、Service和Ingress的状态来验证部署是否成功:
kubectl get deployment,svc,ingress
结论
通过这个实战教程,我们学习了如何在Kubernetes集群中部署和配置Ingress-Nginx。无论是简单的应用场景还是更复杂的需求,Ingress-Nginx都能够提供强有力的支持。希望本文能够帮助您更好地理解和使用Ingress-Nginx,如果您有任何问题或建议,欢迎留言讨论。