在邊緣部署叢集

本教學課程介紹可立即使用的解決方案,該解決方案會在裸機上使用 Google Distributed Cloud (僅限軟體),並透過 Config Sync 大規模部署邊緣 Kubernetes 叢集。本教學課程適用於平台營運人員和開發人員。閱讀本文前,請務必熟悉下列技術和概念:

在本教學課程中,您會使用 Compute Engine 虛擬機器 (VM) 模擬部署在邊緣的節點,並使用銷售點應用程式範例做為邊緣工作負載。Google Distributed Cloud 軟體 (僅限軟體) 和 Config Sync 可為邊緣叢集提供集中式管理和控制功能。Config Sync 會從 GitHub 動態提取新設定,並將這些政策和設定套用至叢集。

邊緣部署架構

零售邊緣部署作業是說明典型裸機叢集部署作業所用架構的好方法。

實體零售商店是企業業務部門與消費者之間最接近的互動點。店內軟體系統必須執行工作負載、及時接收更新,並回報重要指標,且不得與企業的中央管理系統連線。此外,這些軟體系統的設計必須能擴充,以便日後在更多商店地點使用。雖然任何裸機叢集部署作業都能滿足商店軟體系統的所有需求,但邊緣設定檔可支援一項重要用途:在硬體資源有限的環境中部署,例如零售商店面。

下圖顯示在零售商店中使用 Edge 設定檔的裸機叢集部署作業:

在零售商店中使用邊緣設定檔的部署作業

上圖顯示典型的實體零售商店。店內有智慧型裝置,例如讀卡機、銷售點終端機、攝影機和印表機。商店也有三部實體運算硬體裝置 (標示為 Node 1Node 2Node 3)。所有這些裝置都連線到中央網路交換器。因此,這三部運算裝置會透過第 2 層網路彼此連線。透過網路連線的運算裝置會構成裸機基礎架構。Google Distributed Cloud 軟體會在三個運算裝置中執行。這些裝置也有自己的磁碟儲存空間,並設定為在彼此之間複製資料,以確保高可用性。

此外,圖中也顯示裸機叢集部署作業的下列重要元件:

  • 標示為「MetalLB」MetalLB的元件是套裝組合負載平衡器

  • Config Sync 元件可讓叢集狀態與來源存放區保持同步。強烈建議您安裝這個選用外掛程式,但必須另外安裝及設定。如要進一步瞭解如何設定 Config Sync 和不同的命名方式,請參閱 Config Sync 說明文件

  • 商店位置外部圖表頂端顯示的根存放區命名空間存放區,代表兩個來源存放區。

    叢集的變更會推送至這些中央來源存放區。 各個邊緣位置的叢集部署作業會從來源存放區提取更新。圖中連接兩個存放區的箭頭,代表這種行為,並指向裝置中執行的叢集內 Config Sync 元件。

  • 叢集的一部分是 GDC 上的 VM 執行階段,這是另一個重要元件。透過 GDC 上的 VM Runtime,您可以在叢集內執行現有的 VM 型工作負載,不必進行容器化。請參閱 GDC 上的 VM Runtime 說明文件,瞭解如何啟用這項功能,並將 VM 工作負載部署到叢集。

  • 標示為「應用程式」的元件表示零售商店部署到叢集中的軟體。零售商店資訊站的銷售點應用程式就是這類應用程式的例子。

圖表底部的方塊代表零售商店內的許多裝置 (例如資訊亭、平板電腦或攝影機),這些裝置都連線至中央網路交換器。商店內的區域網路可讓叢集內執行的應用程式連線至這些裝置。

下一節將說明如何使用 Compute Engine VMGoogle Cloud 模擬部署這間零售商店。在後續教學課程中,您會使用這項模擬功能,實驗裸機叢集。

在 Google Cloud中模擬邊緣部署作業

下圖說明您在本教學課程中Google Cloud 設定的所有項目。這個圖表與前一節的零售商店圖表相關。這項部署作業代表模擬的邊緣位置,銷售點應用程式會部署在該位置。架構也顯示您在本教學課程中使用的銷售點範例應用程式工作負載。您可以使用網路瀏覽器做為資訊亭,存取叢集內的銷售點應用程式。

