Ingress & Ingress Controller 教學

使用 Nginx Ingress Controller

在 Kubernetes 中,Ingress 是一種 API 對象,允許 HTTP 和 HTTPS 的流量路由進入集群內的服務。Ingress Controller 是用來實現這些路由規則的控制器,它負責監控 Ingress 資源,並基於定義的路由規則來管理流量。本文將介紹如何安裝並配置 Nginx Ingress Controller 來處理 Kubernetes 中的流量。

目錄

  1. Ingress & Ingress Controller 概述

  2. 安裝 Nginx Ingress Controller

  3. 創建 Ingress 資源

  4. 調整本機 Hosts 檔案

  5. 測試 Ingress 路由

  6. 總結


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