邁出第一步
簡介
容器是現代應用程式開發的關鍵元件。容器已成為組織運算資源及管理應用程式部署內容的標準方式。
容器提供獨立可重現的運算環境。它們還提供簡化封裝和相依性管理的方法。從非常大型的多叢集資產的協同運作到 Web 應用程式,甚至是測試任務並在筆記型電腦上進行概念驗證,容器都是開始建立軟體以部署至雲端的絕佳方式。
本決策指南可協助您開始使用,並選擇適合您現代應用程式開發的 AWS 容器服務。
這段四分鐘的摘錄來自 2022 年 AWS Summit DC 一場 57 分鐘的演講,主演者是 Vikram Venkataraman,AWS Principal Technical Account Manager。此摘錄提供可用 AWS 容器服務的概觀。
閱讀時間
20 分鐘
作用
協助確定哪個 AWS 容器服務最適合貴組織。
等級
初階
上次更新日期
2023 年 4 月 26 日
涵蓋的服務
了解
容器已成為將應用程式程式碼、組態和相依性封裝到單一成品的實質標準,因為它們可一致部署到多個環境中。
容器是任何現代應用程式開發策略的關鍵一環。為提供一些容器相關 AWS 服務的內容,右邊圖片會逐層顯示可用的 AWS 容器選項 (在此影片中有更完整的說明)。
容量
容量是指您將部署容器的基礎運算能力,以及中央處理單元 (CPU) 和記憶體需求。容量是容器將要在其上執行的基礎設施。您在 AWS 上的容器有兩種容量選項:
- Amazon Elastic Compute Cloud (AmazonEC2) 可讓您在您管理的虛擬機器上執行容器。
- AWS Fargate 是無伺服器的容器運算引擎,可讓您在不管理底層基礎設施的情況下執行容器。使用 Fargate,您可以啟動和擴展容器,而無需擔心底層的 EC2 執行個體。
協同運作
對於組織而言,執行的不止是一個或幾個,執行數千個容器司屬空見慣。在如此複雜的環境中,管理變得具有挑戰性。協同運作服務有助於促進這些應用程式的部署和管理。AWS 提供三種協同運作服務:
- Amazon Elastic Container Service (Amazon ECS) 是一項全受管容器協同運作服務,非常適合需要以簡單且經濟高效的方式來部署和管理容器化應用程式的組織。
- Amazon Elastic Kubernetes Service (Amazon EKS) 是一項全受管 Kubernetes 服務,能讓您在 AWS 上執行和管理 Kubernetes 叢集。
- Red Hat OpenShift Service on AWS (ROSA) 是一項全受管 OpenShift 服務,能讓您在 AWS 上執行和管理 OpenShift 叢集。對於已在內部部署 OpenShift 的客戶而言,這是很好的選擇。
佈建
佈建提供服務協同運作層的介面。每個協調器都有自己的複雜性。佈建服務會隱藏這種複雜性,並協助您更便捷地使用服務。此類別的 AWS 服務包括:
- AWS App Runner 是一項全受管服務,可自動從原始程式碼建立容器映像,將容器部署到全受管基礎設施,並根據需求擴展。
- AWS Elastic Beanstalk 是一項全受管服務,可讓您輕鬆部署、管理和擴展 Web 應用程式。Elastic Beanstalk 也支援容器,並提供用於部署和擴展容器化應用程式的全受管平台。
- Amazon Lightsail 是一種啟動和管理虛擬私有伺服器簡單且經濟實惠的方法,同時還支援容器,讓您可以使用 Lightsail 執行個體建立和部署容器化應用程式。
考慮
選擇符合您應用程式需求和操作偏好的容器服務很重要。下一節概述了選擇容器服務時要考慮的一些關鍵準則,以及各種支援工具和服務。
-
受管服務和營運開銷
-
工作負載特性
-
應用程式可攜性
-
組織規模與技能
-
易於部署
-
組織可以選擇使用雲端,透過標準化受管服務將營運負擔轉移至 AWS,以降低營運成本。較高層次的抽象化讓開發者和操作者得以專注於自己獨特的增值活動,而不用面對許多未加區分的任務。
在 AWS 上使用容器建置,利用更高層次的抽象化服務,將維護基礎設施的營運開銷轉移至 AWS。
-
您可以藉由了解工作負載模式,更輕鬆地選擇架構。這可能包括 Web 應用程式、以 API 為基礎的微型服務、事件驅動應用程式、串流與傳訊、資料管道、IT 自動化等。某些工作負載在某種運算環境中的效能會更好,或者成本效益更高。
-
許多客戶都希望確保其應用程式能在不同環境中執行,且能輕易遷移或移動到不同的環境。能夠保留選擇,或者在內部部署和雲端上都執行應用程式對他們而言很重要。
我們建議在軟體架構和建立封裝方面建立能力,以便您更容易地在運算服務之間移植差異化的商業邏輯。
使用某些技術建立的應用程式在某些運算服務上執行起來可能會比在其他運算服務上更有效率。
-
決定使用哪種容器服務時,您組織的技能是主要因素。無論您採取哪種方法,都需要在 DevOps 和網站可靠性工程師 (SRE) 團隊上進行一些投資。建立自動化管道以部署應用程式是大多數現代應用程式開發的常見做法。
部分選擇會提高管理量。例如,有些組織因投資強大的 SRE 團隊來管理 Kubernetes 叢集,而具有執行和管理 Kubernetes 實作的技能和資源。這些團隊會處理頻繁的叢集升級 (例如,Kubernetes 每年有三個主要版本,並且舊版本會被棄用)。
組織規模是關鍵因素,因為較小的新創公司可能只有小型 IT 團隊,而且其中每個人都身兼數職,而較大的企業一次可能支援數百個生產工作負載。
-
不同的 AWS 容器服務在部署複雜性方面滿足獨特需求。這是每個容器服務針對其角色進行優化的方法:
- AWS AppRunner 提供最簡單的途徑,讓您能在公共網際網路上部署應用程式,而無需管理或自訂底層基礎設施。
- 如果您需要對網路和安全設定有更多的控制,同時不犧牲規模或功能,Amazon ECS 是很好的選擇。
- Amazon EKS 可讓您利用 Kubernetes 技術提供的應用程式部署和協同運作的靈活性和控制。
- AWS AppRunner 提供最簡單的途徑,讓您能在公共網際網路上部署應用程式,而無需管理或自訂底層基礎設施。
選擇
現在您已了解評估容器選項的準則,那麼您可隨時根據組織的需求,選擇最適合的 AWS 容器服務。
以下表格反白顯示了哪些服務會針對哪些情況進行優化。使用此表格來協助判斷最適合貴組織和使用案例的容器服務。
Red Hat OpenShift Service on AWS (ROSA)
AWS 上的 Red Hat OpenShift 服務可讓您輕鬆地在 AWS 上建立和操作 Red Hat OpenShift 叢集。針對已在 OpenShift Container Platform 內部部署容器化的應用程式,ROSA 提供熟悉的 API 介面,並維持相同的部署工具鏈,好讓您能專注於重構資料模型,而不是整個應用程式堆疊。
Amazon Elastic Kubernetes Service
Amazon EKS 協助您在 AWS 雲端或內部部署啟動、執行和擴展 Kubernetes 應用程式。
Amazon ECS 是一項全受管容器協同運作服務,可協助部署、管理和擴展容器化應用程式。
Amazon Elastic Container Registry
Amazon ECR 是全受管容器登錄檔,提供高效能託管,因此您可以隨時隨地可靠地部署應用程式映像和成品。
Amazon Elastic Container Service (ECS) Anywhere
Amazon ECS Anywhere 是 Amazon ECS 的一項功能,可讓您在基礎架構上執行和管理容器工作負載。
Amazon EKS Anywhere 可讓您在自己的基礎設施上建立及操作 Kubernetes 叢集。
Amazon EKS 使用 Amazon EKS Distro,這是由 AWS 建置和維護的 Kubernetes 發行版。Amazon EKS Distro 可讓您更輕鬆地建立可靠且安全的叢集。
使用
現在,您應清楚了解每項 AWS 容器服務 (和支援的 AWS 工具和服務),以及哪一項服務可能最適合您的組織和使用案例。
若要探索如何使用並進一步了解有關每項可用 AWS 容器服務的資訊,我們提供了探索每個服務運作方式的途徑。下一節提供助您開始使用的深入說明文件、實作教學課程和資源的連結。
-
Amazon EC2
-
Amazon ECR
-
Amazon ECS
-
Amazon EKS
-
Amazon Lightsail
-
AWS App Runner
-
AWS Elastic Beanstalk
-
AWS Fargate
-
ROSA
-
Amazon EC2
-
-
Amazon ECR
-
使用 Amazon ECR 來源和 ECS 至 CodeDeploy 部署建立管道
在 AWS CodePipeline 中設定管道,以使用支援 Docker 映像檔的藍/綠部署來部署容器應用程式。
-
Amazon ECS
-
開始使用 Amazon ECS
本指南介紹可用於存取 Amazon ECS 的工具,以及執行容器的入門分步驟操作程序。
Amazon ECS 的新功能與未來發展
了解自 Amazon ECS Anywhere 推出以來的新功能、AWS Fargate 的新功能,並展望 Amazon ECS 令人振奮的增強功能。
-
Amazon EKS
-
開始使用 Amazon EKS
進一步了解 Amazon Elastic Kubernetes Service (Amazon EKS)。您可以使用此受管服務在 AWS 上執行 Kubernetes,不必安裝、操作及維護您自己的 Kubernetes 控制平面或節點。
Amazon Elastic Kubernetes Service (EKS) 部署
探索 AWS 上的 Amazon EKS 部署選項,了解如何使用它來管理一般容器化應用程式。
Amazon EKS 快速入門參考部署
使用快速入門參考部署指南,我們提供了部署 Amazon Elastic Kubernetes Service (Amazon EKS) 叢集的逐步說明。
-
Amazon Lightsail
-
建立、推送和部署容器映像
使用 Amazon Lightsail
本教學展示如何使用 Dockerfile 在本機電腦上建立容器映像。在建立映像之後,您接著可將其推送至 Lightsail 容器服務以進行部署。
Amazon Lightsail 資源中心
探索 Lightsail 教學、影片及核心概念文件的連結。
使用 Amazon Lightsail 啟動 Linux 虛擬機器
在本教學中,您會在 Amazon Lightsail 中建立 Amazon Linux 執行個體。執行個體啟動並正常執行後,您在 Lightsail 主控台內使用瀏覽器 SSH 終端透過 SSH 連接它。
-
AWS App Runner
-
開始使用 AWS App Runner
本教學將逐步引導您設定原始程式碼和部署、服務建置和服務執行期,以將應用程式部署至 App Runner 服務。本教學也會示範如何部署程式碼版本、進行設定變更,以及檢視日誌。
使用教學 »
AWS App Runner:幾分鐘內即可從程式碼轉換為可擴展且安全的 Web 應用程式
探索 AWS App Runner 的設計如何讓您更輕鬆地將 Web 應用程式和 API 部署到雲端,無論它們使用的是哪種語言,即使是缺乏部署和管理容器或基礎設施經驗的團隊也適用。
使用 AWS App Runner 部署 Web 應用程式
按照這些逐步指示,使用 AWS App Runner 部署容器化 Web 應用程式。從原始程式碼或容器映像開始。App Runner 會自動建置和部署 Web 應用程式,並透過加密來負載平衡流量。 -
AWS Elastic Beanstalk
-
AWS Fargate
-
開始使用 AWS Fargate
本指南說明 AWS Fargate 的基礎知識,這項技術可與 Amazon ECS 搭配使用,以在無需管理伺服器或 Amazon EC2 執行個體叢集的情況下執行容器。
開始使用 AWS Fargate 上的 Linux 容器進行主控台操作
在 Amazon ECS 支援 AWS Fargate 的區域為任務使用 Fargate 啟動類型,開始使用 AWS Fargate 上的 Amazon ECS。
使用 AWS CLI 以 Fargate Linux 任務建立叢集
透過 AWS CLI 在 Amazon ECS 中設定叢集、註冊任務定義、執行 Linux 任務,以及執行其他常見案例。 -
ROSA