銷售點應用程式的架構,以及如何在 Compute Engine VM 上執行的叢集中部署該應用程式

上圖中的三部 Compute Engine 虛擬機器 (VM) 代表一般邊緣位置的實體硬體 (或節點)。這類硬體會透過網路交換器連線,組成裸機基礎架構。在 Google Cloud的模擬環境中,這些 VM 會透過 Google Cloud 專案中的預設虛擬私有雲 (VPC) 網路彼此連線。

在典型的 Bare Metal 叢集安裝作業中,您可以設定自己的負載平衡器。不過,在本教學課程中,您不會設定外部負載平衡器。而是使用套裝組合的 MetalLB 負載平衡器。套裝組合 MetalLB 負載平衡器需要節點之間的第 2 層網路連線。因此,在預設的虛擬私有雲 (VPC) 網路上建立 VxLAN 疊加網路,即可啟用 Compute Engine VM 之間的第 2 層連線。

在標示為「L2 overlay network (VxLAN)」的矩形內,顯示在三個 Compute Engine VM 中執行的軟體元件。這個 VxLAN 矩形包含叢集部署作業,其中包含叢集內的 Kubernetes 命名空間。這個 Kubernetes 命名空間中的所有元件,都會構成部署到叢集中的銷售點應用程式。銷售點應用程式有三個微服務:API 伺服器、庫存和付款。所有這些元件共同代表一個「應用程式」,如先前的 Edge 推出架構圖所示。

叢集的隨附 MetalLB 負載平衡器無法從 VM 外部直接連線。下圖顯示如何設定在 VM 內執行的 NGINX 反向 Proxy,將傳入 Compute Engine VM 的流量轉送至負載平衡器。這只是本教學課程的權宜做法,因為邊緣節點是使用 Google CloudCompute Engine VM 模擬。在實際的邊緣位置,這項作業可透過適當的網路設定完成。

目標

  1. 使用 Compute Engine VM 模擬在邊緣位置執行的裸機基礎架構。
  2. 使用 Google Distributed Cloud 在模擬的邊緣基礎架構中建立叢集。
  3. 連線至叢集並向 Google Cloud註冊。
  4. 在叢集上部署範例銷售點應用程式工作負載。
  5. 使用 Google Cloud 控制台驗證及監控在邊緣位置運作的銷售點應用程式。
  6. 使用 Config Sync 更新叢集上執行的銷售點應用程式。

事前準備

  1. 在 Google Cloud 控制台的專案選擇器頁面中,選取或建立 Google Cloud 專案

    前往專案選取器

  2. 確認 Cloud 專案已啟用計費功能。瞭解如何檢查專案是否已啟用計費功能

  3. 安裝初始化 Google Cloud CLI。

建立 anthos-samples 存放區分支並加以複製

本教學課程中使用的所有指令碼都儲存在 anthos-samples 存放區。/anthos-bm-edge-deployment/acm-config-sink 底下的資料夾結構會按照 Config Sync 的預期方式整理。請先將這個存放區複製到自己的 GitHub 帳戶,再繼續執行下列步驟。

  1. 如果您尚未建立帳戶,請前往 GitHub 建立帳戶。

  2. 建立個人存取權杖,以用於 Config Sync 設定。叢集中的 Config Sync 元件嘗試同步處理新變更時,必須使用這個權杖向 GitHub 帳戶進行驗證。

    1. 僅選取 public_repo 範圍。
    2. 請將建立的存取權杖儲存到安全位置,以供日後使用。
  3. 建立 anthos-samples 存放區分支,並新增至您的 GitHub 帳戶:

    1. 前往 anthos-samples 存放區
    2. 按一下頁面右上角的「Fork」(分支)圖示。
    3. 按一下要建立存放區分支的目標 GitHub 使用者帳戶。系統會自動將您重新導向至含有 anthos-samples 存放區分支版本的頁面。
  4. 在本機環境中開啟終端機。

  5. 執行下列指令來複製存放區的分支版本,其中 GITHUB_USERNAME 為您的 GitHub 帳戶使用者名稱:

    git clone https://github.com/GITHUB_USERNAME/anthos-samples
    cd anthos-samples/anthos-bm-edge-deployment
    

