博客 / 詳情

返回

在 OpenResty Edge 中管理通往 Kubernetes(K8s)上游的流量

今天我將演示如何將 OpenResty Edge 作為 Kubernetes 集羣的一個功能強大的 ingress controller 使用。也就是説,當後端應用程序是運行在 Kubernetes 容器內部的時候,如何藉助 OpenRest Edge 管理其流量。
圖片
在本教程中,我們將在一個 Edge 應用中創建一個 Kubernetes 上游。Edge 網關服務器可以運行在 Kubernetes 集羣內部,也可以在其外部運行。Edge 的 Admin 服務器會通過其 API 服務器持續監控 Kubernetes 集羣。而且會響應 Kubernetes 節點(或容器)的在線和離線事件,自動更新上游服務器列表。
圖片
申請試用 OpenResty Edge如何創建及使用 Kubernetes 上游讓我們進入 OpenResty Edge 的 Admin Web 控制枱。這就是我們控制枱的樣本部署。每個用户都有自己的本地部署。
圖片
首先,我們需要在一個專門的網關分區中設置一個可以連接到 Kubernetes 服務的網關服務器。
圖片
跳轉到網關分區頁面。
圖片
我們已經創建了一個網關分區,名為 kubernetes-test-partition。
圖片
分區內包含一個名為 kubernetes-test-cluster 的網關集羣。
圖片
我們需要一個單獨的網關分區,因為不是所有的網關服務器都能連接到我們的 Kubernetes 服務。跳轉到 kubernetes-test-cluster 集羣。
圖片
在這個網關集羣中已經定義了一個網關服務器。我們需要確保這個網關服務器可以連接到我們的 Kubernetes 集羣。
圖片
創建 Kubernetes 集羣我們在 Edge 應用中創建新的 Kubernetes 上游之前,需要先在全局範圍內註冊 Kubernetes 集羣。跳轉到 Kubernetes 頁面。
圖片
點擊這個按鈕來添加一個新的 Kubernetes 集羣。
圖片
為了接收新通知,OpenResty Edge Admin 需要建立與 Kubernetes 的 HTTPS API 服務器的連接。輸入 Kubernetes API 服務器的主機名或 IP 地址。
圖片
然後輸入端口號。
圖片
接下來輸入 kubernetes 集羣的名稱。
圖片
停用 SSL 證書驗證。這是因為我們的 Kubernetes API 服務器的證書是自籤的。
圖片
我們還需要一個 token 來訪問 Kubernetes API 服務器,這個 token 要有足夠的權限。
圖片
點擊 “How to generate this token” 這個鏈接可以打開一個彈窗。
圖片
這裏説明了如何從你自己的 Kubernetes 部署中生成一個 token。 現在讓我來演示一下這個過程。關閉這個彈窗。
圖片
我們需要準備一個名為 token.yml 的配置文件。下面是這個文件的一個樣本。可以用它來創建一個具有讀取權限的賬户,以訪問
圖片
命名空間、
圖片
服務、
圖片
端點,以及
圖片
Pods 對象。
圖片
使用以下命令創建賬户。1kubectl apply -f /root/token.yml
圖片
最後,我們使用下面的命令來獲取賬户的 token。
圖片
“token:” 後面的文字就是我們需要的 token。
圖片
現在我們有了一個訪問 Kubernetes API 服務器的 token。將我們剛剛創建的 API token 粘貼到這裏。
圖片
單擊 “創建” 按鈕。
圖片
通過 OpenResty Edge 管理所有應用程序創建 Kubernetes 上游到這一步我們已經在全局範圍內註冊了 Kubernetes 集羣。現在是時候在 Edge 應用程序中創建一個上游來利用這個集羣了。
圖片
跳轉到應用程序列表頁。
圖片
我們已經準備了一個名為 www.kubernetes-edge-test.com 的 Edge 應用程序。
圖片
這個應用程序被映射到我們之前展示的網關分區。
圖片
進入這個應用。
圖片
進入 “Upstreams” 頁面。
圖片
點擊新建 Kubernetes 上游。
圖片
輸入 Kubernetes 上游的名稱 “my kubernetes backend”。
圖片
選擇一個 Kubernetes 集羣作為目標。
圖片
選擇我們剛剛創建的那個 Kubernetes 集羣。
圖片
選擇目標 Kubernetes 的命名空間。
圖片
選擇名為 “default” 的命名空間。你也可以選擇其他的命名空間。
圖片
從列表中選擇一個 Kubernetes 服務。
圖片
選擇 “test-hello” 服務。
圖片
以及服務的端口。
圖片
在我們這個例子中是 80 端口。
圖片
保存新的上游。
圖片
現在我們成功創建了一個新的 Kubernetes 上游。
圖片
上游服務器地址顯示在這裏。
圖片
它們是從 Kubernetes 集羣自動同步的 Kubernetes 節點或容器。
圖片
創建頁面規則使用 Kubernetes 上游就像普通的上游一樣,我們仍然需要創建一個新的頁面規則來使用這個新的 Kubernetes 上游。跳轉到頁面規則頁面。
圖片
點擊這個 “新建規則” 按鈕。
圖片
啓用 Proxy 這個動作。
圖片
點擊這個 “代理到上游” 下拉列表。
圖片
選擇我們剛剛創建的 Kubernetes 上游 “my kubernetes backend”。
圖片
保存這個頁面規則。
圖片
像往常一樣,需要發佈一個新的版本來推送我們剛才的改動。
圖片
點擊這個按鈕。
圖片
發佈!
圖片
同步完成。
圖片
現在,新的頁面規則已經被推送到所有的網關集羣和服務器。
圖片

圖片

圖片
這些配置的變化不需要服務器重載、重啓或二進制升級。所以它是非常高效和可擴展的。
圖片
通過 OpenResty Edge 管理所有應用程序測試接下來,我們會在相應分區中找到 Edge 網關服務器來做實際的測試。跳轉到網關集羣頁面。
圖片
找到相應的網關服務器。
圖片
請記住它的公共 IP 地址是以 .196 結尾的。
圖片
複製這個 IP 地址,以便我們可以在命令行上使用它。在終端上,嘗試通過這個網關服務器訪問 Kubernetes 服務。
圖片
注意,我們使用的是剛才複製的網關服務器的 IP 地址。
圖片
運行這個命令。
圖片
可以看到對這個服務的訪問是成功的。在本教程餘下的部分裏,我們將修改 Kubernetes 服務的配置。
圖片
我們將臨時把 Kubernetes 節點的數量增加到 3 個。1kubectl scale --replicas=3 deployment test-hello
圖片
擴展成功完成。
圖片
讓我們檢查一下新的節點。1kubectl get pods -o wide
圖片
現在確實有 3 個 Kubernetes 節點。
圖片
Edge Admin 會自動更新 Kubernetes 上游反映這個變化。回到我們的 Edge 應用程序頁面來檢查一下。
圖片

圖片
返回到上游頁面。
圖片
刷新 Upstreams 頁面更新數據。
圖片
耶! Kubernetes 上游確實有 3 台服務器了!
圖片
同樣地,如果 Kubernetes 節點較少,Edge Admin 也會自動更新上游。這就是我今天要講的內容。
圖片
如果您喜歡本文,歡迎關注我們 OpenResty Inc. 公司的博客網站 。也歡迎掃碼關注我們的微信公眾號:
圖片

user avatar frank001 頭像 lzjc 頭像
2 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.