EDAS現支持從源碼構建PHP應用并部署至EDAS的容器服務K8s集群或Serverless K8s集群,并提供了應用擴縮、監控報警、負載均衡和限流降級等能力。部署PHP應用至容器服務K8s集群或Serverless K8s集群的操作步驟類似,本文介紹如何從源碼構建PHP應用并部署至容器服務K8s集群。
前提條件
您的阿里云賬號已同時開通EDAS和容器服務Kubernetes版。具體操作,請參見開通EDAS和首次使用容器服務Kubernetes版。
已創建微服務空間。具體操作,請參見創建微服務空間。
已在容器服務Kubernetes版完成角色授權。具體操作,請參見容器服務ACK服務角色。
步驟一:創建容器服務Kubernetes集群
登錄容器服務Kubernetes版控制臺,創建容器服務Kubernetes集群。具體操作,請參見快速創建Kubernetes托管版集群。
如果創建Serverless Kubernetes集群,專有網絡請選擇自動創建(選擇已有網絡,創建完畢后請查看集群資源是否包含VPC和交換機資源),服務發現請選擇PrivateZone,以便Serverless Kubernetes集群在導入EDAS后可以使用服務網格。具體操作,請參見創建ASK集群。
步驟二:在EDAS控制臺中導入容器服務K8s集群
在EDAS控制臺導入容器服務K8s集群時,會默認安裝應用防護(限流降級)組件(ack-ahas-sentinel-pilot)、ARMS監控組件(ack-arms-pilot)以及Prometheus監控組件(ack-arms-prometheus)。
登錄EDAS控制臺,在左側導航欄,選擇 。
在頂部菜單欄選擇地域,然后單擊同步容器服務Kubernetes集群。
在導入的容器服務K8s集群的操作列,單擊導入。
在導入預檢對話框,單擊繼續導入。
在導入Kubernetes集群對話框,從下拉列表中選擇目標微服務空間,根據需要選擇是否開啟服務網格,然后單擊導入。
當容器服務K8s集群狀態顯示為運行中,并且導入狀態顯示為導入成功時,表示容器服務K8s集群已成功導入到EDAS。
步驟三:在容器服務K8s版集群中部署PHP應用
登錄EDAS控制臺。
在左側導航欄,單擊 ,在頂部菜單欄選擇地域,并在頁面上方選擇微服務空間,然后在應用列表頁面左上角,單擊創建應用。
在應用基本信息頁面中設置應用的集群類型和應用運行環境,然后單擊下一步。
配置項
描述
集群類型
選擇Kubernetes集群。
應用運行環境
在本篇文檔中,選擇PHP。通過EDAS構建出的鏡像提供PHP 7.3和Apache 2.4的運行環境,該運行環境內已經安裝了常用的PHP插件。
在應用配置頁簽中設置應用的環境信息、基本信息、源碼及鏡像構建相關信息,設置完成后單擊下一步。
配置項
描述
微服務空間
選擇您創建的微服務空間,如果您未創建微服務空間或不做選擇,微服務空間則設置為默認。
如果您沒有創建微服務空間,或者需要創建新的微服務空間,您可以直接單擊創建微服務空間,創建一個全新的微服務空間。具體操作,請參見使用控制臺管理微服務空間。
集群
在右側下拉列表內選擇已導入的容器服務K8s集群。
如果您選擇的K8s集群未導入到EDAS,請選中該集群在EDAS初次使用,勾選后,將會在應用創建時將該集群導入EDAS,因此會產生一定耗時。并確認是否開啟服務網格。
說明集群導入的微服務空間可以不是應用所屬微服務空間。
K8s Namespace
K8s Namespace通過將系統內部的對象分配到不同的Namespace中,形成邏輯上分組的不同項目、小組或用戶組,便于不同的分組在共享使用整個集群的資源的同時還能被分別管理。
default:沒有其他命名空間的對象的默認命名空間。
kube-system:系統創建的對象的命名空間。
kube-public:此命名空間是自動創建的,并且可供所有用戶(包括未經過身份驗證的用戶)讀取。
此處以選擇default為例。
如果您需要自定義創建K8s Namespace,請單擊創建K8s Namespace并設置K8s Namespace名稱。名稱設置要求只能包含數字、小寫字母和短劃線(-),且首尾只能是字母或數字,長度為1~63個字符。
應用名稱
輸入應用名稱,必須以字母開頭,允許數字、字母、短劃線(-)組合。最大長度為36個字符。
應用描述
輸入應用描述 ,最大長度為128個字符。
部署包來源
默認選擇源代碼。
版本
可選擇時間戳作為版本,或自定義版本號。
代碼倉庫地址
輸入您的PHP應用的代碼倉庫的公網訪問地址,現支持HTTPS和Git兩種協議。
鑒權方式
如果代碼倉庫是私有,需要配置鑒權方式:
用戶名和密碼:選擇您創建的密鑰。如果沒有可選的密鑰,請參照以下步驟創建密鑰:
在文本框右側單擊創建證書。
在創建證書對話框中輸入密鑰名稱、用戶名和密碼。
配置完成后在對話框單擊創建。
SSH密鑰:將EDAS提供的SSH密鑰配置到代碼倉庫中。更多信息,請參見如何在使用源碼部署應用時配置SSH公鑰。
分支或標簽
輸入代碼庫的分支或標簽。
高級配置(可選)
打開高級配置,完成下述參數的配置:
克隆子模塊:子模塊允許您將一個Git倉庫作為另一個Git倉庫的子目錄。 它能讓您將另一個倉庫克隆到自己的項目中,同時還保持提交的獨立。
工作目錄:工作目錄是保存您目前正在處理檔案的目錄,Git相關的操作都會在這個目錄下完成。
產出物路徑:指定Git的產出文件的存放目錄。
Pod總數
設置該應用要部署的Pod個數。
單Pod資源配額
設置單個Pod的CPU和內存,如果您需要限額,請填寫具體的數字,使用默認值0則代表不限額。
可選:配置應用高級設置,設置完成后單擊創建應用。
設置環境變量。
在創建應用過程中,將所填環境變量注入到即將生成的容器中,這樣可以避免重復添加常用環境變量。
如您使用MySQL鏡像,可以參考以下環境變量:
MYSQL_ROOT_PASSWORD(必選項):用于設置MySQL的root密碼。
MYSQL_USER和MYSQL_PASSWORD(可選項):用于添加除root之外的賬號并設置密碼。
MYSQL_DATABASE(可選項):用于設置生成容器時需要新建的數據庫。
如使用其它類型的鏡像,請根據實際需求進行配置。
設置持久化存儲。
在阿里云容器服務Kubernetes集群中,原生的Volume對象所對應的物理儲存為非持久化的,它的生命周期與Kubernetes Pod一致,是一個暫態的儲存對象。使用持久化的儲存服務(文件存儲NAS),可以永久保存實例數據,應用在升級或遷移后不丟失。
配置項
描述
PVC掛載
推薦使用通過PVC掛載方式配置持久化存儲。使用該方式可以支持應用使用阿里云存儲服務云盤EBS、文件存儲(NAS和CPFS)、對象存儲OSS和本地盤。在使用PVC掛載之前,需要先參考待使用的存儲服務來創建存儲卷,然后在頁面添加掛載。
創建PVC的方式,請參見NAS存儲卷概述、OSS存儲卷概述、CPFS存儲卷概述和本地存儲卷概述。
說明通過修改YAML方式配置的PVC掛載,在部署應用時將不會顯示已存在的PVC掛載,僅部署時會保留這些配置。推薦您在使用EDAS部署應用時配置PVC掛載。
選擇PVC
在下拉列表中選擇PVC。如果沒有可選的PVC,請參見創建持久化存儲卷聲明。
掛載配置
分別設置掛載目錄和掛載模式。
設置應用生命周期管理。
配置項
描述
PostStart配置
一種容器鉤子。該鉤子在容器被創建后立刻觸發。該鉤子不需要向其所對應的hook handler傳入任何參數。如果該鉤子對應的hook handler執行失敗,則該容器會終止運行,并根據該容器的重啟策略決定是否要重啟該容器。更多信息,請參見Container Lifecycle Hooks。
PreStop配置
一種容器鉤子。該鉤子在容器被刪除前觸發,其所對應的hook handler必須在刪除該容器的請求發送給Docker daemon之前完成。在該鉤子對應的hook handler完成后不論執行的結果如何,Docker daemon會發送一個SIGTERM信號量給Docker daemon來刪除該容器。更多信息,請參見Container Lifecycle Hooks
Liveness配置
一種探測容器狀態的探針,探測應用是否處于健康狀態。如果不健康,則刪除重建容器。更多信息,請參見Pod Lifecycle。
Readiness配置
一種探測容器狀態的探針,探測應用是否啟動完成并且處于正常服務狀態。如果不正常,則更新容器的狀態。更多信息,請參見Pod Lifecycle。
完成設置后單擊創建應用,然后在應用創建完成頁簽,單擊確定創建應用。
應用創建可能需要幾分鐘,創建過程中,可以在變更記錄頁面查看應用的創建流程。創建完成后,返回應用總覽頁面查看實例Pod的運行狀態若為運行中則說明應用發布成功,單擊Pod的運行狀態可以查看應用實例的工作負載、容器組(Pod)和啟動命令等高級配置信息。
常見問題
怎么查看鏡像構建出錯日志?
在進行應用部署的時候,如果鏡像構建失敗,可以在變更記錄頁面查看日志。具體操作,請參見查看應用變更。
后續步驟
應用創建完畢后,可以通過添加公網SLB實現公網訪問,添加私網SLB實現同VPC內所有節點能夠通過私網負載均衡訪問您的應用。相關操作,請參見添加負載均衡CLB或復用負載均衡CLB。
聯系我們
如果您在部署EDAS多語言微服務應用過程中有任何疑問或建議,請使用釘釘搜索釘釘群號23307994加入釘釘群進行反饋。