在 Google Kubernetes Engine 上執行 Django

在 GKE 上執行的 Django 應用程式會根據流量動態調度資源。

本教學課程假設您熟悉 Django 網頁開發作業。如果您是 Django 開發新手,建議先完成「編寫第一個 Django 應用程式」教學課程,再繼續操作。

本教學課程以 Django 為例,但您也可以將這個部署程序用於其他以 Django 為基礎的架構,例如 Wagtail 和 Django CMS。

本教學課程使用 Django 5,至少需要 Python 3.10。

另外您也必須安裝 Docker。

目標

在這個教學課程中,您將執行下列操作:

  • 建立並連線至 Cloud SQL 資料庫。
  • 建立及使用 Kubernetes Secret 值。
  • 將 Django 應用程式部署至 Google Kubernetes Engine。

費用

在本文件中,您將使用下列 Google Cloud計費元件:

如要根據預測用量估算費用,請使用 Pricing Calculator。

初次使用 Google Cloud 的使用者可能符合免費試用期資格。

事前準備

  1. 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自體驗產品的實際應用成效。新客戶還能獲得價值 $300 美元的免費抵免額,能用於執行、測試及部署工作負載。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Cloud SQL, GKE and Compute Engine APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  5. 安裝 gcloud CLI。

  6. 如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。

  7. 執行下列指令,初始化 gcloud CLI:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Cloud SQL, GKE and Compute Engine APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  11. 安裝 gcloud CLI。

  12. 如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。

  13. 執行下列指令,初始化 gcloud CLI:

    gcloud init

準備環境

複製範例應用程式

Django 範例應用程式的程式碼位於 GitHub 的 GoogleCloudPlatform/python-docs-samples 存放區。

  1. 您可以下載範例的 ZIP 檔案並解壓縮,也可以將存放區複製到本機電腦:

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    
  2. 前往含有程式碼範例的目錄:

    Linux/macOS

    cd python-docs-samples/kubernetes_engine/django_tutorial
    

    Windows

    cd python-docs-samples\kubernetes_engine\django_tutorial
    

確認 Python 設定

本教學課程會使用 Python 在電腦上執行範例應用程式。此外,程式碼範例也必須安裝依附元件

詳情請參閱 Python 開發環境指南。

  1. 確認 Python 版本至少為 3.10。

     python -V
    

    畫面上應會顯示 Python 3.10.0 以上版本。

  2. 建立 Python 虛擬環境並安裝依附元件:

    Linux/macOS

    python -m venv venv
    source venv/bin/activate
    pip install --upgrade pip
    pip install -r requirements.txt
    

    Windows

    python -m venv venv
    venv\scripts\activate
    pip install --upgrade pip
    pip install -r requirements.txt
    

下載 Cloud SQL Auth Proxy,從本機連線至 Cloud SQL

部署後,應用程式會使用 Google Kubernetes Engine 環境內建的 Cloud SQL Auth Proxy,與 Cloud SQL 執行個體通訊。不過,如要在本機測試應用程式,您必須在開發環境中安裝及使用 Proxy 的本機副本。詳情請參閱 Cloud SQL Auth Proxy 指南。

