全部產品
Search
文件中心

Enterprise Distributed Application Service:從源碼構建PHP應用並部署至Container ServiceK8s叢集

更新時間:Aug 31, 2024

EDAS現支援從源碼構建PHP應用並部署至EDAS的Container ServiceK8s叢集或Serverless K8s叢集,並提供了應用擴縮、監控警示、負載平衡和限流降級等能力。部署PHP應用至Container ServiceK8s叢集或Serverless K8s叢集的操作步驟類似,本文介紹如何從源碼構建PHP應用並部署至Container ServiceK8s叢集。

前提條件

步驟一:建立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)。

  1. 登入EDAS控制台,在左側導覽列,選擇資源管理 > Container ServiceK8s叢集

  2. 在頂部功能表列選擇地區,然後單擊同步Container ServiceKubernetes叢集

  3. 在匯入的Container ServiceK8s叢集的操作列,單擊匯入

  4. 匯入預檢對話方塊,單擊繼續匯入

  5. 匯入Kubernetes叢集對話方塊,從下拉式清單中選擇目標微服務空間,根據需要選擇是否開啟服務網格,然後單擊匯入

    當Container ServiceK8s叢集狀態顯示為運行中,並且匯入狀態顯示為匯入成功時,表示Container ServiceK8s叢集已成功匯入到EDAS。

步驟三:在Container ServiceK8s版叢集中部署PHP應用

  1. 登入EDAS控制台

  2. 在左側導覽列,單擊應用管理 > 應用列表,在頂部功能表列選擇地區,並在頁面上方選擇微服務空間,然後在應用列表頁面左上方,單擊建立應用

  3. 應用基本資料頁面中設定應用的叢集類型和應用運行環境,然後單擊下一步

    配置項

    描述

    叢集類型

    選擇Kubernetes叢集

    應用運行環境

    在本篇文檔中,選擇PHP。通過EDAS構建出的鏡像提供PHP 7.3和Apache 2.4的運行環境,該運行環境內已經安裝了常用的PHP外掛程式。

  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兩種協議。

    鑒權方式

    如果代碼倉庫是私人,需要配置鑒權方式:

    • 使用者名稱和密碼:選擇您建立的密鑰。如果沒有可選的密鑰,請參照以下步驟建立密鑰:

      1. 在文字框右側單擊建立認證

      2. 建立認證對話方塊中輸入密鑰名稱、使用者名稱和密碼。

      3. 配置完成後在對話方塊單擊建立

    • SSH密鑰:將EDAS提供的SSH密鑰配置到代碼倉庫中。更多資訊,請參見如何在使用源碼部署應用時配置SSH公開金鑰

    分支或標籤

    輸入程式碼程式庫的分支或標籤。

    進階配置(可選)

    開啟進階配置,完成下述參數的配置:

    • 複製子模組:子模組允許您將一個Git倉庫作為另一個Git倉庫的子目錄。 它能讓您將另一個倉庫複製到自己的專案中,同時還保持提交的獨立。

    • 工作目錄:工作目錄是儲存您目前正在處理檔案的目錄,Git相關的操作都會在這個目錄下完成。

    • 產出物路徑:指定Git的產出檔案的存放目錄。

    Pod總數

    設定該應用要部署的Pod個數。

    單Pod資源配額

    設定單個Pod的CPU和記憶體,如果您需要限額,請填寫具體的數字,使用預設值0則代表不限額。

  5. 可選:配置應用進階設定,設定完成後單擊建立應用

    1. 設定環境變數。

      在建立應用過程中,將所填環境變數注入到即將產生的容器中,這樣可以避免重複添加常用環境變數。

      • 如您使用MySQL鏡像,可以參考以下環境變數:

        • MYSQL_ROOT_PASSWORD(必選項):用於設定MySQL的root密碼。

        • MYSQL_USER和MYSQL_PASSWORD(可選項):用於添加除root之外的帳號並設定密碼。

        • MYSQL_DATABASE(可選項):用於設定產生容器時需要建立的資料庫。

      • 如使用其它類型的鏡像,請根據實際需求進行配置。

    2. 設定持久化儲存。

      在阿里雲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,請參見建立持久化儲存卷聲明

      掛載配置

      分別設定掛載目錄掛載模式

    3. 設定應用生命週期管理。

      配置項

      描述

      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

  6. 完成設定後單擊建立應用,然後在應用建立完成頁簽,單擊確定建立應用

    應用建立可能需要幾分鐘,建立過程中,可以在變更記錄頁面查看應用的建立流程。建立完成後,返回應用總覽頁面查看執行個體Pod的運行狀態若為運行中則說明應用發布成功,單擊Pod的運行狀態可以查看應用執行個體的工作負載容器組(Pod)啟動命令等進階配置資訊。

常見問題

怎麼查看鏡像構建出錯日誌?

在進行應用部署的時候,如果鏡像構建失敗,可以在變更記錄頁面查看日誌。具體操作,請參見查看應用變更

後續步驟

應用建立完畢後,可以通過添加公網SLB實現公網訪問,添加私網SLB實現同VPC內所有節點能夠通過私網負載平衡訪問您的應用。相關操作,請參見添加負載平衡CLB複用負載平衡CLB