在邊緣部署叢集

本教學課程介紹一項現成解決方案,僅使用 Distributed Cloud 裸機軟體和 Config Sync,在邊緣大規模部署 Kubernetes 叢集。本教學課程適用於平台操作人員和開發人員。閱讀本文前,請確認您已熟悉下列技術和概念:

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

邊緣部署架構

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

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

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

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

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

圖中也顯示裸機叢集部署作業包含下列重要元件:

  • 標示為 MetalLB 的元件是隨附的負載平衡器。

  • Config Sync 元件可讓叢集狀態與來源存放區同步。這項選用外掛程式非常值得安裝,但需要另外安裝及設定。如要進一步瞭解如何設定 Config Sync 和不同的命名法,請參閱 Config Sync 說明文件

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

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

  • 圖中顯示的另一個叢集重要元件是 GDC 上的 VM 執行階段。GDC 的 VM 執行階段可讓您在叢集內執行現有的 VM 工作負載,無須容器化。請參閱 GDC 的 VM Runtime 說明文件, 瞭解如何啟用這項功能,並將 VM 工作負載部署到叢集。

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

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

在下一節中,您會看到在Google Cloud 使用 Compute Engine VM 模擬部署這個零售商店。在後續教學課程中,您會使用這項模擬功能,對裸機叢集進行實驗。

Google Cloud中的模擬邊緣部署

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

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

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

在典型的裸機叢集安裝作業中,您可以設定自己的負載平衡器。不過,在本教學課程中,您不會設定外部負載平衡器。而是使用隨附的 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,並只安裝 Distributed Cloud 軟體。您也會先驗證這些 VM 的連線能力,再繼續進行安裝。

  1. 在工作站上,建立用於 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 安裝裸機叢集

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

Ansible 教戰手冊會執行下列操作:

  • 使用 docker、bmctl、gcloud 和 nomos 等必要工具設定 Compute Engine 執行個體。
  • 在設定的 Compute Engine 執行個體中安裝裸機叢集。
  • 建立名為 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 Playbook 執行完畢後,Compute Engine VM 中會安裝獨立叢集。這個叢集也使用 Connect 代理程式註冊至Google Cloud。不過,如要查看這個叢集的詳細資料,您必須從 Google Cloud 控制台登入叢集。

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

  1. 複製上一節中 Ansible Playbook 的輸出內容中的權杖。

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

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

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

    前往「Config」

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

設定外部流量的 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 位址,並存取銷售點應用程式的使用者介面:

    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 Workloads」(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 專案。

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

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

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

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

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

    後續步驟

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

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

    如要進一步瞭解本指南中的個別步驟和相關指令碼,請參閱 anthos-samples 存放區。