什麼是Ingress?

更新於 發佈於 閱讀時間約 4 分鐘

本次分享一個K8S網路的一個很重要的元件:Ingress(準確來說,這裡專指Kubernetes Ingress),以下是本文的幾個重點:

  1. 什麼是Ingress?
  2. 有沒有ingress差別在那?
  3. ingress controller?
  4. ingress怎麼寫?
  5. 結論

1. 什麼是Ingress?

  • Ingress = 進入Kubernetes cluster的流量
  • Egress = 離開Kubernetes cluster的流量
Ingress & Egress

Ingress & Egress

沒了,最簡單的解釋就是這樣。如果還要再細節點,可以說:

  • Ingress 是Kubernetes的原生資源(就等同於Pod…),裝好就可以使用
  • 透過Ingress我們可以自行維護DNS
  • 利用將規則加到路由,將k8s外部來源導至k8s內部應用服務的一種資源

2. 有沒有Ingress的差別?

  • 不使用Ingress,如上述,就會需要在service內加入像是NodePort的方式以IP:Port將服務暴露給外界
不使用ingress

不使用ingress

使用Ingress+Ingress controller,可以直接在Loadbalancer與內部應用service中間加入一層具備規則的控制元件,可以直接跟據規則將流量導引至正確的地方

加入了ingress controller

加入了ingress controller

3. ingress controller?

如果要讓ingress rule可以運行,就必須要有ingress controller存在。

Ingress controller基本上是「反向代理 web server」的實作,在K8S世界會被部署成K8S deployment的型式以LoadBalancer service存在。

在一座cluster內可以有許多ingress controller對應到多組loadbalancer,每個ingress controller都必須在annotation有唯一的ingress-class的識別名稱。

以nginx為例的ingress controller運作方式

以nginx為例的ingress controller運作方式

4. ingress怎麼寫?

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: test-ingress
namespace: dev
spec:
rules:
- host: test.apps.example.com
http:
paths:
- backend:
serviceName: hello-service
servicePort: 80

說明:
往test.apps.example.com的流量,透過此ingress導向到k8s內dev namespace的SVC
hello-service:80可以透過「path-based」的方式加入多個routing endpoint,還可
以加入TLS設定

5. 結論

  • 1. kubernetes ingress是利用將規則加到路由流量,將k8s外部來源導至k8s內部應用服務的一種資源
  • 2. Ingress簡單來說就是進入的行為
  • 3. 透過ingress controller的使用可以動態的進行路由規則的更新
  • 4. OpenShift架構下,預設使用HAProxy成為ingress controller
  • 5. Ingress controller 並不是K8S原生的資源,一座cluster內可以有許多ingress controller對應到多組loadbalancer
  • 6. nginx是其中一種常見的ingress controller
  • 7. ingress controller具備有LB的功能,如果沒有controller,就無法進行規則路由的動作
  • 8. Ingress不是LB,但ingress controller有LB的功能
  • 9. 如果沒有ingress controller就沒有路由規則的能力

------------------------------------------------------------------------
※ 參考來源:

