Enterprise Distributed Application Service(EDAS)を使用すると、Hypertext Preprocessor(PHP)アプリケーションをソースコードから作成し、Container Service for Kubernetes(ACK)クラスタまたは ACK Serverless クラスタにデプロイできます。EDAS はまた、アプリケーションのスケーリング、監視とアラート、負荷分散、スロットリングとデグレードなど、アプリケーション管理のためのさまざまな機能を提供します。ACK クラスタへの PHP アプリケーションのデプロイ手順は、ACK Serverless クラスタへの PHP アプリケーションのデプロイ手順と同様です。このトピックでは、PHP アプリケーションをソースコードからビルドし、ACK クラスタにデプロイする方法について説明します。
前提条件
Alibaba Cloud アカウントで EDAS と ACK がアクティブ化されていること。詳細については、以下のトピックを参照してください。
アカウントに ACK のデフォルトロールが付与されていること。詳細については、「ACK ロール」を参照してください。
手順 1: ACK クラスタを作成する
ACK コンソール にログインし、ACK クラスタを作成します。詳細については、「ACKを使用してマジックキューブゲームアプリケーションをすばやくデプロイする」を参照してください。
ACK Serverless クラスタを作成する場合は、[VPC] パラメータを [VPC を作成] に設定し、[サービスディスカバリ] パラメータを [privatezone] に設定します。これにより、ACK Serverless クラスタを EDAS にインポートした後、Alibaba Cloud Service Mesh(ASM)を使用できるようになります。VPC パラメータを [既存の VPC を選択] に設定した場合は、クラスタの作成後に、クラスタに仮想プライベートクラウド(VPC)と vSwitch リソースが含まれているかどうかを確認します。詳細については、「ACK Serverless クラスタを作成する」を参照してください。
手順 2: ACK クラスタを EDAS コンソールにインポートする
デフォルトでは、EDAS コンソールで ACK クラスタを EDAS にインポートすると、ack-ahas-sentinel-pilot、ack-arms-pilot、および ack-arms-prometheus コンポーネントがインストールされます。 ack-ahas-sentinel-pilot コンポーネントは、スロットリングとデグレードのためのアプリケーション保護コンポーネントです。 ack-arms-pilot コンポーネントは、Application Real-Time Monitoring Service(ARMS)コンポーネントです。 ack-arms-prometheus コンポーネントは、Prometheus 監視コンポーネントです。
EDAS コンソール にログインします。左側のナビゲーションペインで、 を選択します。
上部のナビゲーションバーで、ACK クラスタが存在するリージョンを選択し、[container Service Kubernetes クラスタを同期] をクリックします。
EDAS に同期された ACK クラスタを見つけ、インポート[アクション] 列の をクリックします。
[インポートの事前チェック] ダイアログボックスで、[続行] をクリックします。
[kubernetes クラスタのインポート] ダイアログボックスで、[マイクロサービス ネームスペース] ドロップダウンリストから ACK クラスタをインポートするマイクロサービス ネームスペースを選択し、ビジネス要件に基づいて [service Mesh] をオンまたはオフにして、[インポート] をクリックします。
ACK クラスタの [クラスタステータス] 列の値が [実行中] で、[インポートステータス] 列の値が [インポート済み] の場合、クラスタは EDAS にインポートされます。
手順 3: PHP アプリケーションを ACK クラスタにデプロイする
EDAS コンソール にログインします。
左側のナビゲーションペインで、 を選択します。上部のナビゲーションバーで、リージョンを選択します。[アプリケーション] ページの上部で、[マイクロサービス ネームスペース] ドロップダウンリストからマイクロサービス ネームスペースを選択します。次に、アプリケーションの作成[アプリケーション] ページの左上隅にある をクリックします。
[基本情報] ステップで、[クラスタタイプ] セクションと [アプリケーションランタイム環境] セクションのパラメータを設定し、[次へ] をクリックします。
セクション
説明
[クラスタタイプ]
アプリケーションをデプロイするクラスタのタイプ。この例では、[kubernetes クラスタ] を選択します。
[アプリケーションランタイム環境]
アプリケーションのランタイム環境。この例では、[PHP] を選択します。EDAS によってビルドされたイメージは、PHP 7.3 および Apache 2.4 のランタイム環境を提供します。特定の頻繁に使用される PHP プラグインは、ランタイム環境にインストールされます。
[構成] ステップで、アプリケーションの環境情報、基本情報、ソースコード、およびイメージ設定を構成し、[次へ] をクリックします。

