使用 Cloud Shell & 進行開發Cloud Code

1. 總覽

Cloud Shell 是一套線上開發與作業環境,可透過瀏覽器隨時隨地存取。Cloud Shell 的線上終端機已預先載入 gcloud 指令列工具、kubectl 等公用程式,可讓您管理資源。您也可以使用線上 Cloud Shell 編輯器來開發、建構及部署雲端型應用程式,並對應用程式進行偵錯

在本研究室中,您將使用 Cloud Shell 和 Cloud Shell 編輯器,在本機模擬器和實際服務中使用 Cloud Code 建立及部署容器型應用程式,並進行測試。

學習目標

  • 瀏覽並熟悉 Cloud Shell 的主要功能
  • 練習不同的 Cloud Shell 使用模式
  • 自訂 Cloud Shell 環境,以供進階用途
  • 瞭解 Cloud Code 選項和功能
  • 瞭解適用於 Kubernetes 應用程式的 Cloud Code 詳細資料
  • 使用本機模擬器,例如 Minikube

必要條件

  • 您必須具備具備「編輯者」權限的 GCP 專案、GCP 帳戶,以及 Cloud Shell 的存取權
  • 至於選用部分,您需要具備終端機模擬器並安裝 Google Cloud SDK。

2. 設定和需求

自修環境設定

  1. 登入 Google Cloud 控制台,建立新專案或重複使用現有專案。如果您還沒有 Gmail 或 Google Workspace 帳戶,請先建立帳戶

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • 「專案名稱」是這項專案參與者的顯示名稱。這是 Google API 未使用的字元字串。您可以隨時更新。
  • 所有 Google Cloud 專案的專案 ID 均不得重複,而且設定後即無法變更。Cloud 控制台會自動產生一個不重複的字串。但通常是在乎它何在在大部分的程式碼研究室中,您必須參照專案 ID (通常為 PROJECT_ID)。如果您對產生的 ID 不滿意,可以隨機產生一個 ID。此外,您也可以自行嘗試,看看系統是否提供該付款方式。在完成這個步驟後就無法變更,而且在專案期間仍會保持有效。
  • 資訊中的第三個值是專案編號,部分 API 會使用這個編號。如要進一步瞭解這三個值,請參閱說明文件
  1. 接下來,您需要在 Cloud 控制台中啟用計費功能,才能使用 Cloud 資源/API。執行這個程式碼研究室並不會產生任何費用,如果有的話。如要關閉資源,以免系統產生本教學課程結束後產生的費用,您可以刪除自己建立的資源,或刪除整個專案。Google Cloud 的新使用者符合 $300 美元免費試用計畫的資格。

3. 使用 Cloud Shell 終端機

在本節中,您將瞭解 Cloud Shell 終端機、如何瀏覽使用者介面、使用相關功能,並探索設定選項和透過不同方式提升工作效率。

Cloud Shell 提供兩項主要工具,分別是 Cloud Shell 終端機Cloud Shell 編輯器。在這個研究室中,Cloud Shell 終端機與 Cloud Shell 將交替使用,但這個編輯器一律會稱為 Cloud Shell 編輯器,以便明確區分終端機模擬器和 IDE。

Cloud Shell 是具備完整功能的雲端式殼層,建構在臨時的 Google Compute Engine Debian 版本 Linux 機器上,隨時可供您使用。隨附 Google Cloud SDK 和多項相關工具,例如 gitkubectlkubectxcurlpython3tmux...

Google Cloud 會將您的 $HOME 目錄保存在 Cloud Storage 中,並在每次 Cloud Shell 機器啟動時自動掛接該目錄,因此即使 Cloud Shell 機器關閉,您也不會遺失任何留在目錄中的資訊。也就是說,當您再次啟用 Cloud Shell 時,$HOME 目錄以及所有您所做的自訂設定都會用到。

啟動 Cloud Shell

  1. 前往 console.cloud.google.com,如果尚未登入 GCP 控制台,請輸入您的 Google 憑證。系統會顯示 Google Cloud Platform 控制台的主 UI。
  2. 在 Cloud 控制台的選單列選取器中,選取您要使用的 GCP 專案 ID:

a78258af94ed9ec3.png

  1. 在選單列右側找到在帳戶顯示圖片旁的按鈕,即可啟用 Cloud Shell:

5b4246f45b173ff4.png

  1. 按一下 Cloud Shell 圖示,Cloud Shell 終端機便會開啟,系統會在 GCP 控制台 UI 的下方顯示新的窗格:

8495f27a3ed0f05.png

這個窗格中稱為 Cloud Shell 終端機。

  1. 前往 Cloud Shell 終端機。請注意,當您從 GCP 主控台選取適當的 GCP 專案 ID 時,Cloud Shell 會知道這個 ID,因此您無需再次指定:
echo $GOOGLE_CLOUD_PROJECT

這項操作會輸出 GCP 專案 ID,這個 ID 也會顯示在 Cloud Shell 提示中。

切換工具

Cloud Shell 提供多項工具和設定選項。如要查看這些選項,請查看 Cloud Shell 選單中的可用選項:

595834af08265e5c.png

  1. 點選導覽列中的按鈕 67bd0e39332a8438.png,即可最大化 Cloud Shell 終端機,並佔用瀏覽器的所有分頁空間:

1197e3e9a36bc7aa.png

  1. Cloud Shell 會最大化並佔用完整的瀏覽器分頁空間:

ecb227a1d39b8021.png

  1. 再按一下。瀏覽器分頁空間將還原為 Cloud 控制台和 Cloud Shell 共用。

開啟新分頁

Cloud Shell 終端機可讓您開啟任意數量的分頁。

  1. 點選下方按鈕,開啟新分頁。

e5757f88b64c7f5.png

  1. 接著,請按一下分頁名稱旁的 x 關閉新分頁,或是在對應的殼層中輸入 exit

8828238e04a14a20.png

開啟新視窗

在新的瀏覽器視窗中開啟 Cloud Shell,可讓您在一個視窗中開啟 Cloud 控制台,在另一個視窗中使用 Cloud Shell。

  1. 點選下方按鈕,觀察 Cloud Shell 如何在新的瀏覽器分頁中開啟:

bd407e51ae78d9fe.png

  1. 請注意,Cloud Shell 現在提供相同的工具列選項,但外觀稍有不同:

4bce4507ce34a695.png

  1. 在接下來的部分,請繼續使用這個新的瀏覽器分頁。

透過 Tmux 轉移工作階段

Cloud Shell 隨附 tmux。Tmux 是相當熱門的終端機多工器,與 GNU 螢幕類似。Cloud Shell 整合 tmux 之後,無論您身在何處,都能保留您的工作階段。

在下列步驟中,您將練習這個概念,進一步瞭解這項功能。

移動 Cloud Shell 終端機

  1. 在剛開啟的 Cloud Shell 分頁中輸入 top 指令:

bdd80a3fdcc6c7db.png

您可以利用頂端的指令,即時查看 Cloud Shell 終端機中執行的程序。您將使用這個選項,以視覺化的方式呈現 tmux 提供的 Cloud Shell 工作階段持續性。

  1. 返回瀏覽器的第一個分頁 (也就是 Cloud 控制台的分頁)。
  2. 請留意,由於您之前決定在新視窗中開啟 Cloud Shell,系統會顯示「Your session was transferred to another browser tab. You can disable this from the "Tmux Settings" option in the Cloud Shell settings menu.」訊息
  3. 按一下重新連線按鈕:

bdc5d5773296bcfe.png

然後,您可以存取在第二個分頁中執行的殼層,頂端會繼續執行,就和您離開時一樣。

  1. 前往瀏覽器的第二個分頁,也就是在新視窗中開啟 Cloud Shell。
  2. 按一下「重新連線」。您將按照在關閉視窗前執行的主要程序恢復頂端程序。

使用 Tmux 分割 Windows

Tmux 比你實際使用的 Tmux 更加實用,tmux 教學課程不屬於本研究室的涵蓋範圍,請參閱官方 tmux 入門指南,進一步瞭解相關資訊。

不過,tmux 為 Cloud Shell 提供了本機終端機模擬器能使用的其他功能。為示範這類圖表,您將執行並排顯示終端機的分割畫面。

  1. 在 Cloud Shell 中,依序按下 Ctrl + b%
  2. 觀察 tmux 如何在原始窗格直接建立新窗格:

717b047d71c8eeef.png

  1. 按一下第二個窗格,然後輸入 exit

使用網頁預覽功能

Cloud Shell 也可以透過在電腦上執行的本機瀏覽器,從在雲端執行的 Cloud Shell 機器,建立自動通訊埠轉送功能。

  1. 在 Cloud Shell 中輸入:
python3 -m http.server 8080
  1. 前往右上角的「網頁預覽」選項,然後選取「透過以下通訊埠預覽:8080」

a8363cafca79345.png

系統會開啟新分頁,其中顯示使用該通訊埠提供的預設網頁。

請注意,您可以變更通訊埠,也可以預覽應用程式要在 Cloud Shell 中公開的任何通訊埠,而不只是通訊埠 8080

存取其他 Cloud Shell 選項

Cloud Shell 也提供其他設定和選項。

  1. 按一下 Cloud Shell 選單中的三點圖示,即可存取選項:

a5c515c9df9284be.png

在這裡提供最相關的選項,就是將檔案上傳或下載檔案到 Cloud Shell,並重新啟動 Cloud Shell 機器,以免發生問題。

4. 使用 Cloud Shell 編輯器

Cloud Shell 其中一項最重要的功能是 Cloud Shell 編輯器。這個功能完整的 IDE 奠基於開放原始碼專案 Eclipse Theia,由 Google 和其他合作夥伴共同提供。外觀和風格與 VSCode 非常類似,因為兩者使用數種常見的開放原始碼基礎元件,例如 Monaco 編輯器、擴充功能模型、語言伺服器通訊協定和偵錯轉接程式通訊協定。

Theia/Cloud Shell 編輯器是相當複雜的工具,因此本研究室並未涵蓋所有 Cloud Shell 編輯器功能說明。在本節中,您將瞭解這項 Google Cloud 實作項目的部分核心概念和獨特功能。

存取 Cloud Shell 編輯器

存取 Cloud Shell 編輯器的方式有三種:

  • 透過指令列存取
  • 透過 Cloud Shell 選單存取
  • 透過瀏覽器造訪網址

請按照下列步驟體驗這些方法

  1. 使用下列指令在指令列開啟 .bashrc:
cloudshell edit $HOME/.bashrc
  1. 透過選單開啟 Cloud Shell,方法是按一下「開啟編輯器」按鈕 6039dbc755bfca9f.pngf493b9a98771b0af.png 這會開啟 Cloud Shell 編輯器,同時保持開啟 Cloud Shell 終端機。如果只想使用 Cloud Shell 編輯器的所有分頁區域,請點選「Edit」按鈕右側的按鈕,關閉終端機。這兩個按鈕 (「開啟/關閉編輯器」和「開啟/關閉終端機」) 會決定瀏覽器分頁中顯示了哪些工具。練習點擊這兩個項目,取得清楚的溝通方式。
  2. 輸入 ide.cloud.google.com透過瀏覽器的網址列叫用 Cloud Shell 編輯器

使用 Cloud Shell 編輯器中的指令列

雖然在同一個瀏覽器分頁中並存有 Cloud Shell 終端機和 Cloud Shell 編輯器,但您還是可以透過 Cloud Shell 終端機發布,只使用 Cloud Shell 編輯器,以及 Cloud Shell 編輯器提供的終端機,滿足所有需求。如果您習慣在 IDE 內部運作,且瞭解 VSCode 的不同捷徑和窗格動態,這可能很合理。

使用上述任一方法開啟 Cloud Shell 編輯器。然後前往「編輯器」選單,依序選取「Terminal」(終端機) >「新版終端機 (或在鍵盤上按下 Ctrl + `` 鍵)。新的終端機窗格會在 Cloud Shell 編輯器下半部開啟,針對所有的殼層需求都能使用:

8b2c36f71e851c40.png

此外,您還能選擇管理不同的終端機窗格,而不必使用 tmux 窗格管理機制,因為 Cloud Shell 終端機是如此。

自訂 Cloud Shell 設定

Cloud Shell 提供多種自訂選項和基本行為,以及 Cloud Shell 終端機啟動設定和詳細作業以下各節將詳細說明不同選項。