Cloud SQL Auth Proxy 會使用 Cloud SQL API 與 SQL 執行個體互動。為此,您必須透過 gcloud CLI 驗證應用程式。

  1. 驗證身分並取得 API 憑證:

    gcloud auth application-default login
    
  2. 在本機下載並安裝 Cloud SQL Auth Proxy。

    開始前,請先判斷機器的架構。

    如果是在 Linux 或 Mac 上執行,可以執行下列指令來找出這個檔案:

      uname -a
      

    Linux 64 位元

    1. 下載 Cloud SQL Auth Proxy:
      curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.0/cloud-sql-proxy.linux.amd64
    2. 將 Cloud SQL 驗證 Proxy 設為允許執行:
      chmod +x cloud-sql-proxy

    Linux 32 位元

    1. 下載 Cloud SQL Auth Proxy:
      curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.0/cloud-sql-proxy.linux.386
    2. 如果找不到 curl 指令,請執行 sudo apt install curl 並重複下載指令。
    3. 將 Cloud SQL 驗證 Proxy 設為允許執行:
      chmod +x cloud-sql-proxy

    macOS 64 位元

    1. 下載 Cloud SQL Auth Proxy:
      curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.0/cloud-sql-proxy.darwin.amd64
    2. 將 Cloud SQL 驗證 Proxy 設為允許執行:
      chmod +x cloud-sql-proxy

    Mac M1

    1. 下載 Cloud SQL Auth Proxy:
        curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.0/cloud-sql-proxy.darwin.arm64
        
    2. 將 Cloud SQL 驗證 Proxy 設為允許執行:
        chmod +x cloud-sql-proxy
        

    Windows 64 位元

    在 https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.0/cloud-sql-proxy.x64.exe 上按一下滑鼠右鍵,然後選取「另存連結為」,即可下載 Cloud SQL Auth Proxy。將檔案重新命名為 cloud-sql-proxy.exe。

    Windows 32 位元

    在 https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.0/cloud-sql-proxy.x86.exe 上按一下滑鼠右鍵,然後選取「另存連結為」,即可下載 Cloud SQL Auth Proxy。將檔案重新命名為 cloud-sql-proxy.exe。

    Cloud SQL Auth Proxy Docker 映像檔

    Cloud SQL 驗證 Proxy 有不同的容器映像檔,例如 distroless、alpine 和 buster。預設的 Cloud SQL Auth Proxy 容器映像檔使用 distroless,其中不含任何殼層。如需殼層或相關工具,請根據 alpine 或 buster 下載映像檔。詳情請參閱「Cloud SQL Auth Proxy 容器映像檔」。

    您可以使用下列指令,透過 Docker 將最新映像檔提取至本機電腦:

    docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.26.0
    

    其他 OS

    如要使用未列出的作業系統,可以從來源編譯 Cloud SQL Auth Proxy。

    你可以選擇將下載內容移至常見位置,例如 PATH 上的位置或主目錄。如果您選擇這麼做,請記得在稍後啟動 Cloud SQL Auth Proxy 時,使用 cloud-sql-proxy 指令參照您選擇的位置。

建立後端服務

本教學課程使用多項 Google Cloud 服務,提供支援已部署 Django 專案的資料庫、媒體儲存空間和密鑰儲存空間。這些服務會部署在特定區域。為提高服務間的效率,所有服務都應部署在同一個區域。如要進一步瞭解離您最近的區域,請參閱「各區域適用的產品」。

設定 PostgreSQL 適用的 Cloud SQL 執行個體

Django 官方支援多個關聯式資料庫,但對 PostgreSQL 的支援最完善。Cloud SQL 支援 PostgreSQL,因此本教學課程選擇使用這類資料庫。

