EDAS現支援從源碼構建PHP應用並部署至EDAS的Container ServiceK8s叢集或Serverless K8s叢集,並提供了應用擴縮、監控警示、負載平衡和限流降級等能力。部署PHP應用至Container ServiceK8s叢集或Serverless K8s叢集的操作步驟類似,本文介紹如何從源碼構建PHP應用並部署至Container ServiceK8s叢集。
前提條件
您的阿里雲帳號已同時開通EDAS和Container ServiceKubernetes版。具體操作,請參見開通EDAS和首次使用Container ServiceKubernetes版。
已建立微服務空間。具體操作,請參見建立微服務空間。
已在Container ServiceKubernetes版完成角色授權。具體操作,請參見Container ServiceACK服務角色。
步驟一:建立Container ServiceKubernetes叢集
登入Container ServiceKubernetes版控制台,建立Container ServiceKubernetes叢集。具體操作,請參見快速建立Kubernetes託管版叢集。
如果建立Serverless Kubernetes叢集,專用網路請選擇自動建立(選擇已有網路,建立完畢後請查看叢集資源是否包含VPC和交換器資源),服務發現請選擇PrivateZone,以便Serverless Kubernetes叢集在匯入EDAS後可以使用服務網格。具體操作,請參見建立ASK叢集。
步驟二:在EDAS控制台中匯入Container ServiceK8s叢集
在EDAS控制台匯入Container ServiceK8s叢集時,會預設安裝應用防護(限流降級)組件(ack-ahas-sentinel-pilot)、ARMS監控組件(ack-arms-pilot)以及Prometheus監控組件(ack-arms-prometheus)。
登入EDAS控制台,在左側導覽列,選擇 。
在頂部功能表列選擇地區,然後單擊同步Container ServiceKubernetes叢集。
在匯入的Container ServiceK8s叢集的操作列,單擊匯入。
在匯入預檢對話方塊,單擊繼續匯入。
在匯入Kubernetes叢集對話方塊,從下拉式清單中選擇目標微服務空間,根據需要選擇是否開啟服務網格,然後單擊匯入。
當Container ServiceK8s叢集狀態顯示為運行中,並且匯入狀態顯示為匯入成功時,表示Container ServiceK8s叢集已成功匯入到EDAS。
步驟三:在Container ServiceK8s版叢集中部署PHP應用
登入EDAS控制台。
在左側導覽列,單擊 ,在頂部功能表列選擇地區,並在頁面上方選擇微服務空間,然後在應用列表頁面左上方,單擊建立應用。
在應用基本資料頁面中設定應用的叢集類型和應用運行環境,然後單擊下一步。
配置項
描述
叢集類型
選擇Kubernetes叢集。
應用運行環境
在本篇文檔中,選擇PHP。通過EDAS構建出的鏡像提供PHP 7.3和Apache 2.4的運行環境,該運行環境內已經安裝了常用的PHP外掛程式。
在應用配置頁簽中設定應用的環境資訊、基本資料、源碼及鏡像構建相關資訊,設定完成後單擊下一步。
配置項
描述
微服務空間
選擇您建立的微服務空間,如果您未建立微服務空間或不做選擇,微服務空間則設定為預設。
如果您沒有建立微服務空間,或者需要建立新的微服務空間,您可以直接單擊建立微服務空間,建立一個全新的微服務空間。具體操作,請參見使用控制台管理微服務空間。
叢集
在右側下拉式清單內選擇已匯入的Container ServiceK8s叢集。
如果您選擇的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(可選項):用於設定產生容器時需要建立的資料庫。
如使用其它類型的鏡像,請根據實際需求進行配置。
設定持久化儲存。
在阿里雲Container ServiceKubernetes叢集中,原生的Volume對象所對應的物理儲存為非持久化的,它的生命週期與Kubernetes Pod一致,是一個暫態的儲存對象。使用持久化的儲存服務(Apsara File Storage NAS),可以永久儲存執行個體資料,應用在升級或遷移後不丟失。
說明設定持久化儲存前,請確保您的EDAS帳號已開通Apsara File Storage NAS。使用NAS請保證當前賬戶擁有足夠的餘額或計費方式為後付費。
配置項
描述
PVC掛載
推薦使用通過PVC掛載方式配置持久化儲存。使用該方式可以支援應用使用阿里雲儲存服務雲端硬碟EBS、檔案儲存體(NAS和CPFS)、Object Storage Service和本地碟。在使用PVC掛載之前,需要先參考待使用的儲存服務來建立儲存卷,然後在頁面添加掛載。
建立PVC的方式,請參見NAS儲存卷概述、OSS儲存卷概述和本機存放區卷概述。
說明通過修改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。