Kubernetes 上で Java アプリケーションを実行する必要があるが、クラスターインフラストラクチャを直接管理したくない場合、Enterprise Distributed Application Service (EDAS) は Container Service for Kubernetes (ACK) 上でライフサイクル全体の管理を提供します。コンテナイメージを構築したり、Kubernetes マニフェストを手動で記述したりする代わりに、JAR または WAR パッケージをアップロードするだけで、EDAS がコンテナ化とデプロイメントを処理します。
このトピックでは、ACK クラスターを作成し、それを EDAS にインポートし、デモ用の JAR または WAR パッケージを使用して Java アプリケーションをデプロイする方法について説明します。
ワークフロー
| ステップ | タスク | 説明 |
|---|---|---|
| 1 | 前提条件 | EDAS と ACK をアクティブ化し、マイクロサービス名前空間を作成し、必要なロールを付与する |
| 2 | ACK クラスターの作成 | ACK コンソールでマネージド Kubernetes クラスターを作成する |
| 3 | クラスターの EDAS へのインポート | クラスターを同期してインポートし、EDAS がデプロイメントを管理できるようにする |
| 4 | アプリケーションのデプロイ | JAR または WAR パッケージを使用して Java アプリケーションを構成およびデプロイする |
| 5 | デプロイメントの検証 | Pod が実行中であることを確認する |
| 6 | 次のステップ | ロードバランサーを介してアプリケーションを公開する |

