全部產品
Search
文件中心

Serverless App Engine:部署第一個Serverless應用

更新時間:May 07, 2026

您僅需將代碼或鏡像上傳到SAE,即可部署應用服務。SAE會代您管理底層的計算資源,通過簡單配置即可實現根據訪問量自動擴縮容、跨可用性區域部署。

方案概覽

您將部署一組微服務應用,實現服務的註冊與發現、服務之間的方法調用,並且通過公網來訪問應用。樣本應用的架構如下:

儘管本文以Java微服務應用為例,但SAE對應用的技術棧語言和架構沒有限制,能夠適配多種業務情境,例如靜態網站前後端分離的網站單體應用微服務應用

為實現本方案,您將:

  1. 部署應用:使用樣本鏡像部署provider應用與consumer應用。通過SAE內建的Nacos實現服務註冊與發現,使得consumer應用可以調用provider應用提供的服務。

  2. 通過公網訪問應用: 為consumer應用配置公網訪問地址並訪問應用。

準備工作

開通SAE服務並授權

建議您使用阿里雲帳號開通SAE服務,並通過RAM使用者來管理SAE相關的資源。

為阿里雲帳號開通服務

進入SAE產品首頁點擊立即選購登入阿里雲帳號,根據頁面提示開通SAE服務並建立服務關聯角色。

重要

SAE服務開通後,超出免費試用額度期限的部分將隨用隨付。為節省費用,您可以購買資源套件(預付費)

為RAM使用者授權

您需要通過阿里雲帳號為RAM使用者授權,授予SAE要求的權限策略,RAM使用者才能管理SAE服務相關的資源。

操作指引

SAE支援控制台saectl工具(相容kubectl)等多種操作方式,從中選擇您熟悉的方式來完成本教程。

控制台

1. 部署應用

  1. 部署provider應用:登入SAE控制台,在左側選擇,在頂部選擇應用部署的地區(本文以杭州為例),點擊建立應用。配置以下參數,其餘保持預設。點擊一鍵建立應用(跳過進階設定)。

    如果導覽列中沒有,請選擇
    如果提示選擇應用版本,請選擇標準版輕量版專業版目前處於邀約測試階段。完成本教程無需考慮應用版本間的差異。
    1. 自訂應用程式名稱,例如provider

    2. 設定命名空間類型系統建立,表示應用將會建立於當前地區的預設命名空間,且自動建立並關聯VPC、交換器、安全性群組等網路資源,無需使用者關注。

    3. 設定應用部署方式選擇鏡像部署。點擊設定鏡像,在Demo鏡像標籤頁,找到微服務應用-提供者選擇鏡像版本microservice-java-provider-v1.0,點擊確定

    4. 容量設定地區,自訂單一實例規格執行個體數,這決定了應用初始啟動並執行執行個體數量、系統為每個執行個體分配多少計算資源。

  2. 部署consumer應用:重複上述步驟並調整以下參數來部署Consumer應用。

    1. 自訂應用程式名稱,例如consumer

    2. 設定鏡像時,找到微服務應用-消費者選擇鏡像版本microservice-java-consumer-v1.0

  3. 查看應用部署結果:請耐心等待應用建立完成,大約需要1分鐘。

    1. 您可以在應用列表中查看已建立的應用,點擊其中某個應用可以進入其詳情頁面。

    2. 在左側導覽列選擇基礎資訊,在執行個體列表頁簽中,可以查看已建立的應用執行個體。

2. 通過公網訪問應用

為了實現從公網訪問consumer應用,一種簡便的方式是為該應用綁定公網CLB執行個體。

  1. 為consumer應用綁定公網CLB執行個體:進入consumer應用的詳情頁面。在應用資訊頁簽中,在應用訪問設定地區選取項目基於CLB訪問。點擊添加公網CLB訪問,配置如下參數,然後點擊確定

    1. CLB執行個體中,選擇建立CLB執行個體

    2. HTTP協議頁簽中,設定HTTP連接埠80容器連接埠18082

  2. 驗證結果:SAE將為您代購一個CLB執行個體並綁定到當前應用。等待建立完成,控制台將顯示應用的公網訪問地址

    1. 通過瀏覽器訪問http://<公網訪問地址>/consumer-echo/hello(其中<公網訪問地址>需要替換為實際值),驗證能夠通過公網來訪問應用。

    2. 中,您可以查看consumer應用調用provider應用的拓撲視圖。

3. 清理資源

在完成本教程後,建議清理相關資源,避免持續產生費用。

  1. 刪除應用:進入provider應用和consumer應用的詳情頁面,點擊,並按照指引操作來刪除上述應用。

    SAE代購的CLB執行個體將隨應用刪除而自動釋放。
  2. (可選)刪除網路資源:在部署應用的過程中,系統自動建立了VPC、交換器、安全性群組。

    1. 查看VPC:在左側導覽列選擇,點擊預設,在基礎資訊頁面查看VPC,點選連結跳轉到VPC詳情頁。

    2. 查看交換器、安全性群組:在VPC的資源管理標籤頁點選連結跳轉到相應資源的詳情頁。

    3. 在各資源的詳情頁執行刪除操作。

saectl工具

1. 安裝與配置saectl工具

