コンテナイメージを手動で構築せずに PHP Web アプリケーションをデプロイする必要がある場合、Enterprise Distributed Application Service (EDAS) は Git リポジトリから直接構築し、Container Service for Kubernetes (ACK) クラスターにデプロイできます。デプロイメント後、EDAS はアプリケーションのスケーリング、モニタリングとアラート、負荷分散、速度制限と機能低下を処理します。
ACK クラスターと ACK Serverless クラスターの手順は似ています。このトピックでは、ACK クラスターを例として使用します。
前提条件
開始する前に、以下が完了していることを確認してください。
ご利用のアカウントに割り当てられた ACK デフォルトロール
ステップ 1: ACK クラスターの作成
ACK コンソールにログインし、マネージド Kubernetes クラスターを作成します。詳細については、「マネージド Kubernetes クラスターの作成」をご参照ください。
ACK サーバーレスクラスターの場合: [VPC] を [VPC の作成] に、[サービスディスカバリー] を [PrivateZone] に設定して、クラスターが EDAS へのインポート後に Alibaba Cloud Service Mesh (ASM) を使用できるようにします。 [VPC] を [既存の VPC の選択] に設定した場合は、クラスター作成後に VPC および vSwitch リソースが存在することを確認します。 詳細については、「ACK サーバーレスクラスターの作成」をご参照ください。
ステップ 2: ACK クラスターの EDAS へのインポート
EDAS はインポート中に以下のコンポーネントを自動的にインストールします。
| コンポーネント | 目的 |
|---|---|
| ack-ahas-sentinel-pilot | 速度制限と機能低下 (Application High Availability Service) |
| ack-arms-pilot | Application Real-Time Monitoring Service (ARMS) エージェント |
| ack-arms-prometheus | Prometheus モニタリング |
クラスターをインポートするには:
EDAS コンソールにログインします。左側のナビゲーションウィンドウで、[Resource Management] > [Container Service Kubernetes クラスタ] を選択します。
上部ナビゲーションバーで、ACK クラスターが存在するリージョンを選択し、[Container Service Kubernetes クラスターの同期] をクリックします。
対象クラスターを見つけ、[インポート] を [操作] 列でクリックします。
「[インポート前の事前チェック]」ダイアログボックスで、[続行] をクリックします。
「Kubernetes クラスタのインポート」ダイアログボックスで、[マイクロサービス名前空間] ドロップダウンリストからマイクロサービス名前空間を選択し、必要に応じて [Service Mesh] をオンまたはオフに切り替え、[インポート] をクリックします。
インポートは、[クラスターのステータス] が [実行中] を示し、[インポートのステータス] が [インポート済み] を示すときに完了します。
ステップ 3: PHP アプリケーションのデプロイ
基本情報の構成
EDAS コンソールにログインします。
左側のナビゲーションウィンドウで、[アプリケーション管理] > [アプリケーション] を選択します。リージョンと microservices namespace を選択し、[アプリケーションの作成] をクリックします。
[基本情報] ステップで、以下の設定を構成し、[次へ] をクリックします。
設定 値 クラスタータイプ [Kubernetes クラスター] を選択します。 アプリケーション実行環境 PHP を選択します。EDAS 構築済みイメージは、Apache 2.4 と一般的に使用される PHP 拡張機能がプリインストールされた PHP 7.3 を提供します。
デプロイメントの構成
「設定」ステップで、以下の設定を構成し、「次へ」をクリックします。
環境と名前空間
パラメーター 説明 マイクロサービス名前空間 ACK クラスターの名前空間です。選択しない場合、デフォルトで Default が使用されます。新規作成するには、[マイクロサービス名前空間の作成] をクリックします。詳細については、「マイクロサービス名前空間の管理」の「名前空間の作成」セクションをご参照ください。 クラスター インポート済みの ACK クラスターを選択します。クラスターがまだインポートされていない場合は、アプリケーション作成時にチェックボックスをオンにしてインポートしてください。この操作には一定の時間がかかります。チェックボックスをオンにした後は、Alibaba Cloud Service Mesh が有効になっていることを確認してください。 説明クラスターは、アプリケーションと同じマイクロサービス名前空間に属している必要はありません。
K8s 名前空間 アプリケーション用の Kubernetes 名前空間です。選択肢は、default、kube-system、kube-public です。ほとんどのユースケースでは default を選択してください。カスタム名前空間を作成するには、[Kubernetes 名前空間の作成] をクリックし、名前を入力します(1~63 文字:小文字英数字およびハイフン。先頭および末尾は英数字である必要があります)。 アプリケーション設定
パラメーター 説明 アプリケーション名 1~36 文字:文字、数字、ハイフン。文字で開始する必要があります。 アプリケーションの説明 1~128 文字。 デプロイメントパッケージのソース [ソースコード] に固定。 バージョン カスタムバージョン番号を指定するか、[タイムスタンプをバージョン番号として使用] をクリックします。 ソースコード設定
パラメーター 説明 [コードリポジトリ URL] Git リポジトリ URL (HTTPS または Git プロトコル) です。 [認証方式] 非公開リポジトリの場合に必要です。 [ユーザー名とパスワード] (シークレットを作成または選択) または [SSH キー] (EDAS が提供する公開鍵を使用) を選択してください。 SSH の設定については、「SSH 公開鍵の設定」をご参照ください。 [ブランチまたはタグ] デプロイするブランチまたはタグです。 リソースと高度なソース設定
パラメーター 説明 Total Pods デプロイする Pod の数です。 Single-pod resource quota Pod ごとの CPU およびメモリの制限です。デフォルト値 0は、制限なしを意味します。Advanced Configuration (オプション)以下の設定を切り替えます:Clone Submodule(Git サブモジュールを含める)、Working Directory(Git の作業ディレクトリを設定する)、および Output Path(ビルド出力の保存先を指定する)。 
(オプション) 高度な設定の構成
以下の高度な設定のいずれかを設定し、[アプリケーションの作成] をクリックします。環境変数 環境変数は、コンテナ作成時にコンテナに渡されます。MySQL ベースのイメージの場合:その他のイメージの場合は、必要に応じて環境変数を設定します。永続ストレージ ネイティブの Kubernetes ボリュームは一時的であり、Pod のライフサイクルを共有します。インスタンスの更新および移行にわたってデータを永続化するには、File Storage NAS ボリュームをマウントします。
説明永続ストレージを設定する前に、お客様の Alibaba Cloud アカウントで File Storage NAS を有効化してください。アカウントに十分な残高があるか、従量課金方式を使用していることを確認してください。
説明YAML ファイルで設定された PVC は、[PVC の選択] ドロップダウンリストに表示されませんが、デプロイメント中は引き続きアクティブなままです。表示されるようにするには、EDAS コンソールから PVC のマウントを設定してください。
変数 必須 説明 MYSQL_ROOT_PASSWORDはい MySQL の root パスワード MYSQL_USER/MYSQL_PASSWORDいいえ 追加のユーザーアカウント認証情報 MYSQL_DATABASEいいえ コンテナー起動時に作成するデータベース パラメーター 説明 PVC マウント Elastic Block Storage (EBS)、NAS、Cloud Paralleled File System (CPFS)、Object Storage Service (OSS)、またはローカルディスクによってバックアップされた永続ボリューム要求 (PVC) をマウントします。最初に永続ボリューム (PV) を作成します。詳細については、「NAS ボリュームの概要」、「OSS ボリュームの概要」、および「ローカルストレージボリュームの概要」をご参照ください。 Select PVC ドロップダウンリストから PVC を選択するか、PVC を作成します。 マウント構成 [マウントディレクトリ] および [マウントモード] を設定します。 ライフサイクルフックとヘルスプローブ
パラメーター 説明 PostStart コンテナーが起動した直後に実行されます。ハンドラが失敗した場合、コンテナーは強制終了され、再起動ポリシーに従って再起動されます。詳細については、「Container Lifecycle Hooks」をご参照ください。 PreStop コンテナーが終了する前に実行されます。削除リクエストが送信される前にハンドラが完了する必要があります。その後、Docker デーモンは SIGTERM シグナルを送信してコンテナーを停止します。詳細については、「Container Lifecycle Hooks」をご参照ください。 Liveness アプリケーションが正常であるかどうかをチェックします。不健康なコンテナーは強制終了され、再作成されます。詳細については、「Pod Lifecycle」をご参照ください。 Readiness アプリケーションが起動し、期待どおりに実行されているかどうかをチェックします。アプリケーションが期待どおりに実行されていない場合、コンテナーのステータスが更新されます。詳細については、「Pod Lifecycle」をご参照ください。
デプロイメントの検証
[作成完了] ステップで、[アプリケーションの作成] をクリックします。デプロイメントには数分かかります。進捗状況は [変更リスト] ページで確認できます。
デプロイメントが完了した後、[アプリケーション概要] に移動し、Pod のステータスを確認します。[実行中] の Pod は、アプリケーションが稼働中であることを意味します。Pod のステータスをクリックして、[Deployment]、[Pod]、および [起動コマンド] の設定などの詳細を表示します。
よくある質問
デプロイメントエラーログを表示するにはどうすればよいですか?
デプロイメントが失敗した場合は、[変更リスト] ページでエラーログを確認してください。詳細については、「アプリケーションの変更を表示する」をご参照ください。
次のステップ
クラシックロードバランサー (CLB) インスタンスをバインドしてアプリケーションを公開します。
パブリックアクセス:インターネット向け CLB インスタンスを追加します。詳細については、「CLB インスタンスのバインド」をご参照ください。
内部アクセス:同じ VPC 内のノードがアプリケーションに到達できるように、内部向け CLB インスタンスを追加します。詳細については、「CLB インスタンスの再利用」をご参照ください。