以下章節說明如何為應用程式建立 PostgreSQL 執行個體、資料庫和資料庫使用者。

  1. 建立 PostgreSQL 執行個體:

    控制台

    1. 前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。

      前往 Cloud SQL 執行個體頁面

    2. 點選「建立執行個體」。

    3. 按一下「Choose PostgreSQL」(選擇 PostgreSQL)。

    4. 在「SQL 版本」部分,選擇「Enterprise」。

    5. 在「版本預設設定」中,選擇「沙箱」。

    6. 在「Instance ID」(執行個體 ID) 欄位中輸入 INSTANCE_NAME。

    7. 輸入 postgres 使用者的密碼。

    8. 其他欄位皆使用預設值。

    9. 點選「建立執行個體」。

    執行個體會在幾分鐘內準備就緒。

    gcloud

    • 建立 PostgreSQL 執行個體:

      gcloud sql instances create INSTANCE_NAME \
          --project PROJECT_ID \
          --database-version POSTGRES_16 \
          --tier db-n1-standard-2 \
          --region REGION
      

    更改下列內容:

    • INSTANCE_NAME:Cloud SQL 執行個體名稱
    • PROJECT_ID: Google Cloud 專案 ID
    • REGION:Google Cloud 區域

    建立執行個體並準備好供您使用,需要幾分鐘的時間。

  2. 在建立的執行個體中建立資料庫:

    控制台

    1. 在執行個體頁面中,前往「資料庫」分頁。
    2. 按一下 [Create database] (建立資料庫)。
    3. 在「Database Name」(資料庫名稱) 對話方塊中輸入 DATABASE_NAME。
    4. 點選「建立」。

    gcloud

    • 在最近建立的執行個體中建立資料庫:

      gcloud sql databases create DATABASE_NAME \
          --instance INSTANCE_NAME
      

      將 DATABASE_NAME 替換為執行個體內的資料庫名稱。

  3. 建立資料庫使用者:

    控制台

    1. 在執行個體頁面中,前往「Users」(使用者) 分頁標籤。
    2. 點選「新增使用者帳戶」。
    3. 在「內建驗證」下方的「選擇驗證方式」對話方塊中:
    4. 輸入使用者名稱 DATABASE_USERNAME。
    5. 輸入密碼 DATABASE_PASSWORD
    6. 按一下「新增」。

    gcloud

    • 在最近建立的執行個體中建立使用者:

      gcloud sql users create DATABASE_USERNAME \
          --instance INSTANCE_NAME \
          --password DATABASE_PASSWORD
      

      將 PASSWORD 替換成安全密碼。

建立服務帳戶

Proxy 需要具有您 Cloud SQL 執行個體編輯者權限的服務帳戶。如要進一步瞭解服務帳戶,請參閱Google Cloud 驗證總覽。

  1. 前往 Google Cloud 控制台的「Service accounts」(服務帳戶) 頁面。

    前往「Service accounts」(服務帳戶)

  2. 選取含有 Cloud SQL 執行個體的專案。
  3. 按一下「建立服務帳戶」。
  4. 在「Service account name」(服務帳戶名稱) 欄位中,輸入服務帳戶的描述性名稱。
  5. 將「服務帳戶 ID」變更為可辨識的專屬值,然後點選「建立並繼續」。
  6. 按一下「選取角色」欄位,然後選取下列其中一個角色:
    • Cloud SQL > Cloud SQL 用戶端
    • Cloud SQL > Cloud SQL 編輯器
    • Cloud SQL > Cloud SQL 管理員
  7. 按一下「Done」(完成),即完成建立服務帳戶。
  8. 按一下新服務帳戶的動作選單,然後選取「管理金鑰」。
  9. 點選「Add key」(新增金鑰) 下拉式選單,然後點選「Create new key」(建立新的金鑰)。
  10. 確認金鑰類型為 JSON,然後按一下「建立」。

    私密金鑰檔案會下載到您的機器上。您可以將它移到其他位置。請妥善保管金鑰檔案。

進行資料庫設定

使用下列指令設定資料庫存取權的環境變數。 這些環境變數用於本機測試。

Linux/MacOS

export DATABASE_NAME=DATABASE_NAME
export DATABASE_USER=DATABASE_USERNAME
export DATABASE_PASSWORD=DATABASE_PASSWORD

Windows

set DATABASE_USER=DATABASE_USERNAME
set DATABASE_PASSWORD=DATABASE_PASSWORD

設定 GKE 設定

  1. 這個應用程式會以名為 polls 的單一 Kubernetes 設定表示。在 polls.yaml 中,將 <your-project-id> 替換為您的Google Cloud 專案 ID (PROJECT_ID)。

  2. 執行下列指令,並記下 connectionName 的值:

    gcloud sql instances describe INSTANCE_NAME --format "value(connectionName)"
    
  3. 在 polls.yaml 檔案中,將 <your-cloudsql-connection-string> 替換為 connectionName 值。

在本機電腦上執行應用程式