設定工作站環境

如要完成本文所述的邊緣部署作業,您需要一部可存取網際網路的工作站,並安裝下列工具:

在本節設定的工作站上,執行本教學課程中的所有指令。

  1. 在工作站上,於新的殼層執行個體中初始化環境變數:

    export PROJECT_ID="PROJECT_ID"
    export REGION="us-central1"
    export ZONE="us-central1-a"
    
    # port on the admin Compute Engine instance you use to set up an nginx proxy
    # this allows to reach the workloads inside the cluster via the VM IP
    export PROXY_PORT="8082"
    
    # should be a multiple of 3 since N/3 clusters are created with each having 3 nodes
    export GCE_COUNT="3"
    
    # url to the fork of: https://github.com/GoogleCloudPlatform/anthos-samples
    export ROOT_REPO_URL="https://github.com/GITHUB_USERNAME/anthos-samples"
    
    # this is the username used to authenticate to your fork of this repository
    export SCM_TOKEN_USER="GITHUB_USERNAME"
    
    # access token created in the earlier step
    export SCM_TOKEN_TOKEN="ACCESS_TOKEN"
    

    替換下列值:

    • PROJECT_ID:您的 Google Cloud 專案 ID。
    • GITHUB_USERNAME:您的 GitHub 使用者名稱。
    • ACCESS_TOKEN:為 GitHub 存放區建立的個人存取權杖。

    其他環境變數則保留預設值。後續章節將說明這些概念。

  2. 在工作站上初始化 Google Cloud CLI:

    gcloud config set project "${PROJECT_ID}"
    gcloud services enable compute.googleapis.com
    
    gcloud config set compute/region "${REGION}"
    gcloud config set compute/zone "${ZONE}"
    
  3. 在工作站上,為 Compute Engine 執行個體建立 Google Cloud 服務帳戶。這個指令碼會在 <REPO_ROOT>/anthos-bm-edge-deployment/build-artifacts/consumer-edge-gsa.json 為新服務帳戶建立 JSON 金鑰檔案。並設定 Cloud Key Management Service 金鑰環和金鑰,用於加密 SSH 私密金鑰。

    ./scripts/create-primary-gsa.sh
    

    以下範例僅為部分指令碼。如要查看完整指令碼,請按一下「在 GitHub 上查看」

    # ...
    EXISTS=$(gcloud iam service-accounts list \
      --filter="email=${GSA_EMAIL}" \
      --format="value(name, disabled)" \
      --project="${PROJECT_ID}")
    
    if [[ -z "${EXISTS}" ]]; then
      echo "GSA [${GSA_EMAIL}]does not exist, creating it"
    
      # GSA does NOT exist, create
      gcloud iam service-accounts create ${GSA_NAME} \
        --description="GSA used on each Target machine to make gcloud commands" \
        --display-name="target-machine-gsa" \
        --project "${PROJECT_ID}"
    else
      if [[ "${EXISTS}" =~ .*"disabled".* ]]; then
        # Found GSA is disabled, enable
        gcloud iam service-accounts enable "${GSA_EMAIL}" --project "${PROJECT_ID}"
      fi
      # otherwise, no need to do anything
    fi
    # ...

佈建 Compute Engine 執行個體

