如何使用 Google Cloud Code extension 加速雲端應用開發

TKHuang
Gemini Open Cloud 雙子星雲端
7 min readSep 29, 2021

--

開發雲端應用程式最容易遇到本地開發沒問題,部署到雲端後卻遇到環境不同問題導致的不可預期 BUG 發生,讓我們來看看 Google 釋出的 Cloud Code Extension如何舒緩這個問題。

Google Cloud Code 是一個 Google 提出的 K8s 應用程式開發套件,可以於 VSCode, IntelliJ, PyCharm 等 IDE 上安裝,其中整合了 Google API、DevOps 工作流、自動化執行測試、建置與部署。

大多數開發者都是在本地環境進行開發,但在開發雲端應用程式的時候,常常因為本地環境與雲端環境的差異,導致有些 BUG 只能夠在開發後期發現,Google Cloud Code 則可以有效解決這個問題,透過自動化建置、部署到雲端環境,讓開發者可以很輕易的在雲端環境上測試程式,提早發現問題。

開發 K8s 應用程式需要具備許多基礎知識,Google Cloud Code 就為開發者提供了一系列預配置,簡單幾個設定就可以快速建立一個開發環境,其中包括了自動建置、測試、部署,開發者只要編輯後並儲存程式碼,系統就會自動建置在設定的平台上,可以快速看到程式碼結果,開發者不需要不斷的手動建置部署,節省大量的測試時間,而這套開發流程也同樣套用於 Google Cloud 上,Google Cloud Code 整合了 Cloud Build、Container Registry,所有建置、測試、部署都可以在雲端上完成,讓雲端應用程式開發變成一件很方便的事。

How to

這邊使用 VSCode IDE 作為演示。

Dev on local

1. 在 Extension 頁面搜尋 cloudcode 並安裝。

2. 點選左下角 Cloud Code,選擇 New Application -> Kubernetes Application -> 選擇你的語言。

3. 專案建置好後,可以看到系統已經幫我們建置好了基本架構。

4. 什麼都不修改,先跑在本地環境試試,點選下方 Cloud Code -> Run on kubernetes,待程式部署完成後可以看到下方 Output 頁面顯示 Update succeeded 並附上連結,點擊連結就可以打開剛剛部署的網頁。

程式可能會跳出詢問 gcp project id,這邊可以先略過。
如果有跳出詢問要選擇哪個 k8s 平台,可以選擇 minikube,若還沒安裝可以參考官網

5. 隨便修改一下程式碼並儲存,Cloud Code 插件就會自動打包 image 並重新部署應用程式。

網頁可能需要手動重新整理。
可以看到網頁多出了 It’s updated!

Dev on GCP

我們拿剛剛建置好的環境繼續使用,修改一下專案設定即可。

1. 先去 Google Cloud 建立一個專案,並記錄下 Project ID,這邊的 ID 是
cloud-322605

2. 然後我們需要在 GCP 上建立一組 K8s 環境,Cloud Code 插件很貼心的把這功能也包在裡面了,我們不需要到 GCP 主控台就可以做到,連需要的 API 都會自動幫我們打開,非常的方便。

這邊選擇 Standard

點選後瀏覽器會被導引到 GCP 頁面,設定都使用預設,然後建立

K8s 叢集建立過程中,可以看到 VSCode 正在等在叢集建立

從 GCP 主控台看到叢集建立完後,在 VSCode 點選 Refresh 就可以看到剛才建立的 K8s 叢集了,選取叢集後 Cloud Code 就會幫我們把叢集加入 kubeconfig,這樣就準備好了!

3. 在 VSCode 點選 Cloud Code -> Run on kubernetes,此時會詢問要使用哪一座 K8s。選擇剛才新增的 GCP cluster。

4. VSCode 接著詢問要使用哪個 Container registry,直接按 Enter 就好,接著 Cloud Code 就會開始打包 image -> 上傳到 GCP Container Registry -> 部署 container 在 GCP 叢集上。

在 Container Registry 可以看到 image 已經被上傳

5. 目前看起來很順利,但是 image 還是在本地建置的,如果連 image 建置也要在 GCP 上呢?

這時就需要打開專案內 skaffold.yaml 檔案做修改,在 build 下加入以下程式碼

googleCloudBuild:
projectId: cloud-322605 # 這邊的 ID 是 cloud-322605,請修改成自己的 project id
concurrency: 0
dockerImage: gcr.io/cloud-builders/docker

完成後你的 yaml 檔應該會像這樣

# To learn more about the skaffold.yaml schema visit
# https://skaffold.dev/docs/references/yaml/
apiVersion: skaffold/v2beta4
kind: Config
build:
tagPolicy:
sha256: {}
artifacts:
— context: .
image: nodejs-hello-world
googleCloudBuild:
projectId: cloud-322605
concurrency: 0
dockerImage: gcr.io/cloud-builders/docker
deploy:
kubectl:
manifests:
— kubernetes-manifests/**
profiles:
- name: cloudbuild
build:
googleCloudBuild: {}

6. 再次按下 Run on Kubernetes,就可以看到 build image 已經交由 GCP 的Cloud Build處理了

7. 稍等一會,來到 GCP 主控台就可以看到應用程式已經被部署了

總結

Google Cloud Code 有效地化解了本地環境與雲端環境的差異,讓開發者可以很輕易地在本地環境上開發雲端應用程式。Google Cloud Code 更整合了 GCP 服務如 Cloud Build、Container Registry 等,所有建置、測試、部署都可以在雲端上完成,讓雲端應用程式開發變成一件很方便的事。

雙子星雲端專注於混合多雲的規劃建置,是CNCF認證的Kubernetes服務供應商,提供容器雲、CI/CD的專業顧問服務。

--

--

TKHuang
Gemini Open Cloud 雙子星雲端

長年歸在電腦前的技術宅 TK,從事後端、ML、雲端 Application 開發。軟體技術如雲端般千變萬化,跟著雙子星雲端一起成長,站在雲端的肩膀上。