應用建立成功後,您可以查看應用對應的環境資訊。本文介紹如何通過Function Compute控制台應用中心管理應用環境,包括建立環境、查看環境、刪除環境以及使用環境隔離服務。
背景資訊
環境提供基礎設施的管理能力。通過環境,您可以:
將服務部署在完全隔離的基礎設施中(例如不同地區、不同VPC間服務隔離),實現生產服務的高可用或者低延遲。
為環境關聯不同的流水線觸發規則(例如,開發分支提交動作觸發測試環境CI,主幹分支合并觸發生產環境發布),實現科學的安全生產流程。
使用說明
環境不會自動分配網域名稱,但環境可以託管一些雲資源,例如SLS、VPC或NAS等,這些資源在不同環境中互相隔離。如果需要不同環境使用不同的網域名稱,需要在倉庫的
s.yaml
中指定customDomains欄位。環境託管資源時需要訪問雲端服務的許可權。您可以對
AliyunFCServerlessDevsRole
角色授予相關雲端服務的權限原則。服務可以部署到不同的環境中,但是否使用環境提供的配置由使用者自己決定。
查看環境
登入Function Compute控制台,在左側導覽列,單擊應用,然後在應用頁面,單擊目標應用左側的表徵圖查看應用的環境列表。
單擊環境名稱,您可以查看某個環境的詳細資料,包括基本資料、代碼源配置以及部署歷史、對應的資源等。另外,還可以對環境關聯的代碼進行雲端開發以及流水線配置。
環境復原
環境復原存在一定風險。當使用者誤操作導致環境問題時,通過環境復原功能可以復原到正確的時間節點,但是此處提供的復原,僅為當前應用的業務代碼復原。對於上下遊的業務等,無法進行復原,例如,當前應用使用了資料庫,如果資料庫因為其他錯誤操作導致無法串連,此時復原應用的業務代碼,可能無法解決資料庫的故障。
您可以在應用詳情頁面的環境詳情頁簽,在部署歷史地區,單擊復原進行環境復原。
環境復原是指按照對應的部署歷史快照,進行商務邏輯與對應配置的重新部署。商務邏輯與對應配置是指對應代碼倉庫中,指定commit
中的代碼與資源配置,例如s.yaml。
資源管理
Serverless應用中心不提供資源管理功能,但是支援查看資源關聯的資訊。
可以通過資源關聯資訊,進入到對應資源的管理頁面進行資源管理等操作。Function Compute不推薦此操作,推薦所有的資源管理通過代碼倉庫中的資源描述檔案s.yaml
進行管理。在資源管理頁面直接對資源進行操作,而未同步更改代碼倉庫的資源描述檔案,可能會導致資源被覆蓋。例如,某環境對應分支下代碼倉庫中的資源描述檔案中,描述了某函數對應的記憶體大小為1024 MB,此時開發人員直接修改該函數配置,將其記憶體修改為2048 MB,而沒有更新代碼倉庫中的資源描述檔案,此時觸發環境流水線部署,會導致該函數的記憶體由2048 MB變回1024 MB。
雲端開發
Serverless應用中心提供了雲端開發能力。您可以在應用詳情頁面的雲端開發頁簽,單擊初始化倉庫初始化代碼。
初始化之後,可以在WebIDE中查看代碼,並進行基礎的開發和調試等操作。完成之後可以通過Terminal或者Git外掛程式將程式碼推送到代碼倉庫,也可以點擊左上方的儲存代碼到倉庫快速進行代碼的Add、Commit和Push操作。
流水線管理
具體資訊,請參見管理流水線。
建立環境
應用中心為開發人員提供多環境管理能力。開發人員可以在應用詳情頁面單擊建立環境,然後根據介面提示即可快速完成環境建立。
建立環境涉及的配置項說明如下。
配置項 | 說明 |
環境名稱 | 環境的命名,用於對環境進行區分。一個環境類型可以對應多個環境名稱。 |
環境類型 | 用於對環境進行分類和篩選。目前提供測試環境、預發環境以及生產環境。 |
環境的基礎資訊 | 包括環境的描述、地區、角色名稱等。 在建立環境頁面對環境進行配置的選項(例如地區、日誌功能、網路設定以及儲存配置等),優先順序高於代碼倉庫中或者應用模板中資源描述檔案 |
流水線配置 | 在Serverless應用中心,預設每個環境對應一條流水線,您可以針對不同環境對流水線進行配置。 |
Serverless應用中心,提供的多環境能力更多是與代碼倉庫的代碼分支進行關聯。推薦的最佳實務為一個環境對應一條流水線,一條流水線對應一個分支。例如,可以在代碼倉庫建立dev
分支對應開發環境,test
分支對應測試環境,以及main/master
分支對應生產環境。通過向不同的分支提交代碼,觸發流水線,確保環境的正常更新。從開發分支到測試分支,再到主幹分支,可以通過代碼倉庫提供的PR/MR功能,實現代碼的流轉與環境的流轉。
實際使用過程中,會存在使用一份代碼部署多個應用,給不同使用者使用的情況,此時可以通過一個代碼分支觸發多條流水線,以實現代碼更新後,多個環境同步生效。
刪除環境
登入Function Compute控制台,在左側導覽列,單擊應用,然後在應用頁面,單擊目標環境右側操作列的刪除,根據介面提示,可以刪除不再使用的環境。
刪除環境可能涉及資源的刪除。因此刪除環境時,需要確定要刪除的資源名稱與資源類型。如果不需要刪除資源,需要取消勾選資源左側的複選框。
使用環境隔離服務
Serverless應用中心採用GitOps方式進行DevOps的最佳實務,即通過Git倉庫來管理應用基礎設施以及CI/CD流程。Git倉庫是應用狀態的唯一真實來源,具體方式是使用符合規範的YAML檔案,通過在YAML檔案中設定相關配置實現使用環境隔離服務。關於YAML規範,請參見YAML規範。
在很多情境下,企業內部會區分開發和營運角色。兩者有著明確的職責劃分,基礎設施一般由營運角色管理並且授權給研發使用。如果所有基礎設施都維護到Git倉庫中,需要營運人員通過提交代碼的方式來變更基礎設施,在一些情境下不太符合營運人員的使用習慣。因此,應用中心當前提供以下三種部署方式。
方式一:
不同環境維護不同的YAML檔案,在環境中配置流水線,使用指定的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自動觸發不同環境拉起雲上資源,測試完成後刪除環境資源;使用環境來一鍵開服;生產環境研發及營運職責分離,對研發隔離生產資源存取權限等。