在 Kubernetes 中使用 Nocalhost 開發 APISIX Ingress Controller

語言: CN / TW / HK

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]

參考資料

[1]

參考地址: https://apisix.apache.org