使用 Amazon ECR 和 AWS Fargate 在 Amazon ECS 上部署 Java 微服務 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon ECR 和 AWS Fargate 在 Amazon ECS 上部署 Java 微服務

由維傑湯普森(AWS)和桑迪普邦杜古拉(AWS)創建

環境:PoC 或試點

來源:容器

目標:Amazon ECS

R 類型:不適用

技術:容器與微服務;網站與 Web 應用程式

AWS 服務:Amazon ECS

Summary

此模式會引導您完成在 Amazon 彈性容器服務 (Amazon ECS) 中將 Java 微服務部署為容器化應用程式的步驟。該模式還使用 Amazon Elastic Container Registry (Amazon ECR) 來管理您的容器,並使用 AWS Fargate 運行您的容器。

先決條件和限制

先決條件

  • 在 Docker 上內部部署執行的現有 Java 微服務應用程式

  • 有效的 AWS 帳戶

  • 熟悉 Amazon ECR、Amazon ECS、AWS Fargate 和 AWS Command Line Interface (AWS CLI) (AWS CLI)

  • 熟悉 Java 和碼頭軟件

產品版本

  • AWS CLI 版本 1.7 或更新版本

架構

源, 技術, 堆棧

  • Java 微服務(例如,使用春季啟動開發)並部署在內部

  • Docker

來源架構

在 Amazon ECS 上部署 Java 微服務的來源架構

目標技術堆疊

  • Amazon ECR

  • Amazon ECS

  • AWS Fargate

目標架構

在 Amazon ECS 上部署 Java 微服務的目標架構

工具

工具

  • Amazon Elastic Container Registry (Amazon ECR) 是全受管的登錄,可讓開發人員輕鬆存放、管理和部署 Docker 容器映像。Amazon ECR 與 Amazon ECS 整合,以簡化您的 development-to-production 工作流程。Amazon ECR 將映像託管在高可用性和可擴展的架構中,因此您可以可靠地為應用程式部署容器。與 AWS Identity and Access Management (IAM) 整合可提供每個儲存庫的資源層級控制。

  • Amazon Elastic Container Service (Amazon ECS) 是可高度擴展的高效能容器協調服務,可支援 Docker 容器,並可讓您在 AWS 上輕鬆執行和擴展容器化應用程式。Amazon ECS 無需安裝和操作自己的容器協調軟體、管理和擴展虛擬機器叢集,或在這些虛擬機器上排程容器。

  • AWS Fargate 是 Amazon ECS 的運算引擎,可讓您執行容器,而不必管理伺服器或叢集。使用 AWS Fargate,您不再需要佈建、設定和擴展虛擬機器叢集來執行容器。這樣一來即無須選擇伺服器類型、決定何時擴展叢集,或最佳化叢集壓縮。

  • Docker 是一個平台,可讓您在稱為容器的套件中建置、測試和交付應用程式。

Code

以下內容 DockerFile 指定所使用的 Java 開發套件 (JDK) 版本、Java 封存 (JAR) 檔案所在的位置、公開的連接埠號碼以及應用程式的進入點。

FROM openjdk:8 ADD target/Spring-docker.jar Spring-docker.jar EXPOSE 8080 ENTRYPOINT ["java","-jar","Spring-docker.jar"]

史诗

任務描述所需技能

建立 儲存庫。

登入 AWS 管理主控台,然後開啟 Amazon ECR 主控台,網址為 https://console.aws.amazon.com/ecr/repositories。創建一個私人存儲庫。如需指示,請參閱 Amazon ECR 文件中的建立私有存放庫

開發人員, 系統管理

上傳專案。

開啟儲存庫,然後選擇「檢視推送指令」。請依照顯示的步驟上傳專案。(這些步驟只有在您使用 AWS CLI 1.7 版或更新版本時才有作用。) 上傳完成後,將組建的 URL 複製到存放庫中。當您在 Amazon ECS 中建立容器時,您將使用此網址。

開發人員, 系統管理
任務描述所需技能

建立任務定義。

在 Amazon ECS 中執行泊塢視窗容器需要任務定義。在 https://console.aws.amazon.com/ecs/ 開啟 Amazon ECS 主控台,選擇任務定義,然後建立新的任務定義。如需詳細資訊,請參閱 Amazon ECS 文件中的建立任務定義

開發人員, 系統管理

選擇啟動類型。

選擇 Fargate 作為啟動類型。

開發人員, 系統管理

設定工作。

定義作業名稱,並使用適當數量的工作記憶體和 CPU 來設定應用程式。

開發人員, 系統管理

定義容器。

新增容器,提供名稱、Amazon ECR 儲存庫的 URL、記憶體限制和連接埠對應。連接埠 8080 和 80 已針對連接埠對應設定。根據您的應用程式需求設定其餘設定。

開發人員, 系統管理

建立工作。

當工作和容器設定就位時,請建立工作。如需詳細指示,請參閱「相關資源」一節中的連結。

開發人員, 系統管理
任務描述所需技能

建立或選擇叢集。

Amazon ECS 叢集可提供任務或服務的邏輯分組。您可以選擇使用現有叢集或建立新叢集。如果您決定建立新叢集,請根據需求選擇叢集類型。在我們的範例中,我們選取了網路叢集。提供叢集的名稱,並選擇是否要建立新的虛擬私有雲端 (VPC) 以用於 Fargate 工作。

開發人員, 系統管理

建立服務。

在叢集內,選擇 [建立服務]。

開發人員, 系統管理

選擇啟動類型。

選擇 Fargate 作為啟動類型。

開發人員, 系統管理

選擇作業定義、修訂版和平台版本。

選擇您要執行的工作,然後選擇作業定義的修訂版本和平台版本。

開發人員, 系統管理

選取 叢集。

從下拉式清單中選取要在其中建立服務的叢集。

開發人員, 系統管理

提供服務名稱。

為您正在建立的服務提供唯一的名稱。

開發人員, 系統管理

指定工作數目。

設定服務啟動時應執行的工作數目。如果您要啟動兩個或多個任務,則需要負載平衡器來平衡任務。要配置的任務的最小數量是一個

開發人員, 系統管理

設定最小和最大健康百分比。

設定應用程式的最小和最大健全狀況百分比,或接受提供的預設選項。

開發人員, 系統管理

設定部署設定。

根據您的需求選擇部署類型。您可以選擇滾動式更新或藍/綠部署。

開發人員, 系統管理

設定叢集 VPC、子網路和安全群組。

設定叢集 VPC、您要在其上部署應用程式的子網路,以及用於提供入站/輸出連線存取權的安全群組 (HTTP、HTTPS 和連接埠 8080)。

開發人員, 系統管理

設定公用 IP 設定。

啟用或停用公用 IP,視您是否要使用公用 IP 位址執行 Fargate 工作而定。

開發人員, 系統管理

設定負載平衡。

設定負載平衡器 (如果您要透過多項工作啟動服務)。您必須先建立負載平衡器及其目標群組,才能啟動服務。

開發人員, 系統管理

設定自動調整規模。

將您的服務設定為使用 Amazon ECS 服務 Auto Scaling,根據您的需求調整所需的任務數量。

開發人員, 系統管理

檢閱設定並建立服務。

檢閱您的服務設定,然後選擇 [建立服務]。

開發人員, 系統管理
任務描述所需技能

測試您的應用程式。

使用部署工作時建立的公用 DNS 來測試應用程式。如果應用程式具有負載平衡器,請使用它來測試應用程式,然後切斷應用程式。

開發人員, 系統管理

相關資源