前往 Cloud Shell 的「終端機」選單,然後按一下齒輪圖示。畫面上會顯示多個設定選項:

a473c985a434070b.png

請查看下列部分:

  • 色彩主題:您可以使用淺色、深色或一組自訂色彩 (例如字型顏色和背景顏色)
  • 文字大小:有 5 種字型大小可供選擇
  • 字型:Courier new 或 Monospace
  • 複製設定:您可以在這裡將複製的鍵盤快速鍵變更為與最常用的 Linux 終端機模擬器相同的快速鍵。
  • 鍵盤:將 Meta 鍵與 Alt 鍵 (預設,Meta 是 ESC) 對應,在部分 OS 中將 Alt Gr 鍵的對應關係。

設定 Shell 環境

如果您是使用以 Debian 為基礎的 Linux 機器執行殼層的終端機模擬器,可以按照在 Linux 中執行殼層的方式自訂殼層環境。因此,每次建立新的登入殼層程序時,$HOME 中顯示的任何設定檔 (例如 .bashrc)) 都會取得。

另外,Cloud Shell 也能讓您指定每次在名為 .customize_environment 的特殊設定檔啟動 Cloud Shell 執行個體時,要執行哪些動作。詳情請參閱環境自訂說明文件。

練習在 Cloud Shell 終端機中新增一些設定。前往 Cloud Shell 終端機,並複製下列程式碼範例存放區:

git clone https://gitlab.com/javiercanadillas/cloud-code-getting-started.git

這個存放區包含兩個主要事件的範例,您可能會想在當中設定 Cloud Shell:

  • 每當 Cloud Shell 執行個體啟動時,系統就會讀取 $HOME/.customize_environment 檔案。您可以在 /var/log/customize_environment 中找到這個程序的執行記錄,並在成功執行時建立 /google/devshell/customize_environment_done
  • 每次開始新的殼層程序時 (新視窗、新分頁...);並讀取一般 bash 殼層設定檔

請按照下列步驟,練習這兩種做法:

  1. 執行下列指令,啟動存放區提供的自訂項目:
cd cloud-code-getting-started
source set_env_cust.sh

這會設定前述的自訂選項,並啟用。

  1. 您會看到新的殼層提示。源自 .bash_profile 檔案的 bash 指令碼已設定比預設提示較短的新提示,並包含已勾選的分支版本或 Git 狀態等基本 Git 資訊。
  2. 現在 cloudshell edit 指令的 code 別名更短。使用這個檔案查看 .bash_profile 檔案的內容:
code $HOME/.bash_profile
  1. 使用新安裝的指令 bat 查看 .customize_environment 檔案的內容:
bat $HOME/.customize_environment

bat 是熱門的 Unix 工具 cat 加強版。每次啟動新的 Cloud Shell 機器時,bat 輸出內容都會顯示用於重新安裝 heyapt install 指令。

  1. 點選 Cloud Shell 選單 (右上角的三點圖示),然後選取「重新啟動」,測試一切是否正常運作。

這樣一來,您就能模擬 Cloud Shell 逾時和執行個體重建的情況,確認所有設定皆正確無誤。

自訂 Cloud Shell 容器映像檔

這個自訂選項可讓您建立 Docker 映像檔,且這類映像檔具備額外的套件和自訂設定,可做為自訂 Cloud Shell 環境使用。產生的映像檔會啟動完全暫時的 Cloud Shell 執行個體,因此 Cloud Shell VM 和相連結的 $HOME 目錄都不會保留。不過,如果您需要將特定功能的 Cloud Shell 執行個體提供給第三方,讓第三方能以最有效率的方式執行特定工作,那麼建立映像檔將能派上用場。

請勿像上一節一樣自訂環境,而是將變更放入用來啟動 Cloud Shell 的新映像檔。隨著自訂 Cloud Shell 啟動速度加快,這會產生明顯的優勢。

建立新的 Cloud Shell 映像檔

  1. 在 Cloud Shell 終端機中輸入以下內容,啟動 Cloud Shell 容器映像檔:
cloudshell env create-custom-image custom-cloud-shell
cd custom-cloud-shell

