目錄
- 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的日志,以便于調試和故障排查。