前提条件
開始する前に、以下を確認してください。
ACK デフォルトロールがアカウントに付与されていること
ステップ 1: ACK クラスターの作成
「ACK コンソール」にログインし、マネージド Kubernetes クラスターを作成します。手順については、「マネージド Kubernetes クラスターの作成」をご参照ください。
EDAS へのインポート後に Alibaba Cloud Service Mesh (ASM) をサポートする ACK サーバーレスクラスターを作成するには、[VPC] を [VPC の作成] に、[サービスディスカバリー] を [PrivateZone] に設定します。VPC を [既存の VPC の選択] に設定した場合、クラスターが作成後に VPC および vSwitch リソースを有していることを確認してください。詳細については、「ACK サーバーレスクラスターの作成」をご参照ください。
ステップ 2: ACK クラスターの EDAS へのインポート
ACK クラスターをインポートすると、EDAS は以下のコンポーネントを自動的にインストールします。
| コンポーネント | 目的 |
|---|---|
| ack-ahas-sentinel-pilot | アプリケーション保護 (速度制限と劣化) |
| ack-arms-pilot | Application Real-Time Monitoring Service (ARMS) エージェント |
| ack-arms-prometheus | Prometheus モニタリングエージェント |
クラスターをインポートするには、次の手順を実行します。
EDAS コンソールにログインします。左側のナビゲーションウィンドウで、[リソース管理] > [コンテナサービス Kubernetes クラスター] を選択します。
トップナビゲーションバーで、ACK クラスターが存在するリージョンを選択し、次に [Container Service Kubernetes クラスターの同期] をクリックします。
同期済みクラスターを見つけ、[インポート] を [操作] 列でクリックします。
[インポートの事前チェック] ダイアログボックスで、[続行] をクリックします。
[Kubernetes クラスターのインポート] ダイアログボックスで、[マイクロサービス名前空間] ドロップダウンリストからマイクロサービス名前空間を選択し、要件に応じて [Service Mesh] をオンまたはオフにして、[インポート] をクリックします。
クラスターの [実行中] が [クラスターステータス] 列に表示され、[インポート済み] が [インポートステータス] 列に表示されたときに、インポートは完了します。
ステップ 3: アプリケーションのデプロイ
デプロイメント手順は、JAR パッケージと WAR パッケージで同じです。以下の手順では、JAR パッケージを例として使用します。
3a. アプリケーションの作成
EDAS コンソールにログインします。左側のナビゲーションウィンドウで、[アプリケーション管理] > [アプリケーション] を選択します。
トップナビゲーションバーでリージョンを選択し、ページ上部でマイクロサービス名前空間を選択します。[アプリケーション] ページの左上隅で、[アプリケーションの作成] をクリックします。
3b. 基本情報の構成
[基本情報]ステップで、次のパラメーターを設定し、[次へ]をクリックします。
| パラメーター | 説明 |
|---|---|
| クラスタータイプ | [Kubernetes クラスター] を選択します。 |
| アプリケーションソースタイプ | [デフォルト] を選択します。 |
| ホスト型アプリケーション | [Java]プログラミング言語を選択します。この例では [Java] を選択します。PHP または多言語アプリケーションについては、「ソースコードから PHP アプリケーションを構築し、ACK クラスターにデプロイする」をご参照ください。 |
| アプリケーションの選択 | アプリケーションタイプに基づいて実行環境を選択します。以下のオプションを参照してください。 |
実行環境オプション:
| オプション | ユースケース | 設定可能なパラメーター |
|---|---|---|
| Java | 汎用 JAR パッケージを使用して Dubbo または Spring Boot アプリケーションをデプロイします。 | Java Environment |
| Tomcat | 汎用 WAR パッケージを使用して Dubbo または Spring アプリケーションをデプロイします。 | Java Environment、Container Version |
| EDAS-Container (HSF) | WAR または FatJar パッケージを使用して High-Speed Service Framework (HSF) アプリケーションをデプロイします。 | Java Environment、Pandora Version、Ali-Tomcat Version |
イメージベースのデプロイメントについては、「イメージを使用して Kubernetes クラスターに Java マイクロサービスアプリケーションをデプロイする」をご参照ください。
OpenJDK 17 は、Dubbo 2.7.14 以降、または Dubbo 3.0.6 以降と互換性があります。以下の互換性マトリックスをご参照ください。
OpenJDK 17 互換性マトリックス
| Dubbo バージョン | Spring Boot バージョン | Nacos クライアントバージョン | API 呼び出し | ARMS モニタリング | サービスリスト |
|---|---|---|---|---|---|
| 2.7.14 | 2.7.9 | 1.4.4 | サポートされています | サポートされています | サポートされています |
| 2.7.14 | 2.7.9 | 2.1.2 | サポートされています | サポートされています | サポートされています |
| 2.7.14 | 2.7.9 | 2.2.0 | サポートされています | サポートされています | サポートされています |
| 2.7.22 | 2.7.9 | 1.4.4 | サポートされています | サポートされています | サポートされています |
| 2.7.22 | 2.7.9 | 2.1.2 | サポートされています | サポートされています | サポートされています |
| 2.7.22 | 2.7.9 | 2.2.0 | サポートされています | サポートされています | サポートされています |
| 3.0.6 | 2.7.9 | 1.4.4 | サポートされています | サポートされています | サポートされています |
| 3.0.6 | 2.7.9 | 2.1.2 | サポートされています | サポートされています | サポートされています |
| 3.0.6 | 2.7.9 | 2.2.0 | サポートされています | サポートされています | サポートされています |
| 3.1.7 | 2.7.9 | 1.4.4 | サポートされています | サポートされています | サポートされています |
| 3.1.7 | 2.7.9 | 2.1.2 | サポートされています | サポートされています | サポートされています |
| 3.1.7 | 2.7.9 | 2.2.0 | サポートされています | サポートされています | サポートされています |
3c. デプロイメントの構成
[設定] ステップで、環境、デプロイメントメソッド、およびリソースパラメーターを設定し、[次へ] をクリックします。
環境とクラスターの設定
| パラメーター | 説明 |
|---|---|
| マイクロサービス名前空間 | 作成済みの名前空間を選択します。未指定の場合は、デフォルトで Default が選択されます。新規作成する場合は、マイクロサービス名前空間の作成マイクロサービス名前空間の管理 をクリックします。詳細については、「」の「名前空間の作成」セクションをご参照ください。 |
| クラスター | インポート済みの ACK クラスターを選択します。クラスターがまだインポートされていない場合は、アプリケーション作成時に このクラスターは EDAS で初めて使用されます を選択してインポートを行います。その後、Alibaba Cloud Service Mesh が有効化されているか確認してください。初回インポートには追加の時間がかかります。 |
| Kubernetes 名前空間 | リソースの隔離に使用する Kubernetes 名前空間を選択します。選択肢は以下のとおりです:default(未指定時に使用)、kube-system(システムによって作成されたオブジェクト用)、kube-public(認証されていないユーザーを含むすべてのユーザーが読み取り可能な名前空間)。カスタム名前空間を作成する場合は、Kubernetes 名前空間の作成 をクリックします。名前は 1~63 文字で、小文字の英字、数字、ハイフン(-)のみ使用可能であり、先頭および末尾は英字または数字で始まり・終わる必要があります。 |
クラスターとアプリケーションは、同じマイクロサービス名前空間に属している必要はありません。
アプリケーション設定
| パラメーター | 説明 |
|---|---|
| アプリケーション名 | 文字で開始する必要があります。文字、数字、ハイフン (-) を含めることができ、最大 36 文字です。 |
| アプリケーションの説明 | オプション。最大 128 文字です。 |
デプロイメントパッケージ
| パラメーター | 説明 |
|---|---|
| [デプロイメントパッケージの配布元] | 以下のオプションのいずれかを選択します。 |
[カスタムプログラム]: JAR パッケージをアップロードするか、パッケージの URL を指定します。
JAR パッケージのアップロード:ローカルパッケージを選択してアップロードします。
JAR パッケージアドレス: デプロイメントパッケージの URL を入力します。
公式デモ: デモアプリケーションのタイプとして、[Spring Cloud サーバーアプリケーション]、[Spring Cloud クライアントアプリケーション]、[Dubbo サーバーアプリケーション]、または [Dubbo クライアントアプリケーション] を選択します。
コンテナレジストリ (ACK クラスターのみ)
[Container Registry リポジトリタイプ] パラメーターは、ACK クラスター内の Java、Tomcat、または EDAS-Container (HSF) アプリケーションでのみ利用可能です。ACK サーバーレス Kubernetes クラスターでは利用できません。
コンテナレジストリを使用する前に、以下を確認してください。
aliyun-acr-credential-helper コンポーネントがインストールされています
Container Registry Enterprise Edition の場合、VPC アクセスが設定されている
ビルドされたイメージを保存するには、[Container Registry Personal Edition] または [Container Registry Enterprise Edition] を選択します。イメージビルドタスクは、お客様のクラスターで実行され、以下のスケジューリングルールに従います:
| ノードラベルまたは Taint | 動作 |
|---|---|
edas.image.build=disable (ラベル) | EDAS はこれらのノードにビルドタスクをスケジュールしません |
edas.image.build=enable (ラベル) | EDAS はこれらのノードにビルドタスクを優先的にスケジュールしますが、ラベルなしのノードも使用する場合があります |
key=edas.image.build, effect=NoSchedule (Taint) | ビルドタスクはこの Taint を許容できます |
特定のノードでビルドタスクが実行されないようにするには、edas.image.build=disable ラベルを追加します。専用のビルドノードを作成するには、edas.image.build=enable ラベルと key=edas.image.build, effect=NoSchedule Taint の両方を追加します。
単一のイメージビルドタスクのデフォルトのリソース制限は 1 GB/コアです。この制限を調整する方法については、「イメージビルドのリソース制限を調整するにはどうすればよいですか?
Container Registry Enterprise Edition パラメーター:
| Parameter | Description |
|---|---|
| Container Registry のリージョン | ご利用の Container Registry イメージのリージョンを選択します。 |
| [Container Registry] | ご利用のコンテナイメージを選択します。 |
| [イメージリポジトリの名前空間] | 名前空間を選択するか、+ [名前空間の作成] をクリックして作成します。 |
リソースとランタイムの設定
| パラメーター | 説明 |
|---|---|
| Version | カスタムのバージョン番号を指定するか、Use Timestamp as Version Number をクリックして自動生成します。 |
| Time Zone | アプリケーションのタイムゾーンを選択します。 |
| OpenJDK Base Image | [基本情報] ステップで Java Environment が Custom OpenJDK に設定されている場合にのみ利用可能です。イメージソースを設定します。 Alibaba Cloud Container Registry を Current Account に設定した場合は、Region、Container Registry、Image Repository Namespace、および Image Repository Name パラメーターを設定し、イメージバージョンを選択します。 Other Alibaba Cloud Accounts に設定した場合は、Full Image Address を指定します。JDK 7 および JDK 8 のみがサポートされています。他の JDK バージョンを使用すると、アプリケーション監視機能で例外が発生する可能性があります。EDAS サーバーはベースイメージをプルしてアプリケーションイメージをビルドします。ベースイメージがパブリックなプル権限を持っていることを確認してください。 |
| Total Pods | デプロイする Pod の数です。最大値はクラスターの容量によって異なります。 |
| Single-pod Resource Quota | Pod あたりの CPU、メモリ、および一時ストレージの上限です。値が 0 の場合は制限なしを意味します。最大値はクラスターの容量によって異なります。 |
3d. 詳細設定の構成 (オプション)
[詳細設定] ステップで、必要に応じて以下のいずれかを設定します:
3e. デプロイメントの開始
[アプリケーションの作成] をクリックします。[作成完了] ステップで、再度 [アプリケーションの作成] をクリックします。
[アプリケーション変更の事前チェックの確認]ダイアログボックスで、[事前チェックの開始]をクリックします。
事前チェックの結果を確認し、[続行] をクリックします。事前チェック項目を変更した場合は、次に進む前に [再チェック] をクリックします。
デプロイメントの検証
デプロイメントには数分かかります。進捗をモニターし、成功を確認するには、次の手順を実行します。
リアルタイムでデプロイメントステータスをトラックするには、[変更リスト] ページに移動します。
デプロイメントが完了したら、[アプリケーション管理] > [アプリケーション] に移動して、アプリケーションを開きます。[アプリケーションの概要] ページで、Pod のステータスを確認します。
すべての Pod が [実行中] 状態を示している場合、デプロイメントは成功しました。Pod のステータスをクリックして、[デプロイメント]、[Pod]、および各アプリケーションインスタンスの詳細設定の詳細を表示します。
次のステップ
アプリケーションをデプロイした後、クラシックロードバランサー (CLB) インスタンスをバインドして公開します。
インターネットアクセス: 外部ユーザーがパブリックネットワーク経由でアプリケーションにアクセスできるように、インターネット向け CLB インスタンスを追加します。
内部アクセス: 同じ Virtual Private Cloud (VPC) 内の他のサービスがアプリケーションにアクセスできるように、内部向け CLB インスタンスを追加します。
詳細については、「CLB インスタンスのバインド」または「CLB インスタンスの再利用」をご参照ください。