2. 部署應用

  1. 建立資源設定檔:在同一路徑中建立以下檔案。注意:將設定檔中的image: ...cn-hangzhou...替換為您的應用部署地區。

    1. deployment-provider.yaml用於配置provider應用:

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        annotations:
          sae.aliyun.com/new-sae-version: std # 選擇應用版本,std表示標準版。輕量版和專業版目前處於邀約測試階段。完成本教程無需考慮應用版本間的差異。
        name: provider # 應用程式名稱可自訂
        namespace: default # 選擇系統建立的預設命名空間,自動建立並關聯VPC、交換器、安全性群組等網路資源,無需使用者關注。
      spec:
        replicas: 2 # 應用執行個體的數量
        selector:
          matchLabels:
            sae.aliyun.com/app-name: provider # 必須與metadata中定義的應用程式名稱保持一致
        template:
          metadata:
            labels:
              sae.aliyun.com/app-name: provider # 必須與metadata中定義的應用程式名稱保持一致
          spec:
            containers:
            - name: main # 建議將containers的名稱固定設定為main,避免衝突。
              image: registry.cn-hangzhou.aliyuncs.com/sae-serverless-demo/sae-demo:microservice-java-provider-v1.0 # 使用provider應用的樣本鏡像,其中,cn-hangzhou需要替換為您部署應用的地區。
              resources: # 單個應用執行個體的規格。limits和requests需要保持相同的配置。
                limits:
                  cpu: "2"
                  memory: 4Gi
                requests:
                  cpu: "2"
                  memory: 4Gi
      
    2. deployment-consumer.yaml用於配置consumer應用:

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        annotations:
          sae.aliyun.com/new-sae-version: std # 選擇應用版本,std表示標準版。輕量版和專業版目前處於邀約測試階段。完成本教程無需考慮應用版本間的差異。
        name: consumer # 應用程式名稱可自訂
        namespace: default # 選擇系統建立的預設命名空間,自動建立並關聯VPC、交換器、安全性群組等網路資源,無需使用者關注。
      spec:
        replicas: 2 # 應用執行個體的數量
        selector:
          matchLabels:
            sae.aliyun.com/app-name: consumer # 必須與metadata中定義的應用程式名稱保持一致
        template:
          metadata:
            labels:
              sae.aliyun.com/app-name: consumer # 必須與metadata中定義的應用程式名稱保持一致
          spec:
            containers:
            - name: main # 建議將containers的名稱固定設定為main,避免衝突。
              image: registry.cn-hangzhou.aliyuncs.com/sae-serverless-demo/sae-demo:microservice-java-consumer-v1.0 # 使用consumer應用的樣本鏡像,其中,cn-hangzhou需要替換為您部署應用的地區。
              resources: # 單個應用執行個體的規格。limits和requests需要保持相同的配置。
                limits:
                  cpu: "2"
                  memory: 4Gi
                requests:
                  cpu: "2"
                  memory: 4Gi
      
  2. 執行部署:在上述設定檔所在路徑執行saectl apply -f deployment-provider.yaml -f deployment-consumer.yaml

  3. 驗證結果

    1. 查看應用:執行saectl get deployments -n default。其中,-n default表示查詢預設命名空間。返回結果中:

      1. STATE欄位顯示RUNNING表示應用正常運行;如果顯示PUBLISHING表示應用正在部署,請等待部署完成後再查看。

      2. READY欄位顯示n/m代表已就緒的執行個體數/期望部署的執行個體數

    2. 查看應用執行個體:執行saectl get pods -n default。返回結果中:

      1. STATUS欄位顯示RUNNING表示執行個體中的容器正常運行;如果顯示ContainerCreating表示容器正在建立,請等待建立完成後再查看。

      2. READY欄位顯示n/m代表已就緒的容器數/總容器數

3. 通過公網訪問應用

為了實現從公網訪問consumer應用,一種簡便的方式是為該應用綁定公網CLB執行個體。

  1. 建立資源設定檔:建立svc.yaml用於配置Service,即通過為consumer應用綁定公網CLB對外提供服務:

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        sae.aliyun.com/loadbalancer-address-type: internet # 公網或私網類型, internet表示公網類型,intranet表示私網類型。
      name: internet-consumer # 固定格式 ${公網或私網類型}-${應用程式名稱}
    spec:
      ports:
      - name: port-80 # 固定格式 port-${對外連接埠}
        port: 80
        protocol: HTTP
        targetPort: 18082 # consumer應用的容器連接埠
      selector:
        sae.aliyun.com/app-name: consumer # 應用程式名稱
      type: LoadBalancer
    
  2. 執行部署:在上述設定檔所在路徑執行saectl apply -f svc.yaml

  3. 驗證結果

    1. 查看服務:執行saectl get services -n default。返回結果中:

      1. EXTERNAL-IP欄位顯示訪問應用的公網IP;如果顯示<pending>表示服務正在建立,請等待建立完成後再查看。

      2. PORT(S)欄位顯示您配置的應用訪問連接埠。

    2. 從公網訪問應用:執行curl http://<公網訪問地址>:<訪問連接埠>/consumer-echo/hello(其中<公網訪問地址><訪問連接埠>需要替換為實際值)。從返回結果中,能夠看到consumer應用通過調用provider應用來處理請求的過程。

4. 清理資源

在完成本教程後,建議清理相關資源,避免持續產生費用。

刪除應用:執行saectl delete -f deployment-provider.yaml -f deployment-consumer.yaml

SAE代購的CLB執行個體將隨應用刪除而自動釋放。

後續步驟