全部產品
Search
文件中心

Function Compute:管理環境

更新時間:Jul 06, 2024

應用建立成功後,您可以查看應用對應的環境資訊。本文介紹如何通過Function Compute控制台應用中心管理應用環境,包括建立環境、查看環境、刪除環境以及使用環境隔離服務。

背景資訊

環境提供基礎設施的管理能力。通過環境,您可以:

  • 將服務部署在完全隔離的基礎設施中(例如不同地區、不同VPC間服務隔離),實現生產服務的高可用或者低延遲。

  • 為環境關聯不同的流水線觸發規則(例如,開發分支提交動作觸發測試環境CI,主幹分支合并觸發生產環境發布),實現科學的安全生產流程。

使用說明

  • 環境不會自動分配網域名稱,但環境可以託管一些雲資源,例如SLS、VPC或NAS等,這些資源在不同環境中互相隔離。如果需要不同環境使用不同的網域名稱,需要在倉庫的s.yaml中指定customDomains欄位

  • 環境託管資源時需要訪問雲端服務的許可權。您可以對AliyunFCServerlessDevsRole角色授予相關雲端服務的權限原則。

  • 服務可以部署到不同的環境中,但是否使用環境提供的配置由使用者自己決定。

查看環境

登入Function Compute控制台,在左側導覽列,單擊應用,然後在應用頁面,單擊目標應用左側的xiala表徵圖查看應用的環境列表。

單擊環境名稱,您可以查看某個環境的詳細資料,包括基本資料、代碼源配置以及部署歷史、對應的資源等。另外,還可以對環境關聯的代碼進行雲端開發以及流水線配置。

環境復原

重要

環境復原存在一定風險。當使用者誤操作導致環境問題時,通過環境復原功能可以復原到正確的時間節點,但是此處提供的復原,僅為當前應用的業務代碼復原。對於上下遊的業務等,無法進行復原,例如,當前應用使用了資料庫,如果資料庫因為其他錯誤操作導致無法串連,此時復原應用的業務代碼,可能無法解決資料庫的故障。

您可以在應用詳情頁面的環境詳情頁簽,在部署歷史地區,單擊復原進行環境復原。

env-rollback

環境復原是指按照對應的部署歷史快照,進行商務邏輯與對應配置的重新部署。商務邏輯與對應配置是指對應代碼倉庫中,指定commit中的代碼與資源配置,例如s.yaml

資源管理

Serverless應用中心不提供資源管理功能,但是支援查看資源關聯的資訊。

可以通過資源關聯資訊,進入到對應資源的管理頁面進行資源管理等操作。Function Compute不推薦此操作,推薦所有的資源管理通過代碼倉庫中的資源描述檔案s.yaml進行管理。在資源管理頁面直接對資源進行操作,而未同步更改代碼倉庫的資源描述檔案,可能會導致資源被覆蓋。例如,某環境對應分支下代碼倉庫中的資源描述檔案中,描述了某函數對應的記憶體大小為1024 MB,此時開發人員直接修改該函數配置,將其記憶體修改為2048 MB,而沒有更新代碼倉庫中的資源描述檔案,此時觸發環境流水線部署,會導致該函數的記憶體由2048 MB變回1024 MB。

雲端開發

Serverless應用中心提供了雲端開發能力。您可以在應用詳情頁面的雲端開發頁簽,單擊初始化倉庫初始化代碼。

初始化之後,可以在WebIDE中查看代碼,並進行基礎的開發和調試等操作。完成之後可以通過Terminal或者Git外掛程式將程式碼推送到代碼倉庫,也可以點擊左上方的儲存代碼到倉庫快速進行代碼的Add、Commit和Push操作。

cloud-develop

流水線管理

具體資訊,請參見管理流水線

建立環境

應用中心為開發人員提供多環境管理能力。開發人員可以在應用詳情頁面單擊建立環境,然後根據介面提示即可快速完成環境建立。create-environment

建立環境涉及的配置項說明如下。

配置項

說明

環境名稱

環境的命名,用於對環境進行區分。一個環境類型可以對應多個環境名稱。

環境類型

用於對環境進行分類和篩選。目前提供測試環境、預發環境以及生產環境。

環境的基礎資訊

包括環境的描述、地區、角色名稱等。

在建立環境頁面對環境進行配置的選項(例如地區、日誌功能、網路設定以及儲存配置等),優先順序高於代碼倉庫中或者應用模板中資源描述檔案s.yaml的配置。例如,代碼倉庫中存在s.yaml,配置地區為華東1(杭州),而在建立環境時配置地區為華北2(北京),則最終的資源部署地區為華北2(北京)。