設定好後端服務後,您現在可以在電腦上執行應用程式。這個設定可進行本機開發、建立超級使用者,以及套用資料庫遷移作業。

  1. 在另一個終端機中啟動 Cloud SQL Auth Proxy:

    Linux/macOS

    ./cloud-sql-proxy PROJECT_ID:REGION:INSTANCE_NAME
    

    Windows

    cloud-sql-proxy.exe PROJECT_ID:REGION:INSTANCE_NAME
    

    這個步驟會建立本機電腦與 Cloud SQL 執行個體的連線,以進行本機測試。在本機測試應用程式時,請持續執行 Cloud SQL Auth Proxy。在另一個終端機中執行這項程序,即可在程序執行期間繼續工作。

  2. 在原始終端機中,於本機設定專案 ID:

    Linux/macOS

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID
    

    Windows

    set GOOGLE_CLOUD_PROJECT=PROJECT_ID
    
  3. 執行 Django 遷移作業,設定模型和資產:

    python manage.py makemigrations
    python manage.py makemigrations polls
    python manage.py migrate
    python manage.py collectstatic
    
  4. 啟動 Django 網路伺服器:

    python manage.py runserver 8080
    
  5. 在瀏覽器中前往 http://localhost:8080。

    如果您使用 Cloud Shell,請按一下「網頁預覽」按鈕,然後選取「透過以下通訊埠預覽:8080」。

    頁面會顯示以下文字:「Hello, world. 你目前位於民調索引頁面。」電腦上執行的 Django 網路伺服器會提供範例應用程式網頁。

  6. 按下 Ctrl/Cmd+C 鍵,停止本機網路伺服器。

使用 Django 管理控制台

如要登入 Django 的管理控制台,您必須建立超級使用者。由於您在本機可存取資料庫連線,因此可以執行管理指令:

  1. 建立超級使用者。系統會提示您輸入使用者名稱、電子郵件地址和密碼。

    python manage.py createsuperuser
    
  2. 啟動本機網路伺服器:

    python manage.py runserver
    
  3. 透過瀏覽器前往 http://localhost:8000/admin。

  4. 使用您執行 createsuperuser 時所用的使用者名稱和密碼,登入管理員網站。

將應用程式部署至 GKE

應用程式部署至 Google Cloud時,會使用 Gunicorn 伺服器。Gunicorn 不提供靜態內容,所以應用程式會使用 Cloud Storage 提供靜態內容。

收集及上傳靜態資源

  1. 建立 Cloud Storage bucket 並設為可公開讀取。

    gcloud storage buckets create gs://PROJECT_ID_MEDIA_BUCKET
    gcloud storage buckets add-iam-policy-binding gs://PROJECT_ID_MEDIA_BUCKET --member=allUsers --role=roles/storage.legacyObjectReader
    
  2. 將所有本機靜態內容收集至單一資料夾:

    python manage.py collectstatic
    
  3. 將靜態內容上傳至 Cloud Storage:

    gcloud storage rsync ./static gs://PROJECT_ID_MEDIA_BUCKET/static --recursive
    
  4. 在 mysite/settings.py 中,將 STATIC_URL 的值設為下列網址,並將 [YOUR_GCS_BUCKET] 替換為您的 bucket 名稱:

    http://storage.googleapis.com/PROJECT_ID_MEDIA_BUCKET/static/
    

設定 GKE

  1. 如要初始化 GKE,請前往「Clusters」(叢集) 頁面。

    前往「叢集」頁面

    在專案中首次使用 GKE 時,您需要等待「Kubernetes Engine 準備就緒。「這可能需要一分鐘以上」訊息才會消失。

  2. 建立 GKE 叢集:

    gcloud container clusters create polls \
      --scopes "https://www.googleapis.com/auth/userinfo.email","cloud-platform" \
      --num-nodes 4 --zone "us-central1-a"
    

    如果出現類似 Project is not fully initialized with the default service accounts 的錯誤訊息,您可能需要初始化 Google Kubernetes Engine。

    初始化 GKE

    如果收到錯誤訊息,請前往 Google Cloud 控制台,在專案中初始化 GKE。

    前往「叢集」頁面

    等待「Kubernetes Engine is getting ready. 「這項作業會在一分鐘內完成」訊息才會消失。

  3. 建立叢集後,請使用 kubectl 指令列工具 (已與 gcloud CLI 整合),與 GKE 叢集互動。由於 gcloud 和 kubectl 是不同的工具,請確認 kubectl 已設定為與正確的叢集互動。

    gcloud container clusters get-credentials polls --zone "us-central1-a"
    