這項操作會在 Cloud Shell 中建立一個新目錄,並以相同名稱新建 Cloud Source Repositories 存放區來代管您的程式碼。也會複製 $HOME/custom-cloud-shell/ directory 中的 Dockerfile 範例。

  1. 在 Dockerfile 的最後一行新增 RUN apt install -y hey 行:
echo "RUN apt install -y hey" >> $HOME/custom-cloud-shell/Dockerfile

這會設定與 .customize_environment 相同的自訂項目,但改為在容器中烘焙。

  1. 在本機建構映像檔:
cloudshell env build-local
  1. 請執行下列指令來測試新映像檔:
cloudshell env run

您現在位於映像檔中的殼層。

  1. 執行下列指令,測試是否已安裝 hey 指令:
hey
  1. 完成後,輸入 exit 即可退出容器:
exit
  1. 將變更推送至 Cloud Source Repository 和映像檔至 Container Registry:
git commit -a -m "Initial commit"
git push origin master
cloudshell env push

測試新映像檔

  1. 將映像檔開放給大眾使用:
gsutil iam ch allUsers:objectViewer $(gsutil ls)
  1. 產生網址,用來測試已發布的 Cloud Shell 自訂執行個體:
echo "https://ssh.cloud.google.com/cloudshell/editor?cloudshell_image=gcr.io/$GOOGLE_CLOUD_PROJECT/custom-cloud-shell"
  1. 複製輸出網址並貼到新的瀏覽器分頁中,Cloud Shell 自訂執行個體就會開啟。注意存取執行個體的方式會顯示橫幅,指出您正以完整暫時模式執行:

bc091a4c33649aa9.png

  1. 再次執行 Oky 指令測試映像檔
hey
  1. 完成之後exit,Cloud Shell 臨時執行個體,返回開啟一般 Cloud Shell 的分頁,然後按一下「重新連線」

透過 SSH 從遠端存取 Cloud Shell

您也可以透過本機電腦從遠端使用 Cloud Shell 功能。這通常涉及兩個不同的用途:

  • 從本機終端機透過 SSH 連線至 Cloud Shell 機器
  • 在本機掛接 Cloud Shell 遠端 $HOME 目錄。

為此,您必須在本機安裝 Google Cloud SDK。您也需要以專案 ID 和您使用的特定憑證進行設定。

在本機電腦上執行的終端機模擬器中,執行下列步驟:

  1. 設定 GCP 專案 ID,並使用與 Cloud Shell 所在 Cloud 機構相對應的憑證登入。
gcloud config set project <your project id>
gcloud auth login
  1. 透過 SSH 連線至遠端 Cloud Shell 機器:
gcloud cloud-shell ssh --authorize-session

您現在會位於 Cloud Shell,但會使用本機終端機模擬器的功能和設定。如果你所使用的連線支援 tmux,你可以利用進一步的整合功能來享受更好的遠端體驗。

從本機電腦掛接 Cloud Shell 主目錄

雖然能夠透過 SSH 連線至遠端 Cloud Shell 執行個體很不錯,但將本機 IDE 與遠端 Cloud Shell $HOME 目錄的存取權更為理想。如此一來,您可以將先前示範的 SSH 存取權,以及在本機編輯遠端程式碼的功能。

如要這麼做,請先利用本機電腦建立掛接點:

mkdir $HOME/cloudshell

這是您要掛接 Cloud Shell 的目錄。為進行掛接,請確認 Cloud Shell 執行個體已啟動,接著輸入本機終端機:

$(gcloud cloud-shell get-mount-command $HOME/cloudshell)
cd $HOME/cloudshell

這個指令會取得掛接指令,您必須在本機掛接並掛接 Cloud Shell。您會看到掛接在本機中的 Cloud Shell 主目錄內容。

現在,您可以在本機開啟 VSCode 等 IDE,並在 Cloud 中開啟遠端的工作區。同時,透過 SSH 存取 Cloud Shell 時,您可以在 IDE 內開啟「終端機」窗格,並在本機 IDE 中整合遠端終端機。

5. 使用 Cloud Code

Cloud Code 是由 Google 開發的外掛程式,可讓開發人員更有效率地使用雲端式工具。您可以在多種 IDE 和程式碼編輯器 (例如 VSCode 和 Jetbrains 產品) 中使用這項工具。為了方便起見,這兩項產品已預設整合至 Cloud Shell 編輯器。Cloud Code 包含許多適合開發人員使用的功能,您將在接下來的步驟中練習。

