kubernetes實踐之四十四:Ingress詳解
一:簡介
Ingress資源物件,用於將不同URL的訪問請求轉發到後端不同的Service,以實現HTTP層的業務路由機制。Kubernetes使用一個Ingress策略定義和一個具體的Ingress Controller,兩者結合並實現了一個完整的Ingress負載均衡器。
Ingress Controller將基於Ingress規則將客戶請求直接轉發到Service對應的後端Endpoint上,這樣會跳過kube-proxy的轉發功能,kube-proxy 不再起作用。
二:使用Ingress
具體使用過程,請參照之前的博文http://blog.itpub.net/28624388/viewspace-2152650/
1.建立Ingress Controller
在定義Ingress策略之前,需要先部署Ingress Controller,以實現為所有後端Service提供一個統一的入口。Ingress Controller需要實現基於不同HTTP URL向後轉發的負載分發機制,並可以靈活設定7層的負載分發策略。如果公有云服務商提供該型別的HTTP路由LoadBalancer,則可以設定其為Ingress Controller.
在Kubernetes中,Ingress Controller將以Pod的形式執行,監控apiserver的/ingress埠後的backend services, 如果service發生變化,則Ingress Controller 應用自動更新其轉發規則。
2.安裝backend服務
為了讓Ingress Controller 能夠正常啟動,還需要為它配置一個預設的backend,用於在客戶端訪問的URL地址不存在時,能夠返回一個正確的404應答。這個backend服務用任何應用實現都可以,只要滿足預設對路徑的訪問返回404應答,並且提供/healthz完成對它的健康檢查。
三:Ingress策略配置
1.轉發到單個後端服務上
客戶端到Ingress Controller的訪問請求都將被轉發到後端的唯一Service上,這種情況下Ingress 無須定義任何rule.
2.同一域名下,不同的URL路徑被轉發到不同的服務上
3.不同的域名被轉發到不同的服務上
4.不使用域名的轉發規則
注意,使用無域名的Ingress轉發規則時,將預設禁用非安全HTTP,強制啟用HTTPS. 可以在Ingress的定義中設定一個 annotation "ingress.kubernetes.io/ssl-redirect=false" 來關閉強制啟用HTTPS的設定。
四:Ingress TLS安全設定
1.建立自簽名的金鑰和SSL證書檔案
2.將證書儲存到Kubernetes中的一個Secret資源物件上
3.將該Secret物件設定到Ingress 上
Ingress資源物件,用於將不同URL的訪問請求轉發到後端不同的Service,以實現HTTP層的業務路由機制。Kubernetes使用一個Ingress策略定義和一個具體的Ingress Controller,兩者結合並實現了一個完整的Ingress負載均衡器。
Ingress Controller將基於Ingress規則將客戶請求直接轉發到Service對應的後端Endpoint上,這樣會跳過kube-proxy的轉發功能,kube-proxy 不再起作用。
二:使用Ingress
具體使用過程,請參照之前的博文http://blog.itpub.net/28624388/viewspace-2152650/
1.建立Ingress Controller
在定義Ingress策略之前,需要先部署Ingress Controller,以實現為所有後端Service提供一個統一的入口。Ingress Controller需要實現基於不同HTTP URL向後轉發的負載分發機制,並可以靈活設定7層的負載分發策略。如果公有云服務商提供該型別的HTTP路由LoadBalancer,則可以設定其為Ingress Controller.
在Kubernetes中,Ingress Controller將以Pod的形式執行,監控apiserver的/ingress埠後的backend services, 如果service發生變化,則Ingress Controller 應用自動更新其轉發規則。
2.安裝backend服務
為了讓Ingress Controller 能夠正常啟動,還需要為它配置一個預設的backend,用於在客戶端訪問的URL地址不存在時,能夠返回一個正確的404應答。這個backend服務用任何應用實現都可以,只要滿足預設對路徑的訪問返回404應答,並且提供/healthz完成對它的健康檢查。
三:Ingress策略配置
1.轉發到單個後端服務上
點選(此處)摺疊或開啟
-
apiVersion: extensions/v1beta1
-
kind: Ingress
-
metadata:
-
name: test-ingress
-
spec:
-
backend:
-
serviceName: myweb
- servicePort: 8080
2.同一域名下,不同的URL路徑被轉發到不同的服務上
點選(此處)摺疊或開啟
-
apiVersion: extensions/v1beta1
-
kind: Ingress
-
metadata:
-
name: test-ingress
-
spec:
-
rules:
-
- host: mywebsite.com
-
http:
-
paths:
-
- path: /web
-
backend:
-
serviceName: web-service
-
servicePort: 80
-
- path: /api
-
backend:
-
serviceName: api-service
- servicePort: 8081
3.不同的域名被轉發到不同的服務上
點選(此處)摺疊或開啟
-
apiVersion: extensions/v1beta1
-
kind: Ingress
-
metadata:
-
name: test-ingress
-
spec:
-
rules:
-
- host: foo.bar.com
-
http:
- paths:
-
- backend:
-
serviceName: service1
-
servicePort: 80
-
- host: bar.foo.com
- http:
- paths:
- - backend:
- serviceName: service2
- servicePort: 80
點選(此處)摺疊或開啟
-
apiVersion: extensions/v1beta1
-
kind: Ingress
-
metadata:
-
name: test-ingress
-
spec:
-
rules:
- - http:
-
paths:
-
- path: /web
-
backend:
-
serviceName: web-service
-
servicePort: 80
-
四:Ingress TLS安全設定
1.建立自簽名的金鑰和SSL證書檔案
2.將證書儲存到Kubernetes中的一個Secret資源物件上
3.將該Secret物件設定到Ingress 上
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-2154773/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- kubernetes實踐之十二:部署Traefik Ingress
- kubernetes實踐之十三: 負載均衡機制Ingress負載
- kubernetes實踐之四十三: Service詳解
- kubernetes物件之Ingress物件
- Kubernetes Ingress 日誌分析與監控的最佳實踐
- kubernetes之Ingress釋出Dashboard(二)
- Kubernetes Ingress
- kubernetes實踐之十一:EFK
- kubernetes實踐之六十:Cabin-Manage Kubernetes
- kubernetes實踐之五十七:PodPreset
- kubernetes實踐之五十八:CronJob
- kubernetes實踐之五十二:Helm
- kubernetes實踐之五十九:NetworkPolicy
- kubernetes實踐之十九:API概述API
- kubernetes實踐之十七:架構架構
- kubernetes實踐之八:TLS bootstrappingTLSbootAPP
- kubernetes實踐之十:Kubernetes-dashboard+Heapster+InfluxDB+GrafanaUXGrafana
- Nginx Ingress 高併發實踐Nginx
- kubernetes實踐之四十二:StatefulSet
- kubernetes實踐之六十四:CoreDNSDNS
- kubernetes實踐之五十六:雲原生
- kubernetes實踐之五:網路模型模型
- kubernetes實踐之九:kube-dnsDNS
- GitOps實踐之kubernetes安裝argocdGitGo
- kubernetes實踐之五十五:kubectl之配置kubeconfig
- Kubernetes:Ingress總結(二)
- Kubernetes:Ingress總結(一)
- Kubernetes Ingress-nginx使用Nginx
- Kubernetes基於haproxy實現ingress服務暴露
- Ingress-nginx工作原理和實踐Nginx
- kubernetes實踐之十四:Service Account與Secret
- kubernetes實踐之四十七:ResourceQuota ControllerController
- kubernetes實踐之六十五:Service Mesh
- kubernetes實踐之六十二:Secret 使用
- kubernetes實踐之六十三:使用技巧
- kubernetes生產實踐之redis-clusterRedis
- Kubernetes Ingress簡單入門
- Kubernetes 使用 Ingress-nginx 實現灰度釋出功能Nginx