パラメータ
説明
[マイクロサービス ネームスペース]
ACK クラスタのマイクロサービス ネームスペース。マイクロサービス ネームスペースを作成していないか、マイクロサービス ネームスペースを選択していない場合、このパラメータは [デフォルト] に設定されます。
マイクロサービス ネームスペース を作成していない場合、または別のマイクロサービス ネームスペース を作成する場合は、[マイクロサービス ネームスペースの作成] をクリックして マイクロサービス ネームスペース を作成します。詳細については、「マイクロサービス ネームスペースの管理」トピックの「ネームスペースの作成」セクションを参照してください。
[クラスタ]
アプリケーションをデプロイするクラスタ。[クラスタ] ドロップダウンリストからインポートされた ACK クラスタを選択します。
選択した Kubernetes クラスタが EDAS にインポートされていない場合は、[このクラスタは EDAS で初めて使用されます。このチェックボックスをオンにすると、アプリケーションの作成時にクラスタが EDAS にインポートされます。これには一定の時間がかかります。] を選択します。次に、Alibaba Cloud Service Mesh がアクティブ化されているかどうかを確認します。
説明アプリケーションをデプロイするマイクロサービス ネームスペースにないクラスタを選択できます。
[k8s ネームスペース]
クラスタの Kubernetes ネームスペース。内部システムオブジェクトは、異なる Kubernetes ネームスペースに割り当てられ、論理的に分離されたプロジェクト、グループ、またはユーザーグループを形成します。これにより、これらのプロジェクト、グループ、またはユーザーグループを個別に管理しながら、クラスタ全体のリソースを共有できます。有効な値:
[default]: デフォルトの Kubernetes ネームスペース。オブジェクトに Kubernetes ネームスペースが指定されていない場合、デフォルトの Kubernetes ネームスペースが使用されます。
[kube-system]: システムによって作成されたオブジェクトの Kubernetes ネームスペース。
[kube-public]: 認証されていないユーザーを含むすべてのユーザーが読み取ることができる、自動的に作成される Kubernetes ネームスペース。
この例では、[default] を選択します。
カスタム Kubernetes ネームスペースを作成する場合は、[kubernetes ネームスペースの作成] をクリックします。表示されるダイアログボックスで、[k8s ネームスペース] フィールドに Kubernetes ネームスペースの名前を入力します。名前には数字、小文字、ハイフン(-)を含めることができ、長さは 1 ~ 63 文字です。文字または数字で開始および終了する必要があります。
[アプリケーション名]
アプリケーションの名前。名前は文字で始まり、数字、文字、ハイフン(-)を含めることができます。アプリケーション名は 1 ~ 36 文字の長さである必要があります。
[アプリケーションの説明]
アプリケーションの説明。説明は 1 ~ 128 文字の長さである必要があります。
[デプロイパッケージのソース]
デプロイパッケージを指定する方法。このパラメータは [ソースコード] に固定されています。
[バージョン]
アプリケーションのバージョン。カスタムバージョン番号を指定するか、[タイムスタンプをバージョン番号として使用] をクリックしてバージョン番号を生成できます。
[コードリポジトリ URL]
PHP アプリケーションのデプロイに使用するコードリポジトリの URL。HTTPS または Git プロトコルをサポートする URL を指定します。
[認証方法]
認証に使用される情報のタイプ。コードリポジトリがプライベートリポジトリの場合、このパラメータを設定する必要があります。有効な値:
[ユーザー名とパスワード]: 作成したシークレットを選択します。シークレットがない場合は、次の手順を実行してシークレットを作成します。
[ユーザー名とパスワード] フィールドの右側にある [シークレットの作成] をクリックします。
[シークレットの作成] ダイアログボックスで、[シークレット名]、[ユーザー名]、および [パスワード] パラメータを設定します。
ダイアログボックスで、[作成] をクリックします。
[SSH キー]: コードリポジトリで EDAS によって提供される SSH キーを指定します。詳細については、「ソースコードを使用してアプリケーションをデプロイするときに SSH 公開キーを構成する」を参照してください。
[ブランチまたはタグ]
コードリポジトリのブランチまたはタグ。
[詳細設定]
オプション。アプリケーションの詳細設定。[詳細設定] をオンにして、次のパラメータを設定できます。
[サブモジュールのクローン]: Git リポジトリを別の Git リポジトリのサブディレクトリとして使用します。この機能により、リポジトリをプロジェクトにクローンし、アプリケーションコードを個別に送信できます。
[作業ディレクトリ]: 処理中のファイルを格納するディレクトリを指定します。Git に関連するすべての操作はこのディレクトリで実行されます。
[出力パス]: Git 出力ファイルを格納するディレクトリを指定します。
[pod の合計数]
アプリケーションをデプロイする Pod の数。
[単一 Pod リソースクォータ]
Pod に予約する CPU とメモリリソースの量。制限を設定するには、数値を入力します。デフォルト値 0 は、CPU とメモリクォータに制限が設定されていないことを示します。
オプション: アプリケーションの詳細設定を構成します。次に、[アプリケーションの作成] をクリックします。
環境変数を構成します。
アプリケーションを作成するときに、構成した環境変数を生成されるコンテナに渡します。これにより、頻繁に使用される環境変数を繰り返し追加する必要がなくなります。
MySQL イメージを使用している場合は、次の環境変数を構成できます。
MYSQL_ROOT_PASSWORD: 必須。MySQL root パスワードを設定できます。
MYSQL_USER と MYSQL_PASSWORD: オプション。root アカウントに加えてアカウントを作成し、パスワードを設定できます。
MYSQL_DATABASE: オプション。コンテナの生成時に作成するデータベースを指定できます。
別のタイプのイメージを使用している場合は、必要に応じて環境変数を構成します。
永続ストレージを構成します。
ACK クラスタでは、ネイティブボリュームオブジェクトの物理ストレージは永続的ではありません。これは、ボリュームオブジェクトが一時ストレージオブジェクトであり、Kubernetes Pod と同じライフサイクルを持つことを意味します。ファイルストレージ NAS(NAS) を使用して、インスタンスデータを永続的に保存できます。これにより、インスタンスが更新または移行された場合でも、インスタンスデータは保持されます。
説明永続ストレージを構成する前に、EDAS にアクセスするために使用する Alibaba Cloud アカウントで NAS がアクティブ化されていることを確認してください。NAS を使用するには、Alibaba Cloud アカウントに十分な残高があるか、請求方法が従量課金制であることを確認してください。
パラメータ
説明
[PVC マウント]
永続ストレージは、[PVC マウント] を指定して構成することをお勧めします。この方法では、アプリケーションの作成時に、Alibaba Cloud Elastic Block Storage(EBS)、ファイルストレージシステム、Object Storage Service(OSS)、およびローカルディスクをストレージに使用できます。ファイルストレージシステムには、ファイルストレージ NAS(NAS)と Cloud Paralleled File System(CPFS)が含まれます。[PVC マウント] を指定する前に、使用するストレージサービスのトピックの対応する手順を参照して、永続ボリューム(PV)を作成する必要があります。その後、このページで PVC をマウントできます。
PV の作成方法の詳細については、「NAS ボリューム」、「OSS ボリューム」、または「ローカルボリューム」を参照してください。
説明YAML ファイルを使用して PVC マウントを構成した場合、PVC は [PVC の選択] ドロップダウンリストに表示されません。ただし、PVC マウント構成は、アプリケーションのデプロイ中に保持されます。EDAS でアプリケーションをデプロイするときは、PVC マウントを構成することをお勧めします。
[PVC の選択]
ドロップダウンリストから PVC を選択します。PVC がない場合は、PVC を作成します。PVC の作成方法の詳細については、「PVC を作成する」を参照してください。
[マウント構成]
[マウントディレクトリ] パラメータと [マウントモード] パラメータを設定します。
アプリケーションライフサイクル管理を構成します。
パラメータ
説明
[poststart]
コンテナフック。フックは、コンテナの作成直後にトリガーされます。フックは、対応するフックハンドラにパラメータを渡しません。対応するフックハンドラが実行に失敗した場合、コンテナは停止し、コンテナの再起動ポリシーを使用して、コンテナを再起動するかどうかが決定されます。詳細については、「Container Lifecycle Hooks」を参照してください。
[prestop]
コンテナフック。フックは、コンテナが削除される前にトリガーされます。対応するフックハンドラは、コンテナを削除するリクエストが Docker デーモンに送信される前に完全に実行する必要があります。Docker デーモンは、対応するフックハンドラの実行結果に関係なく、コンテナを削除するために SIGTERM シグナルを自身に送信します。詳細については、「Container Lifecycle Hooks」を参照してください。
[liveness]
コンテナステータスを監視するプローブ。プローブは、アプリケーションが正常かどうかを確認します。アプリケーションが異常な場合、対応するコンテナは削除され、再作成されます。詳細については、「Pod Lifecycle」を参照してください。
[readiness]
コンテナステータスを監視するプローブ。プローブは、アプリケーションが起動され、期待どおりに実行されているかどうかを確認します。アプリケーションが期待どおりに実行されていない場合、コンテナステータスが更新されます。詳細については、「Pod Lifecycle」を参照してください。
設定が構成されたら、[アプリケーションの作成] をクリックします。[作成完了] ステップで、[アプリケーションの作成] をクリックします。
アプリケーションのデプロイには数分かかります。このプロセス中に、[変更リスト] ページでアプリケーションのデプロイの進行状況を確認できます。アプリケーションがデプロイされると、[アプリケーションの概要] ページが表示されます。このページで、Pod のステータスを確認できます。Pod が [実行中] 状態の場合、アプリケーションはリリースされています。Pod の状態をクリックすると、[デプロイ]、[pod]、[起動コマンド] など、アプリケーションインスタンスの詳細設定を表示できます。
FAQ
イメージベースのアプリケーションデプロイを追跡するエラーログを表示するにはどうすればよいですか?
イメージを使用してアプリケーションをデプロイできない場合は、[変更リスト] ページでエラーログを表示できます。詳細については、「アプリケーションの変更を表示する」を参照してください。
次の手順
アプリケーションをデプロイした後、インターネット経由でアプリケーションにアクセスできるように、インターネット向け Server Load Balancer(SLB)インスタンスを追加します。また、同じ VPC 内のすべてのノードがこの内部向け SLB インスタンスを使用してアプリケーションにアクセスできるように、内部向け SLB インスタンスを追加することもできます。詳細については、「CLB インスタンスをバインドする」または「CLB インスタンスを再利用する」を参照してください。