管理環(huán)境
本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業(yè)務(wù)造成影響,請務(wù)必仔細(xì)閱讀。
應(yīng)用創(chuàng)建成功后,您可以查看應(yīng)用對應(yīng)的環(huán)境信息。本文介紹如何通過函數(shù)計(jì)算控制臺應(yīng)用中心管理應(yīng)用環(huán)境,包括創(chuàng)建環(huán)境、查看環(huán)境、刪除環(huán)境以及使用環(huán)境隔離服務(wù)。
背景信息
環(huán)境提供基礎(chǔ)設(shè)施的管理能力。通過環(huán)境,您可以:
將服務(wù)部署在完全隔離的基礎(chǔ)設(shè)施中(例如不同地域、不同VPC間服務(wù)隔離),實(shí)現(xiàn)生產(chǎn)服務(wù)的高可用或者低延遲。
為環(huán)境關(guān)聯(lián)不同的流水線觸發(fā)規(guī)則(例如,開發(fā)分支提交動作觸發(fā)測試環(huán)境CI,主干分支合并觸發(fā)生產(chǎn)環(huán)境發(fā)布),實(shí)現(xiàn)科學(xué)的安全生產(chǎn)流程。
使用說明
環(huán)境不會自動分配域名,但環(huán)境可以托管一些云資源,例如SLS、VPC或NAS等,這些資源在不同環(huán)境中互相隔離。如果需要不同環(huán)境使用不同的域名,需要在倉庫的
s.yaml
中指定customDomains字段。環(huán)境托管資源時(shí)需要訪問云服務(wù)的權(quán)限。您可以對
AliyunFCServerlessDevsRole
角色授予相關(guān)云服務(wù)的權(quán)限策略。服務(wù)可以部署到不同的環(huán)境中,但是否使用環(huán)境提供的配置由用戶自己決定。
查看環(huán)境
登錄函數(shù)計(jì)算控制臺,在左側(cè)導(dǎo)航欄,單擊應(yīng)用,然后在應(yīng)用頁面,單擊目標(biāo)應(yīng)用左側(cè)的圖標(biāo)查看應(yīng)用的環(huán)境列表。
單擊環(huán)境名稱,您可以查看某個環(huán)境的詳細(xì)信息,包括基本信息、代碼源配置以及部署歷史、對應(yīng)的資源等。另外,還可以對環(huán)境關(guān)聯(lián)的代碼進(jìn)行云端開發(fā)以及流水線配置。
環(huán)境回滾
環(huán)境回滾存在一定風(fēng)險(xiǎn)。當(dāng)用戶誤操作導(dǎo)致環(huán)境問題時(shí),通過環(huán)境回滾功能可以回滾到正確的時(shí)間節(jié)點(diǎn),但是此處提供的回滾,僅為當(dāng)前應(yīng)用的業(yè)務(wù)代碼回滾。對于上下游的業(yè)務(wù)等,無法進(jìn)行回滾,例如,當(dāng)前應(yīng)用使用了數(shù)據(jù)庫,如果數(shù)據(jù)庫因?yàn)槠渌e誤操作導(dǎo)致無法連接,此時(shí)回滾應(yīng)用的業(yè)務(wù)代碼,可能無法解決數(shù)據(jù)庫的故障。
您可以在應(yīng)用詳情頁面的環(huán)境詳情頁簽,在部署歷史區(qū)域,單擊回滾進(jìn)行環(huán)境回滾。
環(huán)境回滾是指按照對應(yīng)的部署歷史快照,進(jìn)行業(yè)務(wù)邏輯與對應(yīng)配置的重新部署。業(yè)務(wù)邏輯與對應(yīng)配置是指對應(yīng)代碼倉庫中,指定commit
中的代碼與資源配置,例如s.yaml。
資源管理
Serverless應(yīng)用中心不提供資源管理功能,但是支持查看資源關(guān)聯(lián)的信息。
可以通過資源關(guān)聯(lián)信息,進(jìn)入到對應(yīng)資源的管理頁面進(jìn)行資源管理等操作。函數(shù)計(jì)算不推薦此操作,推薦所有的資源管理通過代碼倉庫中的資源描述文件s.yaml
進(jìn)行管理。在資源管理頁面直接對資源進(jìn)行操作,而未同步更改代碼倉庫的資源描述文件,可能會導(dǎo)致資源被覆蓋。例如,某環(huán)境對應(yīng)分支下代碼倉庫中的資源描述文件中,描述了某函數(shù)對應(yīng)的內(nèi)存大小為1024 MB,此時(shí)開發(fā)者直接修改該函數(shù)配置,將其內(nèi)存修改為2048 MB,而沒有更新代碼倉庫中的資源描述文件,此時(shí)觸發(fā)環(huán)境流水線部署,會導(dǎo)致該函數(shù)的內(nèi)存由2048 MB變回1024 MB。
云端開發(fā)
Serverless應(yīng)用中心提供了云端開發(fā)能力。您可以在應(yīng)用詳情頁面的云端開發(fā)頁簽,單擊初始化倉庫初始化代碼。
初始化之后,可以在WebIDE中查看代碼,并進(jìn)行基礎(chǔ)的開發(fā)和調(diào)試等操作。完成之后可以通過Terminal或者Git插件將代碼推送到代碼倉庫,也可以點(diǎn)擊左上角的保存代碼到倉庫快速進(jìn)行代碼的Add、Commit和Push操作。
流水線管理
具體信息,請參見管理流水線。
創(chuàng)建環(huán)境
應(yīng)用中心為開發(fā)者提供多環(huán)境管理能力。開發(fā)者可以在應(yīng)用詳情頁面單擊創(chuàng)建環(huán)境,然后根據(jù)界面提示即可快速完成環(huán)境創(chuàng)建。
創(chuàng)建環(huán)境涉及的配置項(xiàng)說明如下。
配置項(xiàng) | 說明 |
環(huán)境名稱 | 環(huán)境的命名,用于對環(huán)境進(jìn)行區(qū)分。一個環(huán)境類型可以對應(yīng)多個環(huán)境名稱。 |
環(huán)境類型 | 用于對環(huán)境進(jìn)行分類和篩選。目前提供測試環(huán)境、預(yù)發(fā)環(huán)境以及生產(chǎn)環(huán)境。 |
環(huán)境的基礎(chǔ)信息 | 包括環(huán)境的描述、地域、角色名稱等。 在新建環(huán)境頁面對環(huán)境進(jìn)行配置的選項(xiàng)(例如地域、日志功能、網(wǎng)絡(luò)配置以及存儲配置等),優(yōu)先級高于代碼倉庫中或者應(yīng)用模板中資源描述文件 |
流水線配置 | 在Serverless應(yīng)用中心,默認(rèn)每個環(huán)境對應(yīng)一條流水線,您可以針對不同環(huán)境對流水線進(jìn)行配置。 |
Serverless應(yīng)用中心,提供的多環(huán)境能力更多是與代碼倉庫的代碼分支進(jìn)行關(guān)聯(lián)。推薦的最佳實(shí)踐為一個環(huán)境對應(yīng)一條流水線,一條流水線對應(yīng)一個分支。例如,可以在代碼倉庫創(chuàng)建dev
分支對應(yīng)開發(fā)環(huán)境,test
分支對應(yīng)測試環(huán)境,以及main/master
分支對應(yīng)生產(chǎn)環(huán)境。通過向不同的分支提交代碼,觸發(fā)流水線,確保環(huán)境的正常更新。從開發(fā)分支到測試分支,再到主干分支,可以通過代碼倉庫提供的PR/MR功能,實(shí)現(xiàn)代碼的流轉(zhuǎn)與環(huán)境的流轉(zhuǎn)。
實(shí)際使用過程中,會存在使用一份代碼部署多個應(yīng)用,給不同用戶使用的情況,此時(shí)可以通過一個代碼分支觸發(fā)多條流水線,以實(shí)現(xiàn)代碼更新后,多個環(huán)境同步生效。
刪除環(huán)境
登錄函數(shù)計(jì)算控制臺,在左側(cè)導(dǎo)航欄,單擊應(yīng)用,然后在應(yīng)用頁面,單擊目標(biāo)環(huán)境右側(cè)操作列的刪除,根據(jù)界面提示,可以刪除不再使用的環(huán)境。
刪除環(huán)境可能涉及資源的刪除。因此刪除環(huán)境時(shí),需要確定要刪除的資源名稱與資源類型。如果不需要刪除資源,需要取消勾選資源左側(cè)的復(fù)選框。
使用環(huán)境隔離服務(wù)
Serverless應(yīng)用中心采用GitOps方式進(jìn)行DevOps的最佳實(shí)踐,即通過Git倉庫來管理應(yīng)用基礎(chǔ)設(shè)施以及CI/CD流程。Git倉庫是應(yīng)用狀態(tài)的唯一真實(shí)來源,具體方式是使用符合規(guī)范的YAML文件,通過在YAML文件中設(shè)置相關(guān)配置實(shí)現(xiàn)使用環(huán)境隔離服務(wù)。關(guān)于YAML規(guī)范,請參見YAML規(guī)范。
在很多場景下,企業(yè)內(nèi)部會區(qū)分開發(fā)和運(yùn)維角色。兩者有著明確的職責(zé)劃分,基礎(chǔ)設(shè)施一般由運(yùn)維角色管理并且授權(quán)給研發(fā)使用。如果所有基礎(chǔ)設(shè)施都維護(hù)到Git倉庫中,需要運(yùn)維人員通過提交代碼的方式來變更基礎(chǔ)設(shè)施,在一些場景下不太符合運(yùn)維人員的使用習(xí)慣。因此,應(yīng)用中心當(dāng)前提供以下三種部署方式。
方式一:
不同環(huán)境維護(hù)不同的YAML文件,在環(huán)境中配置流水線,使用指定的YAML文件來部署。
Serverless Devs支持YAML的繼承能力來減少YAML重復(fù)配置成本。具體操作,請參見YAML繼承。
方式二:
不同環(huán)境使用同一個YAML文件,環(huán)境的差異化配置在流水線環(huán)境變量中,通過在YAML文件中引用環(huán)境變量來隔離。示例如下。
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)}
方式三:
不同環(huán)境使用同一個YAML文件,直接使用所在環(huán)境的資源信息來配置指定服務(wù),示例如下。
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
不同的部署方式適用的場景不同。
方式一:
適用于研發(fā)和運(yùn)維屬于同一個團(tuán)隊(duì),均有維護(hù)YAML文件權(quán)限的場景。此方式非常敏捷。
方式二:
適用于基礎(chǔ)設(shè)施變更不頻繁且環(huán)境個數(shù)不多的場景。由運(yùn)維角色提前規(guī)劃好資源并且配置到流水線環(huán)境變量中,YAML文件中只需要聲明引用環(huán)境變量。此方式關(guān)注點(diǎn)完全分離,但是基礎(chǔ)設(shè)施較多時(shí)不便于擴(kuò)展。
方式三:
適用于現(xiàn)代化Serverless應(yīng)用的研發(fā)方式,例如,CI自動觸發(fā)不同環(huán)境拉起云上資源,測試完成后刪除環(huán)境資源;使用環(huán)境來一鍵開服;生產(chǎn)環(huán)境研發(fā)及運(yùn)維職責(zé)分離,對研發(fā)隔離生產(chǎn)資源訪問權(quán)限等。