在 Kubernetes 中使用 Nocalhost 開發 APISIX Ingress Controller
關 注 微 信 公 眾 號 《 雲 原 生 C T O 》 更 多 雲 原 生 幹 貨 等 你 來 探 索
專 注 於 雲原生技術
分 享
提 供 優 質 雲原生開發
視 頻 技 術 培 訓
面試技巧
, 及 技 術 疑 難 問 題 解答
雲 原 生 技 術 分 享 不 僅 僅 局 限 於 Go
、 Rust
、 Python
、 Istio
、 containerd
、 CoreDNS
、 Envoy
、 etcd
、 Fluentd
、 Harbor
、 Helm
、 Jaeger
、 Kubernetes
、 Open Policy Agent
、 Prometheus
、 Rook
、 TiKV
、 TUF
、 Vitess
、 Argo
、 Buildpacks
、 CloudEvents
、 CNI
、 Contour
、 Cortex
、 CRI-O
、 Falco
、 Flux
、 gRPC
、 KubeEdge
、 Linkerd
、 NATS
、 Notary
、 OpenTracing
、 Operator Framework
、 SPIFFE
、 SPIRE
和 Thanos
等
在 Kubernetes 中使用 Nocalhost 開發 APISIX Ingress Controller
本文將引導您使用 Nocalhost
將本地開發機器無縫連線到遠端 Kubernetes
叢集,從而允許您使用 IDE
開發和除錯 Apache APISIX Ingress Controller
。使您能夠使用現有技能輕鬆開發和除錯遠端應用程式。
先決條件
-
在您的工作站中準備一個可用的
Kubernetes
叢集。您可以使用您擁有名稱空間管理員許可權的任何Kubernetes
叢集。 -
已安裝
Helm v3.0+
-
GoLand IDE 2020.03+
(在本文中使用GoLand 2021.2
) -
安裝
Nocalhost JetBrains
外掛 -
安裝
Go 1.13
或更高版本
部署 Apache APISIX 入口控制器
我將通過 Nocalhost
在 GoLand
中部署 Apache APISIX Ingress Controller
:
-
在
GoLand
中開啟Nocalhost
外掛 -
使用叢集檢查器選擇要部署的名稱空間。
-
右鍵單擊選定的名稱空間,選擇
Deploy Application
,然後選擇Helm Repo
作為安裝方法。 -
在以下對話方塊中,輸入:
apisix-ingress-controllerasName
和https://charts.apiseven.comas Chart URL
。

讓我們 apisix-ingress-controller
通過在 IDE
中啟用埠轉發來測試部署後:
-
在叢集檢查器中找到
apisix-ingress-controller
工作負載,右鍵單擊並選擇Port Forward
-
新增埠轉發
8080:8080
-
訪問
http://127.0.0.1:8080/healthz
本地並檢查結果

開始開發
第 1 步:啟動開發模式
-
apisix-ingress-controller
在叢集檢查器中右鍵單擊部署,選擇Start DevMode
-
如果您已經在本地克隆,請選擇您的原始碼目錄,或者通過輸入
apache/apisix-ingress-controller
儲存庫URL
讓Nocalhost
為您克隆原始碼 -
等待操作,
Nocalhost
進入DevMode
後會在IDE
內開啟遠端終端
現在 apisix-ingress-controller
通過在遠端終端中輸入以下命令來啟動該過程:
go run main.go ingress --config-path conf/config-default.yaml
啟動後,通過訪問本地訪問服務並檢查結果。 apisix-ingress-controllerhttp://127.0.0.1:8080/healthz
第 2 步:更改程式碼並檢查結果
現在我將進行一些程式碼更改並檢查結果。
-
停止
apisix-ingress-controller
程序 -
搜尋
healthz
並找到該router.go
檔案。healthzResponse
將狀態碼從更改ok
為Hello Nocalhost
-
再次啟動該過程並在本地檢查更改結果
步驟 3. 結束 DevMode
現在關閉開發視窗並結束 DevMode
。
-
右鍵單擊
apisix-ingress-controller
叢集檢查器中的 -
選擇
End DevMode
Nocalhost
將apisix-ingress-controller
結束開發模式,並將apisix-ingress-controllerPod
重置為其原始版本。啟用埠轉發並在結束DevMode
後檢查結果。