設定 Cloud SQL

  1. 您需要多個密鑰,才能讓 GKE 應用程式連線至 Cloud SQL 執行個體。一個用於執行個體層級存取權 (連線),另外兩個則用於資料庫存取權。如要進一步瞭解這兩個存取控管層級,請參閱「執行個體存取控管」。

    1. 如要建立例項層級存取的密鑰,請提供您建立服務帳戶時下載的 JSON 服務帳戶金鑰位置 PATH_TO_CREDENTIAL_FILE (請參閱「建立服務帳戶」):

      kubectl create secret generic cloudsql-oauth-credentials \
        --from-file=credentials.json=PATH_TO_CREDENTIAL_FILE
      
    2. 如要建立資料庫存取密碼,請使用您建立後端服務時定義的 SQL 資料庫、使用者名稱和密碼。 請參閱「設定 PostgreSQL 適用的 Cloud SQL 執行個體」:

      kubectl create secret generic cloudsql \
        --from-literal=database=DATABASE_NAME \
        --from-literal=username=DATABASE_USERNAME \
        --from-literal=password=DATABASE_PASSWORD
      
  2. 擷取 Cloud SQL Proxy 的公開 Docker 映像檔。

    docker pull b.gcr.io/cloudsql-docker/gce-proxy
    
  3. 建構 Docker 映像檔,並將 <your-project-id> 替換為專案 ID。

    docker build -t gcr.io/PROJECT_ID/polls .
    
  4. 將 Docker 設定為使用 gcloud 做為憑證輔助函式,以便將映像檔推送至 Container Registry:

    gcloud auth configure-docker
    
  5. 推送 Docker 映像檔,將 <your-project-id> 替換為專案 ID。

    docker push gcr.io/PROJECT_ID/polls
    
  6. 建立 GKE 資源:

    kubectl create -f polls.yaml
    

將應用程式部署至 GKE

資源建立完成後,叢集上會有三個 polls Pod。請檢查這些 pod 的狀態:

kubectl get pods

稍候片刻,等待 Pod 狀態顯示為 Running。如果 Pod 尚未準備就緒或重新啟動,您可以取得特定 Pod 的記錄,找出問題。[YOUR-POD-ID] 是先前 kubectl get pods 指令傳回的輸出內容之一。

kubectl logs [YOUR_POD_ID]

查看應用程式在 Google Cloud中的執行情況

Pod 準備就緒後,即可取得負載平衡器的外部 IP 位址:

kubectl get services polls

記下 EXTERNAL-IP 位址,然後在瀏覽器中前往 http://[EXTERNAL-IP],查看 Django 投票應用程式登陸頁面並存取管理員控制台。

瞭解程式碼

應用程式範例

Django 範例應用程式是以標準 Django 工具建立。下列指令會建立專案和 polls 應用程式:

django-admin startproject mysite
python manage.py startapp polls

基本檢視畫面、模型和路徑設定是從「編寫第一個 Django 應用程式」(第 1 部分和第 2 部分) 複製而來。

資料庫配置

settings.py 包含 SQL 資料庫的設定:

DATABASES = {
    "default": {
        # If you are using Cloud SQL for MySQL rather than PostgreSQL, set
        # 'ENGINE': 'django.db.backends.mysql' instead of the following.
        "ENGINE": "django.db.backends.postgresql",
        "NAME": os.getenv("DATABASE_NAME"),
        "USER": os.getenv("DATABASE_USER"),
        "PASSWORD": os.getenv("DATABASE_PASSWORD"),
        "HOST": "127.0.0.1",
        "PORT": "5432",
    }
}

