Kubernetes Ingress 使用教程
1. 项目介绍
Kubernetes Ingress 是一种用于管理集群外部访问的服务路由机制,它通过定义一组规则来让HTTP/HTTPS 请求能够透明地达到内部服务。ingress-nginx
是一个基于 Nginx 实现的 Ingress 控制器,它将 Ingress 规则转化为具体的 Nginx 配置,实现了反向代理和负载均衡功能。
2. 项目快速启动
以下是一步一步的快速启动指南:
安装 Helm
首先确保已安装 Helm 仓库管理工具:
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
添加 Nginx Inc. 库
添加官方 Helm 仓库到你的系统:
helm repo add nginx-stable https://helm.nginx.com/stable
helm repo update
创建 ServiceAccount 和 RoleBinding
创建必要的 RBAC 权限,以便 Ingress 控制器可以操作 Kubernetes 资源:
apiVersion: v1
kind: ServiceAccount
metadata:
name: nginx-ingress-serviceaccount
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations: {}
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
name: ingress-nginx-admission
rules:
- apiGroups:
- extensions
- networking.k8s.io
resources:
- ingresses
- ingresses/status
- pods
- secrets
verbs:
- create
- get
- list
- watch
- patch
- update
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
annotations: {}
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
name: ingress-nginx-admission
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: ingress-nginx-admission
subjects:
- kind: ServiceAccount
name: nginx-ingress-serviceaccount
namespace: kube-system
安装 Ingress 控制器
使用 Helm 部署 Ingress 控制器:
helm install nginx-ingress nginx-stable/nginx-ingress \
--namespace kube-system \
--set controller.replicaCount=2 \
--set defaultBackend.enabled=true
验证安装
检查 Nginx Ingress 控制器是否正在运行:
kubectl get pods -n kube-system -l app=kube-nginx-ingress-controller
3. 应用案例和最佳实践
示例:简单路由规则
创建一个简单的 Ingress 资源以将流量分配给特定服务:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: simple-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
这将把 example.com
上的所有请求路由到名为 my-service
的 Kubernetes 服务。
最佳实践
- 使用稳态域名:为每个服务定义不同的主机名或路径,避免冲突。
- 配置 TLS 证书:使用 Secret 管理 TLS 证书,以实现安全的 HTTPS 访问。
- 健康检查:定义后端服务的健康检查,以确保可用性。
4. 典型生态项目
- Kubernetes:Ingress 基于 Kubernetes API,是其生态系统的一部分。
- Helm:用于部署和管理 Ingress 控制器的包管理工具。
- Nginx:作为反向代理和负载均衡器的核心组件。
- Cert-Manager:自动化证书管理和更新的项目,常与 Ingress 配合使用以支持 SSL/TLS。
以上即为 ingress-nginx
在 Kubernetes 上的部署及使用基础。更多详细的配置选项和高级特性,请参考 官方文档 和 GitHub 项目页面。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考