流水線配置

在Serverless應用中心,預設每個環境對應一條流水線,您可以針對不同環境對流水線進行配置。

Serverless應用中心,提供的多環境能力更多是與代碼倉庫的代碼分支進行關聯。推薦的最佳實務為一個環境對應一條流水線,一條流水線對應一個分支。例如,可以在代碼倉庫建立dev分支對應開發環境,test分支對應測試環境,以及main/master分支對應生產環境。通過向不同的分支提交代碼,觸發流水線,確保環境的正常更新。從開發分支到測試分支,再到主幹分支,可以通過代碼倉庫提供的PR/MR功能,實現代碼的流轉與環境的流轉。

實際使用過程中,會存在使用一份代碼部署多個應用,給不同使用者使用的情況,此時可以通過一個代碼分支觸發多條流水線,以實現代碼更新後,多個環境同步生效。

刪除環境

登入Function Compute控制台,在左側導覽列,單擊應用,然後在應用頁面,單擊目標環境右側操作列的刪除,根據介面提示,可以刪除不再使用的環境。

警告

刪除環境可能涉及資源的刪除。因此刪除環境時,需要確定要刪除的資源名稱與資源類型。如果不需要刪除資源,需要取消勾選資源左側的複選框。

delete-environment

使用環境隔離服務

Serverless應用中心採用GitOps方式進行DevOps的最佳實務,即通過Git倉庫來管理應用基礎設施以及CI/CD流程。Git倉庫是應用狀態的唯一真實來源,具體方式是使用符合規範的YAML檔案,通過在YAML檔案中設定相關配置實現使用環境隔離服務。關於YAML規範,請參見YAML規範

在很多情境下,企業內部會區分開發和營運角色。兩者有著明確的職責劃分,基礎設施一般由營運角色管理並且授權給研發使用。如果所有基礎設施都維護到Git倉庫中,需要營運人員通過提交代碼的方式來變更基礎設施,在一些情境下不太符合營運人員的使用習慣。因此,應用中心當前提供以下三種部署方式。

  • 方式一:

    不同環境維護不同的YAML檔案,在環境中配置流水線,使用指定的YAML檔案來部署。

    one-pipeline-one-yaml

    Serverless Devs支援YAML的繼承能力來減少YAML重複配置成本。具體操作,請參見YAML繼承

  • 方式二:

    不同環境使用同一個YAML檔案,環境的差異化配置在流水線環境變數中,通過在YAML檔案中引用環境變數來隔離。樣本如下。

    vars:
      region: ${env(region)}
      service:
        name: demo-service-${env(prefix)}
        internetAccess: true
        logConfig:
          project: ${env(LOG_PROJECT)}
          logstore: fc-console-function-pre
        vpcConfig:
          securityGroupId: ${env(SG_ID)}
          vswitchIds:
            - ${env(VSWITCH_ID)}
          vpcId: ${env(VPC_ID)}
  • 方式三:

    不同環境使用同一個YAML檔案,直接使用所在環境的資源資訊來配置指定服務,樣本如下。

    service:
      logConfig:
        project: ${environment.outputs.slsProject}
        logstore: ${environment.outputs.slsLogStore}
      vpcConfig:
        vpcId: ${environment.outputs.vpcId}
        securityGroupId: ${environment.outputs.securityGroupId}
        vswitchIds:
        - ${environment.outputs.vswitchId}
      nasConfig:
        userId: 10003
        groupId: 10003
        mountPoints:
        - serverAddr: ${environment.outputs.nasMountTargetId}
          nasDir: /fc-deploy-service
          fcDir: /mnt/auto

不同的部署方式適用的情境不同。

  • 方式一:

    適用於研發和營運屬於同一個團隊,均有維護YAML檔案許可權的情境。此方式非常敏捷。

  • 方式二:

    適用於基礎設施變更不頻繁且環境個數不多的情境。由營運角色提前規劃好資源並且配置到流水線環境變數中,YAML檔案中只需要聲明引用環境變數。此方式關注點完全分離,但是基礎設施較多時不便於擴充。

  • 方式三:

    適用於現代化Serverless應用的研發方式,例如,CI自動觸發不同環境拉起雲上資源,測試完成後刪除環境資源;使用環境來一鍵開服;生產環境研發及營運職責分離,對研發隔離生產資源存取權限等。