Kubernetes Pod 設定

polls.yaml 檔案會指定兩項 Kubernetes 資源。第一個是 Service,可為 Django 網頁應用程式定義一致的名稱和內部 IP 位址。第二個是 HTTP 負載平衡器,具有面向公眾的外部 IP 位址。

# The polls service provides a load-balancing proxy over the polls app
# pods. By specifying the type as a 'LoadBalancer', Kubernetes Engine will
# create an external HTTP load balancer.
# For more information about Services see:
#   https://kubernetes.io/docs/concepts/services-networking/service/
# For more information about external HTTP load balancing see:
#   https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
apiVersion: v1
kind: Service
metadata:
  name: polls
  labels:
    app: polls
spec:
  type: LoadBalancer
  ports:
  - port: 80
    targetPort: 8080
  selector:
    app: polls

這項服務會提供網路名稱和 IP 位址,而 GKE Pod 則會在服務後方執行應用程式的程式碼。polls.yaml 檔案會指定部署作業,為 GKE Pod 提供宣告式更新。服務會將服務的選取器與部署作業的標籤進行比對,藉此將流量導向部署作業。在本例中,選取器 polls 與標籤 polls 相符。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: polls
  labels:
    app: polls
spec:
  replicas: 3
  selector:
    matchLabels:
      app: polls
  template:
    metadata:
      labels:
        app: polls
    spec:
      containers:
      - name: polls-app
        # Replace  with your project ID or use `make template`
        image: gcr.io/<your-project-id>/polls
        # This setting makes nodes pull the docker image every time before
        # starting the pod. This is useful when debugging, but should be turned
        # off in production.
        imagePullPolicy: Always
        env:
            - name: DATABASE_NAME
              valueFrom:
                secretKeyRef:
                  name: cloudsql
                  key: database
            - name: DATABASE_USER
              valueFrom:
                secretKeyRef:
                  name: cloudsql
                  key: username
            - name: DATABASE_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: cloudsql
                  key: password
        ports:
        - containerPort: 8080

      - image: gcr.io/cloudsql-docker/gce-proxy:1.16
        name: cloudsql-proxy
        command: ["/cloud_sql_proxy", "--dir=/cloudsql",
                  "-instances=<your-cloudsql-connection-string>=tcp:5432",
                  "-credential_file=/secrets/cloudsql/credentials.json"]
        volumeMounts:
          - name: cloudsql-oauth-credentials
            mountPath: /secrets/cloudsql
            readOnly: true
          - name: ssl-certs
            mountPath: /etc/ssl/certs
          - name: cloudsql
            mountPath: /cloudsql
      volumes:
        - name: cloudsql-oauth-credentials
          secret:
            secretName: cloudsql-oauth-credentials
        - name: ssl-certs
          hostPath:
            path: /etc/ssl/certs
        - name: cloudsql
          emptyDir: {}

清除所用資源

為避免因為本教學課程所用資源,導致系統向 Google Cloud 收取費用,請刪除含有相關資源的專案,或者保留專案但刪除個別資源。

刪除專案

  1. 前往 Google Cloud 控制台的「Manage resources」(管理資源) 頁面。

    前往「Manage resources」(管理資源)

  2. 在專案清單中選取要刪除的專案,然後點選「Delete」(刪除)。
  3. 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。

刪除個別資源

如不想刪除專案,請刪除個別資源。

  1. 刪除 Google Kubernetes Engine 叢集:

    gcloud container clusters delete polls
    
  2. 刪除您推送至 Container Registry 的 Docker 映像檔:

    gcloud container images delete gcr.io/PROJECT_ID/polls
    
  3. 刪除 Cloud SQL 執行個體:

    gcloud sql instances delete INSTANCE_NAME
    

後續步驟