創建Nginx Ingress
更新時間 2025-05-27 17:22:20
最近更新時間: 2025-05-27 17:22:20
分享文章
本文介紹如何創建Nginx Ingress。
Ingress是Kubernetes集群中一種API對象,屬于網絡路由和負載均衡中的一個概念。它的主要作用是將外部的流量路由到集群內部的服務,您可以通過Ingress資源來配置不同的轉發規則,從而根據不同的規則設置訪問集群內不同的Service所對應的后端Pod。本文將介紹如何通過控制臺和Kubectl方式創建、查看、更新和刪除Ingress。
前提條件
確保您已經創建Serverless集群,具體操作請參閱創建Serverless集群。
方式一:控制臺操作指導
創建Ingress
- 登錄云容器引擎控制臺。
- 在控制臺的左側導航欄中點擊“集群” 。
- 在集群列表頁面中,單擊目標集群的名稱進入集群詳情界面。
- 在集群管理頁面的左側導航欄中,選擇“網絡” ,然后單擊“路由” 。
- 單擊路由頁面左上角的“創建路由” ,跳轉到創建Ingress頁面。創建路由時,整體上可以分為生產Ingress和灰度Ingress 。
- 創建灰度Ingress :
- 在流量切換方式中選擇灰度 。
- 選擇命名空間,創建灰度Ingress時必須關聯?個生產Ingress,用于實現生產Ingress和灰度Ingress之間的流量切換。
- 選擇流量切換方式,可以選灰度或者藍綠 。
- 選擇灰度后,支持兩種轉發方式:Header和Cookie。
- Header :根據http請求的頭部中是否包含指定key-value來選擇將請求轉發到生產Ingress還是灰度 Ingress。
- Cookie :根據http請求的Cookie中是否包含指定key-value來選擇將請求轉發到生產Ingress還是灰度Ingress,Cookie轉發時無法更改value和匹配方式。
- 選擇藍綠后,藍綠轉發可以選擇轉發到生產Ingress和灰度Ingress的流量權重:
- 全部切到生產:將請求全部轉發到生產Ingress。
- 全部切到灰度:將請求全部轉發到灰度Ingress 。
- 自定義百分比:如30%表示將30%的請求轉發到灰度Ingress,70%的請求轉發到生產Ingress。
- 創建生產Ingress :
- 在灰度Ingress選項中選擇否 。
- 填寫域名路徑規則,包括協議、域名、路徑、服務名稱以及服務端口等信息,支持添加多個規格。
管理Ingress
- 登錄云容器引擎控制臺。
- 在控制臺的左側導航欄中點擊“集群” 。
- 在集群列表頁面中,單擊目標集群的名稱進入集群詳情界面。
- 在集群管理頁面的左側導航欄中,選擇“網絡” ,然后單擊“路由” 。
- 在路由詳情頁面中,可以在目標路由的操作列中進行更新、刪除以及查看YAML等操作。
- 在路由詳情頁面中可以查看所有已經創建路由,點擊目標路由名稱可進一步看到該路由詳情。
方式二:Kubectl操作指導
創建Ingress
- 創建 test-ingress.yaml文件,示例內容如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: nginx:latest
ports:
- name: http
containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
selector:
app: my-app
ports:
- name: http
port: 8080
targetPort: 8080
type: ClusterIP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app-ingress
spec:
rules:
- host: my-app.example.com
http:
paths:
- path: /my-app/
pathType: Prefix
backend:
service:
name: my-app-service
port:
number: 8080
- 執行以下命令對相關對象進行創建。
kubectl apply -f test-ingress.yaml
查看Ingress
執行以下命令查看Ingress。
kubectl get ingress
更新Ingress
執行以下命令更新Ingress。
kubectl edit ingress my-app-ingress
刪除Ingress
執行以下命令刪除Ingress。
kubectl delete ingress my-app-ingress