在本節中,您將建立 Compute Engine VM,並在其中安裝 Google Distributed Cloud 軟體。您也必須先驗證與這些 VM 的連線,再繼續前往安裝章節。

  1. 在工作站上建立 SSH 金鑰,用於 Compute Engine 執行個體之間的通訊:

    ssh-keygen -f ./build-artifacts/consumer-edge-machine
    
  2. 使用 Cloud Key Management Service 加密 SSH 私密金鑰:

    gcloud kms encrypt \
        --key gdc-ssh-key \
        --keyring gdc-ce-keyring \
        --location global \
        --plaintext-file build-artifacts/consumer-edge-machine \
        --ciphertext-file build-artifacts/consumer-edge-machine.encrypted
    
  3. 產生環境設定檔 .envrc 並提供來源。建立後,請檢查 .envrc 檔案,確保環境變數已替換為正確值。

    envsubst < templates/envrc-template.sh > .envrc
    source .envrc
    

    以下是透過取代 templates/envrc-template.sh 檔案中的環境變數所產生的 .envrc 檔案範例。請注意,更新的行會醒目顯示:

    # GSA Key used for provisioning (result of running ./scripts/create-primary-gsa.sh)
    LOCAL_GSA_FILE=$(pwd)/build-artifacts/consumer-edge-gsa.json
    export LOCAL_GSA_FILE
    # GCP Project ID
    export PROJECT_ID="abm-edge-project"
    # Bucket to store cluster snapshot information
    export SNAPSHOT_GCS="abm-edge-project-cluster-snapshots"
    
    # GCP Project Region (Adjust as desired)
    export REGION="us-central1"
    # GCP Project Zone (Adjust as desired)
    export ZONE="us-central1-a"
    
    # Gitlab Personal Access Token credentials (generated in Quick Start step 2)
    export SCM_TOKEN_USER="LarryPage"
    export SCM_TOKEN_TOKEN="oo901Sp-FHuzmz__dgl0393atkf69c8L"
    
    # Default Root Repo setup for multiple locations
    export ROOT_REPO_URL="https://github.com/LarryPage/anthos-samples"
    export ROOT_REPO_BRANCH="main"
    export ROOT_REPO_DIR="/anthos-bm-edge-deployment/acm-config-sink"
    
    # OIDC Configuration (off by default)
    export OIDC_CLIENT_ID="" # Optional, requires GCP API setup work
    export OIDC_CLIENT_SECRET="" # Optional
    export OIDC_USER="" # Optional
    export OIDC_ENABLED="false" # Flip to true IF implementing OIDC on cluster

  4. 建立 Compute Engine 執行個體:

    ./scripts/cloud/create-cloud-gce-baseline.sh -c "$GCE_COUNT" | \
        tee ./build-artifacts/gce-info
    

使用 Ansible 安裝 Bare Metal 叢集

本指南使用的指令碼會以三組 Compute Engine 執行個體為一組,建立叢集。建立的叢集數量由 GCE_COUNT 環境變數控管。舉例來說,您可以將環境變數 GCE_COUNT 設為 6,建立兩個叢集,每個叢集有 3 個 VM 執行個體。根據預設,GCE_COUNT 環境變數會設為 3。因此,本指南將建立一個叢集,其中包含 3 個 Compute Engine 執行個體。VM 執行個體的名稱會以 cnuc- 為前置字串,後面加上數字。每個叢集的第一個 VM 執行個體會做為管理員工作站,從中觸發安裝作業。叢集也會獲得與管理工作站 VM 相同的名稱 (例如 cnuc-1cnuc-4cnuc-7)。

Ansible 劇本會執行下列作業:

  • 使用 dockerbmctlgcloudnomos 等必要工具設定 Compute Engine 執行個體。
  • 在設定的 Compute Engine 執行個體中安裝 Bare Metal 叢集。
  • 建立名為 cnuc-1 的獨立叢集。
  • 向 Google Cloud註冊 cnuc-1 叢集。
  • 將 Config Sync 安裝至 cnuc-1 叢集。
  • 設定 Config Sync,與位於已分叉存放區中 anthos-bm-edge-deployment/acm-config-sink 的叢集設定同步。
  • 產生叢集的 Login token

