Ingress & Ingress Controller 教學
使用 Nginx Ingress Controller
在 Kubernetes 中,Ingress 是一種 API 對象,允許 HTTP 和 HTTPS 的流量路由進入集群內的服務。Ingress Controller 是用來實現這些路由規則的控制器,它負責監控 Ingress 資源,並基於定義的路由規則來管理流量。本文將介紹如何安裝並配置 Nginx Ingress Controller 來處理 Kubernetes 中的流量。
目錄
Ingress & Ingress Controller 概述
安裝 Nginx Ingress Controller
創建 Ingress 資源
調整本機 Hosts 檔案
測試 Ingress 路由
總結
1. Ingress & Ingress Controller 概述
Ingress
Ingress 是一個 Kubernetes 物件,用來定義如何將外部 HTTP 和 HTTPS 請求路由到集群內的服務。Ingress 使得 Kubernetes 中的服務能夠有一個統一的入口,並且可以根據不同的路由規則將請求分發到不同的服務。
Ingress 的基本結構如下:
apiVersion
:networking.k8s.io/v1
kind
:Ingress
metadata
: 包含名稱、標籤等元數據spec
: 定義了如何處理流量的規則(路由規則)
Ingress Controller
Ingress Controller 是一個負責監控 Kubernetes 中 Ingress 物件的控制器。它會根據 Ingress 資源中定義的路由規則,將外部流量轉發到相應的服務。Ingress Controller 是 Kubernetes 集群中運行的 Pod,通常是基於 Nginx、Traefik 或 HAProxy 等開源反向代理實現的。
2. 安裝 Nginx Ingress Controller
在 Kubernetes 集群中安裝 Nginx Ingress Controller 是非常簡單的,Nginx 官方提供了 Helm Chart 和 YAML 文件來進行部署。
使用 Helm 安裝
1. 建立 nginx ingress controller CRDs
在 Kubernetes 中,CRDs(Custom Resource Definitions,自訂資源定義)是讓你擴展 Kubernetes API 的一種方式。它允許你定義自訂的資源類型,使得 Kubernetes 能夠理解並操作你自定義的資源。以下將解釋 CRDs 的概念,並且說明一些常見指令的用途。
2. 首先安裝 Helm 前往官方 github 網站下載指令程式,並且完成系統環境變數設定
3. 選定目錄存放 ingress controller 設定文件
4. 使用 Helm 指令拉取ingress controller 資源
執行完會發先你的資料夾底下會出現 nginx-ingress
5. 進入 nginx-ingress 資料夾,執行部署 ingress controller
當然也可以使用YAML 建立 ingress controller ,這部分我就沒有成功過.... 所以就不補充了,後續如果我有成功,在跟各位分享實際做法與遇到什麼樣的問題
查看 k8s 集群內容
確認 ingress controller 狀態為 running,這樣基本上你已經完成了一半
3. 創建 Ingress 資源
當 Nginx Ingress Controller 成功安裝並運行後,您可以創建一個 Ingress 資源來將流量路由到您的服務。以下是一個基本的 Ingress 配置範例。
其中有註解的部分,如果你是根據前面的文章一路看到這邊,normal-project-service 的部分,前面的文章有設定 nodePort 需要將他移除掉,稍後會在補充完整的YML
normal-projecy yml其餘設定接不調整, 僅調整 Service 設定部分
ClusterIP:主要是用來後續如果多服務的架構,可透過ClusterIP進行內部通信 NodePort:移除掉,因為對外部分,就交給 ingress & ingress controller 管理
建立 ingress 並且查看資源狀態
4. 調整本機 Hosts 檔案
主要是因為我們要使用自訂義域名,去訪問我們所串建的服務
hosts 的檔案位置,就根據自己使用的系統,上網查一下位置在哪裡,並且進行修改,調整前請先備份一份起來避免修改錯誤。
像我自己本機的內部IP就是 172.20.61.17 ,所以我就設定 example-caster.com 指向 172.20.61.17,這樣我透過自訂義域名訪問,我的主機就會幫我轉發到我的內部IP。
5. 測試 Ingress 路由
6. 總結
在本文中,我們介紹了 Kubernetes 中的 Ingress 和 Ingress Controller,並且使用 Nginx Ingress Controller 作為流量路由的控制器。我們學會了如何安裝 Nginx Ingress Controller、創建 Ingress 資源,並測試路由功能。通過這種方式,您可以將外部 HTTP(S) 流量路由到 Kubernetes 集群中的服務,從而提高服務的可擴展性與靈活性。
這不就上扣了嗎? 很急吼 GitHub: 前往
居然都已經走到這邊了,後續會再把TSL也把他補上,未完待續.........
Last updated