目录
- 1. 安装Nginx Ingress Controller
- 2. 准备TLS证书
- 3. 编写Ingress资源定义
- 4. 应用Ingress配置
- 5. 验证配置
1. 安装Nginx Ingress Controller
首先,确保你的Kubernetes集群已经准备好。你可以使用Helm或者直接通过yaml文件来安装Nginx Ingress Controller。这里给出一个使用Helm的简单示例:
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
helm install ingress-nginx ingress-nginx/ingress-nginx \--set controller.replicaCount=2 \--set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \--set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux
2. 准备TLS证书
如果你的应用需要通过HTTPS访问,你需要创建一个Kubernetes Secret来存储TLS证书。这通常包含证书文件(.crt
)和私钥文件(.key
):
kubectl create secret tls tls-secret --key /path/to/tls.key --cert /path/to/tls.crt --namespace ingress-nginx
3. 编写Ingress资源定义
接下来,你需要定义Ingress资源来指定流量应该如何被路由到后端服务。下面是一个简单的Ingress YAML示例,它定义了基于路径的路由规则,并指定了TLS配置:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: example-ingressnamespace: defaultannotations:# 指定Ingress Classkubernetes.io/ingress.class: "nginx"# 强制HTTPS重定向nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
spec:tls:- hosts:- example.comsecretName: tls-secretrules:- host: example.comhttp:paths:- path: /api/v1pathType: Prefixbackend:service:name: api-serviceport:name: http- path: /pathType: Prefixbackend:service:name: web-serviceport:number: 80
4. 应用Ingress配置
使用kubectl应用上述Ingress配置:
kubectl apply -f ingress.yaml
5. 验证配置
最后,通过访问Ingress中定义的域名和路径,验证配置是否生效。如果配置了HTTPS,确保使用HTTPS访问,并检查是否有正确的重定向行为。
注意事项
- 确保你的集群中的服务和部署已经正确配置并且运行正常。
- 根据实际情况调整Ingress Controller的安装参数,比如hostNetwork、dnsPolicy等。
- 使用适当的annotations来满足特定需求,如跨域、请求超时、限流等。
- 监控Ingress Controller的日志,以便于调试和故障排查。