在 Cloud Shell 編輯器中找出 Cloud Code

使用「快速存取」按鈕

請在編輯器的左側窗格中找到以下四個按鈕:

de0b6c69b590d21b.png

這些選單項目可讓您直接透過 Cloud Shell 編輯器輕鬆存取及設定 GCP 服務。

在本研究室中,您將專注於 Kubernetes 叢集

使用狀態列

Cloud Shell 會再透過相關的 Cloud Shell 編輯器 UI 顯示兩個額外部分。您可以在編輯器的下方列中查看這二項資料:

f04c703ff45b05a.png

  • &lt;&gt;Cloud Code:按一下這裡就會顯示快速動作選單,您將透過以下教學課程使用:58a3f8940f6263ae.png
  • 控制 minikube:這可讓您控製本機 Kubernetes 模擬器 (minikube),以及啟動或停止叢集等基本操作。

建立 Minikube 執行個體

點選按鈕,立即建立 Minikube 執行個體。

540da42dd52e1469.png

使用 Cloud Code 建立 GKE 叢集

  1. 按一下左側的圖示 Cloud Code - Kubernetes Clusters ( 5ffab5cb541da6.png)。左側會顯示名為「Cloud CODE - KUBERNETES: CLUSTERS」的新窗格。
  2. 按一下「雲端程式碼 - KUBERNETES:叢集」旁邊的「+」按鈕,然後選取「Google Kubernetes Engine」 (請注意,您也可以選擇其他選項,例如先前啟用的 Minikube):

e7a81607c1bc7c55.png

  1. 按一下「Create a New GKE Cluster」(建立新 GKE 叢集)。這個選項會在右側載入新的窗格,您可以在該窗格輸入額外資訊,快速建立開發叢集。按照面板中的操作說明輸入下列資訊:
  • 選擇 Autopilot
  • 選取區域 (europe-west-1)
  • 將叢集命名為「dev
  1. 按一下「建立叢集」按鈕。這項操作會建立新的 Autopilot 叢集。

叢集建立程序會在 55 分鐘內處理完畢。建立叢集時,請進一步瞭解 Cloud Code Kubernetes 窗格。

探索 Cloud Code Kubernetes 窗格

您之前已建立 Minikube 叢集,叢集準備就緒時,這個叢集會顯示在 Cloud Code Kubernetes 窗格中,名稱為 minikube

b654e618f78de3b3.png

叢集會在 UI 中顯示為「已啟用」。這項設定與指令列中目前的 Kubernetes 環境保持同步。。

「Cloud Code Kubernetes」窗格中顯示的內容如下:

  • 預設的 KubeConfig 檔案:Cloud Code 會讀取使用者 ~/.kube/config 檔案,並透過該檔案連線至在其中設定的 Kubernetes 叢集,方便您瀏覽這些檔案。如要編輯 Kubeconfig 檔案,請將滑鼠遊標懸停在 Default Kubeconfig 行上,然後按一下檔案旁邊有向外箭頭的方塊。
  • 可瀏覽的已註冊叢集內不同物件,並採用可瀏覽的方式:在此情況下,您會看到先前建立的 minikube Minikube 叢集及其結構定義、命名空間和節點。繼續展開樹狀結構的幾個節點。您尚未部署任何應用程式,因此目前不會顯示任何 Pod。

新的 GKE 叢集啟動並執行後,左側窗格就會顯示該叢集與 minikube Minikube 叢集。注意,在任何叢集上按一下滑鼠右鍵,即可將其設為「有效」為您可以啟動的任何 Cloud Code 動作選擇叢集:

8e4306c3ce707ef8.png

6. 恭喜!

恭喜,您已完成程式碼研究室!

涵蓋內容

  • 瞭解並熟悉 Cloud Shell 的主要功能
  • 練習了不同的 Cloud Shell 使用模式
  • 自訂 Cloud Shell 環境以供進階使用
  • 瞭解 Cloud Code 的選項和功能
  • 已詳細瞭解適用於 Kubernetes 應用程式的 Cloud Code
  • 使用本機模擬器,例如 Minikube