請完成下列步驟,設定並啟動安裝程序:

  1. 在工作站上,建立用於安裝的 Docker 映像檔。這個映像檔包含安裝程序所需的所有工具,例如 Ansible、Python 和 Google Cloud CLI。

    gcloud builds submit --config docker-build/cloudbuild.yaml docker-build/
    

    建構作業成功執行後,會產生類似下列的輸出內容:

    ...
    latest: digest: sha256:99ded20d221a0b2bcd8edf3372c8b1f85d6c1737988b240dd28ea1291f8b151a size: 4498
    DONE
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ID                                    CREATE_TIME                DURATION  SOURCE                                                                                         IMAGES                                                  STATUS
    2238baa2-1f41-440e-a157-c65900b7666b  2022-08-17T19:28:57+00:00  6M53S     gs://my_project_cloudbuild/source/1660764535.808019-69238d8c870044f0b4b2bde77a16111d.tgz  gcr.io/my_project/consumer-edge-install (+1 more)  SUCCESS
    
  2. 從範本產生 Ansible 目錄檔案:

    envsubst < templates/inventory-cloud-example.yaml > inventory/gcp.yaml
    
  3. 執行安裝指令碼,從先前建構的映像檔啟動 Docker 容器。指令碼會在內部使用 Docker 產生容器,並將磁碟區掛接至目前的工作目錄。成功完成這項指令碼後,您必須位於建立的 Docker 容器內。您會從這個容器內觸發 Ansible 安裝作業。

    ./install.sh
    

    指令碼成功執行後,會產生類似下列的輸出內容:

    ...
    Check the values above and if correct, do you want to proceed? (y/N): y
    Starting the installation
    Pulling docker install image...
    
    ==============================
    Starting the docker container. You will need to run the following 2 commands (cut-copy-paste)
    ==============================
    1: ./scripts/health-check.sh
    2: ansible-playbook all-full-install.yaml -i inventory
    3: Type 'exit' to exit the Docker shell after installation
    ==============================
    Thank you for using the quick helper script!
    (you are now inside the Docker shell)
    
  4. 在 Docker 容器內,驗證 Compute Engine 執行個體的存取權:

    ./scripts/health-check.sh
    

    指令碼成功執行後,會產生類似下列的輸出內容:

    ...
    cnuc-2 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"},"changed": false,"ping": "pong"}
    cnuc-3 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"},"changed": false,"ping": "pong"}
    cnuc-1 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"},"changed": false,"ping": "pong"}
    
  5. 在 Docker 容器內,執行 Ansible 劇本,在 Compute Engine 執行個體上安裝裸機叢集:

    完成後,畫面上會顯示叢集的 Login Token

    ansible-playbook all-full-install.yaml -i inventory | tee ./build-artifacts/ansible-run.log
    

    安裝作業成功執行後,會產生類似下列的輸出內容:

    ...
    TASK [abm-login-token : Display login token] **************************************************************************
    ok: [cnuc-1] => {
        "msg": "eyJhbGciOiJSUzI1NiIsImtpZCI6Imk2X3duZ3BzckQyWmszb09sZHFMN0FoWU9mV1kzOWNGZzMyb0x2WlMyalkifQ.eymljZS1hY2NvdW
    iZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImVkZ2Etc2EtdG9rZW4tc2R4MmQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2Nvd
    4CwanGlof6s-fbu8"
    }
    skipping: [cnuc-2]
    skipping: [cnuc-3]
    
    PLAY RECAP ***********************************************************************************************************
    cnuc-1                     : ok=205  changed=156  unreachable=0    failed=0    skipped=48   rescued=0    ignored=12
    cnuc-2                     : ok=128  changed=99   unreachable=0    failed=0    skipped=108  rescued=0    ignored=2
    cnuc-3                     : ok=128  changed=99   unreachable=0    failed=0    skipped=108  rescued=0    ignored=2
    

在 Google Cloud 控制台中登入叢集

Ansible 劇本執行完畢後,Compute Engine VM 內就會安裝獨立叢集。這個叢集也已使用 Connect 代理程式向Google Cloud註冊。不過,如要查看這個叢集的詳細資料,您必須從 Google Cloud 控制台登入叢集。