程式碼變更:開發模式下的所有程式碼變更只會在開發容器中生效。
退出開發模式後, Nocalhost
會將遠端容器重置為原始狀態(程式碼修改前)。這樣,退出開發模式後,程式碼的修改不會對原有環境造成任何改變或影響。
除錯
除錯一個應用程式並不容易,在 Kubernetes
叢集中除錯一個應用程式就更難了。 Nocalhost
可提供與在遠端 Kubernetes
叢集中除錯時在 IDE
中使用的相同的除錯體驗來提供幫助。
第一步:開始遠端除錯
我們可以通過以下方式開始遠端除錯:
-
右鍵單擊
apisix-ingress-controller
並選擇Remote Debug
-
Nocalhost
將apisix-ingress-controller
進入DevMode
並執行dev config
自動定義的除錯命令

第 2 步:單步執行斷點
healthz
現在在函式上設定一個斷點。將滑鼠懸停在行號左側,然後單擊紅點。設定好後, http://127.0.0.1:8080/healthz
在本地瀏覽器中訪問, GoLand
應該會彈出到前臺。單擊播放按鈕關閉請求,進度應繼續載入。
另外,由於我啟用了 dev.hotReload
,所以每次更改程式碼時, Nocalhost
都會自動重新執行除錯命令。這在您頻繁更改和除錯程式碼時非常有用。
遠端執行
不僅僅是遠端除錯, Nocalhost
還提供了一種在 Kubernetes
叢集中執行 Go
服務的簡單方法,以及熱過載!
您可以通過以下方式使用遠端執行功能:
-
右鍵單擊
apisix-ingress-controller
叢集檢查器,選擇Remote Run
-
Nocalhost
將apisix-ingress-controller
進入開發模式並dev config
自動執行定義的啟動命令
現在每次進行程式碼更改時, Nocalhost
都會自動觸發執行命令。您現在無需複雜配置即可享受 Go
的熱過載。
結論
我們已經學習瞭如何使用 Nocalhost
在 Kubernetes
中開發和除錯 APISIX Ingress Controller
。現在,我們可以通過即時反饋迴圈和高效的雲原生開發環境快速迭代,而不是等待緩慢的本地開發過程。
Apache APISIX
Apache APISIX
是一個雲原生微服務 API
閘道器
參考地址 [1]
參考資料
參考地址: https://apisix.apache.org
- 雲原生下一步的發展方向是什麼?
- 用更雲原生的方式做診斷|大規模 K8s 叢集診斷利器深度解析
- 多個維度分析k8s多叢集管理工具,到底哪個才真正適合你
- 使用 Kube-capacity CLI 檢視 Kubernetes 資源請求、限制和利用率
- 使用 Go 在 Kubernetes 中構建自己的准入控制器
- 雲原生數倉如何破解大規模叢集的關聯查詢效能問題?
- 雲原生趨勢下的遷移與災備思考
- 2022 年不容錯過的六大雲原生趨勢!
- 使用 Prometheus 監控 Golang 應用程式
- 雲原生時代下的機遇與挑戰 DevOps如何破局
- 如何在雲原生格局中理解Kubernetes合規性和安全框架
- 設計雲原生應用程式的15條基本原則
- 使用 Operator SDK 為 Pod 標籤編寫Controller
- Kubernetes Visitor 模式
- 為什麼雲原生是第二次雲革命
- 構建雲原生安全的六個重要能力
- 擴充套件雲原生策略的步驟有哪些?
- 七個值得關注的開源雲原生工具
- K8S - 建立一個 kube-scheduler 外掛
- 如何診斷 Kubernetes 應用程式中的 OOMKilled 錯誤