留言
avatar-img
留言分享你的想法!
avatar-img
超健忘閒人的沙龍
15會員
40內容數
記錄IT社畜的自我學習筆記,如同專題名稱,主要是怕自已忘記自已做過什麼、學到什麼。索性就分享我自已在學習Kubernetes這條路上的各種測試、學習心得。
2024/05/08
本文將介紹如何在Gitlab上部署和註冊runner,以進行CI/CD測試。透過Docker-compose方式進行部署,同時注意安裝時的一些注意事項。建議學習者至少掌握一種以上的Pipeline工具,以滿足實務上的需求。
Thumbnail
2024/05/08
本文將介紹如何在Gitlab上部署和註冊runner,以進行CI/CD測試。透過Docker-compose方式進行部署,同時注意安裝時的一些注意事項。建議學習者至少掌握一種以上的Pipeline工具,以滿足實務上的需求。
Thumbnail
2024/04/19
上一篇說明了如何在Kubernetes上建立基本的MySQL standalone,並加入phpmyadmin(PMA)來進行圖形化的管理,本篇就再進階一步,實作MySQL replication架構(master-salve),並進行驗證是否成功。
Thumbnail
2024/04/19
上一篇說明了如何在Kubernetes上建立基本的MySQL standalone,並加入phpmyadmin(PMA)來進行圖形化的管理,本篇就再進階一步,實作MySQL replication架構(master-salve),並進行驗證是否成功。
Thumbnail
2024/04/09
本文記錄如何在Kubernetes環境下,部署Standalone架構的MySQL Database,並透過phpmyadmin進行管理。這篇文章將分成MySQL部署在K8S內的優勢、部署MySQL DB standalone、部署PhpMyAdmin (PMA)、結論四個部分進行說明與實作的流程。
Thumbnail
2024/04/09
本文記錄如何在Kubernetes環境下,部署Standalone架構的MySQL Database,並透過phpmyadmin進行管理。這篇文章將分成MySQL部署在K8S內的優勢、部署MySQL DB standalone、部署PhpMyAdmin (PMA)、結論四個部分進行說明與實作的流程。
Thumbnail
看更多
你可能也想看
Thumbnail
本文將探討Kubernetes內部DNS解析的相關流程,並介紹如何利用DNS來找到服務。透過瞭解DNS的工作原理,可以讓應用服務的問題處理更有效率,並提供基本測試與結論。
Thumbnail
本文將探討Kubernetes內部DNS解析的相關流程,並介紹如何利用DNS來找到服務。透過瞭解DNS的工作原理,可以讓應用服務的問題處理更有效率,並提供基本測試與結論。
Thumbnail
本篇將分享關於nginx ingress controller的基本操作,包括預先準備、流程、實際操作、將domain name 映射到Ingress LB IP、部署Demo App 驗證以及結論。
Thumbnail
本篇將分享關於nginx ingress controller的基本操作,包括預先準備、流程、實際操作、將domain name 映射到Ingress LB IP、部署Demo App 驗證以及結論。
Thumbnail
最近在部署一些解決方案時,碰到了關於名稱解析上的一些問題,雖然有時候不難解決,但我發現如果清楚K8S有關於名稱解析的概念,會對除錯的時間與過程有很大的幫助。 透過本篇文章,除了幫自已留下問題查找的過程,同時也希望利用文章來整理自已對CoreDNS元件的一些觀念,同時也可以分享給大家參考。
Thumbnail
最近在部署一些解決方案時,碰到了關於名稱解析上的一些問題,雖然有時候不難解決,但我發現如果清楚K8S有關於名稱解析的概念,會對除錯的時間與過程有很大的幫助。 透過本篇文章,除了幫自已留下問題查找的過程,同時也希望利用文章來整理自已對CoreDNS元件的一些觀念,同時也可以分享給大家參考。
Thumbnail
因為想要使用FQDN的方式連接到Kubernetes cluster內部的應用服務,加上早已使用Linux Bind為測試環境的主要DNS
Thumbnail
因為想要使用FQDN的方式連接到Kubernetes cluster內部的應用服務,加上早已使用Linux Bind為測試環境的主要DNS
Thumbnail
本次分享一個K8S網路的一個很重要的元件:Ingress。 有沒有ingress差別在那?
Thumbnail
本次分享一個K8S網路的一個很重要的元件:Ingress。 有沒有ingress差別在那?
Thumbnail
在雲端建立AKS後,運行後有許多Container會被外部服務呼叫使用。但我們知道當我們佈署到AKS,如果要被外面服務呼叫,就要在YAML將Type設定成Loadbalance,一旦這樣設定,就會變成每個Container就會多出一個對外的IP,Container變多了,對外IP就會擴增很快,也不好
Thumbnail
在雲端建立AKS後,運行後有許多Container會被外部服務呼叫使用。但我們知道當我們佈署到AKS,如果要被外面服務呼叫,就要在YAML將Type設定成Loadbalance,一旦這樣設定,就會變成每個Container就會多出一個對外的IP,Container變多了,對外IP就會擴增很快,也不好
Thumbnail
什麼是Kubernetes Service? 先來個官網的解說 A Kubernetes Service is an abstraction which defines a logical set of Pods and a policy by which to access them. 白話文就是
Thumbnail
什麼是Kubernetes Service? 先來個官網的解說 A Kubernetes Service is an abstraction which defines a logical set of Pods and a policy by which to access them. 白話文就是
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News