如要登入叢集,請完成下列步驟:

  1. 從上一節 Ansible 劇本的輸出內容複製符記。

  2. 在 Google Cloud 控制台中,前往「Kubernetes clusters」(Kubernetes 叢集) 頁面,然後使用複製的權杖登入 cnuc-1 叢集。

    前往 Kubernetes 的「clusters」(叢集) 頁面

    1. 在叢集清單中,按一下 cnuc-1 叢集旁的「Actions」(動作),然後按一下「Log in」(登入)
    2. 選取「權杖」,然後貼上複製的權杖。
    3. 按一下 [Login] (登入)。
  3. 前往 Google Cloud 控制台的「Features」(功能) 區段,然後點選「Config」(設定) 頁面。

    前往「設定」

  4. 在「套件」分頁中,查看叢集表格的「同步狀態」欄。 確認狀態為「已同步」。「已同步」狀態表示 Config Sync 已成功將 GitHub 設定與已部署的叢集 cnuc-1 同步。

s <0

設定外部流量的 Proxy

先前步驟中安裝的叢集會使用名為 MetalLB 的套裝組合負載平衡器。這項負載平衡器服務只能透過虛擬私有雲 (VPC) IP 位址存取。如要將透過外部 IP 傳入的流量,轉送至隨附的負載平衡器,請在管理主機 (cnuc-1) 中設定反向 Proxy 服務。透過這項反向 Proxy 服務,您可以使用管理主機 (cnuc-1) 的外部 IP,連線至銷售點應用程式的 API 伺服器。

先前步驟中的安裝指令碼已在管理主機中安裝 NGINX,以及範例設定檔。更新這個檔案,以使用負載平衡器服務的 IP 位址,然後重新啟動 NGINX。

  1. 在工作站上,使用 SSH 登入管理員工作站:

    ssh -F ./build-artifacts/ssh-config abm-admin@cnuc-1
    
  2. 在管理工作站內,設定 NGINX 反向 Proxy,將流量路由至 API 伺服器負載平衡器服務。取得 Load balancer 類型的 Kubernetes 服務 IP 位址:

    ABM_INTERNAL_IP=$(kubectl get services api-server-lb -n pos | awk '{print $4}' | tail -n 1)
    
  3. 使用擷取的 IP 位址更新範本設定檔:

    sudo sh -c "sed 's/<K8_LB_IP>/${ABM_INTERNAL_IP}/g' \
        /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf"
    
  4. 重新啟動 NGINX,確保套用新設定:

    sudo systemctl restart nginx
    
  5. 檢查並驗證 NGINX 伺服器的狀態報告「active (running)」:

    sudo systemctl status nginx
    

    如果 NGINX 順利執行,輸出內容會類似以下範例:

     nginx.service - A high performance web server and a reverse proxy server
        Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
        Active: active (running) since Fri 2021-09-17 02:41:01 UTC; 2s ago
        Docs: man:nginx(8)
        Process: 92571 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
        Process: 92572 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Main PID: 92573 (nginx)
        Tasks: 17 (limit: 72331)
        Memory: 13.2M
        CGroup: /system.slice/nginx.service
                ├─92573 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
                ├─92574 nginx: worker process
                ├─92575 nginx: worker process
                ├─92577 nginx: ....
                ...
                ...
    
  6. 結束 SSH 工作階段,返回管理員工作站:

    exit
    
  7. 從殼層工作階段退出 Docker 容器。離開管理員執行個體後,您仍處於用於安裝的 Docker 容器內:

    exit
    

存取銷售點應用程式

設定外部 Proxy 後,您就能存取叢集內執行的應用程式。如要存取銷售點應用程式範例,請完成下列步驟。

  1. 在工作站上,取得管理員 Compute Engine 執行個體的外部 IP 位址,並存取銷售點應用程式的 UI:

    EXTERNAL_IP=$(gcloud compute instances list \
        --project ${PROJECT_ID} \
        --filter="name:cnuc-1" \
        --format="get(networkInterfaces[0].accessConfigs[0].natIP)")
    echo "Point the browser to: ${EXTERNAL_IP}:${PROXY_PORT}"
    

    指令碼成功執行後,會產生類似下列的輸出內容:

    Point the browser to: 34.134.194.84:8082
    
  2. 開啟網路瀏覽器,然後前往上一個指令輸出中顯示的 IP 位址。您可以存取及測試銷售點應用程式範例,如下列螢幕截圖所示:

    已部署第 1 版銷售點應用程式

使用 Config Sync 更新 API 伺服器

如要將範例應用程式升級至較新版本,請更新根存放區中的設定檔。Config Sync 會偵測更新,並自動對叢集進行變更。在本範例中,根存放區是您在本指南開頭複製的 anthos-samples 存放區。如要瞭解銷售點範例應用程式如何透過升級部署作業升級至新版,請完成下列步驟。

  1. 在工作站上更新 image 欄位,將 API 伺服器版本從 v1 變更為 v2。部署作業的 YAML 設定位於 anthos-bm-edge-deployment/acm-config-sink/namespaces/pos/api-server.yaml 檔案中。

    containers:
    - name: api-server
      image: us-docker.pkg.dev/anthos-dpe-abm-edge-pos/abm-edge-pos-images/api-server:v1
  2. 新增、修訂及推送變更至分支存放區:

    git add acm-config-sink/namespaces/pos/api-server.yaml
    git commit -m "chore: updated api-server version to v2"
    git push
    
  3. 前往 Google Cloud 控制台的「Config Sync」頁面,查看「Config spec status」。確認狀態為「已同步」

    前往 Config Sync 頁面

  4. 前往 Google Cloud 控制台的「Kubernetes Engine Workloads」(Kubernetes Engine 工作負載) 頁面,確認 Deployment 已更新。

    前往 Kubernetes Engine 的「工作負載」頁面

  5. 當「部署」狀態為「OK」時,請將瀏覽器指向上一節中的 IP 位址,即可查看銷售點應用程式。請注意,標題中的版本顯示「V2」,表示應用程式變更已部署,如下方螢幕截圖範例所示:

    已部署銷售點應用程式的第 2 版

    您可能需要強制重新整理瀏覽器分頁,才能看到變更。

清除所用資源

為避免產生不必要的 Google Cloud 費用,請在完成本指南的內容後,刪除使用的資源。您可以手動刪除這些資源,也可以刪除 Google Cloud 專案,這樣一來,所有資源都會一併刪除。此外,您可能還需要清除本機工作站所做的變更:

本機工作站

您必須更新下列檔案,才能清除安裝指令碼所做的變更。

  • /etc/hosts 檔案中移除新增的 Compute Engine VM IP 位址。
  • ~/.ssh/config 檔案中移除 cnuc-* 的 SSH 設定。
  • ~/.ssh/known_hosts 檔案中移除 Compute Engine VM 指紋。

刪除專案

如果您是特地為這個程序建立專案,請從 Google Cloud 控制台刪除 Google Cloud 專案。

  • In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  • In the project list, select the project that you want to delete, and then click Delete.
  • In the dialog, type the project ID, and then click Shut down to delete the project.
  • 手動

    如果您使用現有專案執行這項程序,請按照下列步驟操作:

    • 取消註冊名稱前置字元為 cnuc- 的所有 Kubernetes 叢集。
    • 刪除名稱前置字串為 cnuc- 的所有 Compute Engine VM。
    • 刪除名稱前置字元為 abm-edge-boot 的 Cloud Storage bucket。
    • 刪除防火牆規則 allow-pod-ingressallow-pod-egress
    • 刪除 Secret Manager 密鑰 install-pub-key

    後續步驟

    您可以新增另一個邊緣位置,擴充本指南的內容。將 GCE_COUNT 環境變數設為 6,然後重新執行前幾節的相同步驟,即可建立三個新的 Compute Engine 執行個體 (cnuc-4cnuc-5cnuc-6) 和一個名為 cnuc-4 的新獨立叢集。

    您也可以嘗試更新分叉存放區中的叢集設定,使用 ClusterSelectors,將不同版本的銷售點應用程式選擇性套用至兩個叢集 cnuc-1cnuc-4

    如要瞭解本指南中各個步驟的詳細資訊和相關指令碼,請參閱 anthos-samples 存放區。