使用 AWS Fargate、AWS PrivateLink 和 Network Load Balancer,在 Amazon ECS 上私下存取容器應用程式 - AWS 方案指引

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

使用 AWS Fargate、AWS PrivateLink 和 Network Load Balancer,在 Amazon ECS 上私下存取容器應用程式

創建者基蘭庫馬爾錢德拉什卡 (AWS)

環境:生產

技術:容器與微服務;網路;安全性、身分識別、合規性;網站與 Web 應用程式

工作負載:所有其他工作

AWS 服務:Amazon EC2 容器註冊表;Amazon ECS;Amazon EFS;Amazon RDS;Amazon VPC;Elastic Load Balancing(ELB);AWS Lambda

此模式描述如何透過使用 Amazon 彈性容器服務 (Amazon ECS) 搭配 AWS Fargate 啟動類型,在 Network Load Balancer 後面使用 Amazon 彈性容器服務 (AWS),在網路負載平衡器後面私有託管 Docker 容器應用程式,以及使用 AWS 存取應用程式。 PrivateLinkAmazon Relational Database Service 服務 (Amazon RDS) 託管在具有高可用性 (HA) 的 Amazon ECS 上執行之應用程式的關聯式資料庫。如果應用程式需要持續性儲存,您可以使用 Amazon Elastic File System (Amazon EFS)。

此模式針對執行 Docker 應用程式的 Amazon ECS 服務使用 Fargate 啟動類型,並在前端使用 Network Load Balancer。然後,它可以與虛擬私有雲端 (VPC) 端點建立關聯,以便透過 AWS PrivateLink 存取。然後,可以使用其他 VPC 端點與其他 VPC 共用此 VPC 端點服務。

您可以將 Fargate 與 Amazon ECS 搭配使用來執行容器,而不必管理伺服器或 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體的叢集。您也可以使用 Amazon EC2 Auto Scaling 組而不是 Fargate。如需詳細資訊,請參閱使用 AWS PrivateLink 和 Network Load Balancer 在 Amazon ECS 上私下存取容器應用程式。

先決條件

技術堆疊

  • Amazon CloudWatch

  • Amazon Elastic Container Registry (Amazon ECR)

  • Amazon ECS

  • Amazon EFS

  • Amazon RDS

  • Amazon Simple Storage Service (Amazon S3)

  • AWS Fargate

  • AWS Lambda

  • AWS PrivateLink

  • AWS Secrets Manager

  • Application Load Balancer

  • Network Load Balancer

  • VPC

自動化和規模

  • Amazon ECS — Amazon Elastic Container Service (Amazon ECS) 是可高度擴展、快速的容器管理服務,可讓您輕鬆執行、停止和管理叢集上的容器。

  • Amazon ECR — 亞馬遜彈性容器註冊表 (Amazon ECR) 是一種受管 AWS 容器映像登錄服務,安全、可擴展且可靠。

  • Amazon EFS — Amazon Elastic File System (Amazon EFS) 提供簡單、可擴展且全受管的彈性 NFS 檔案系統,可與 AWS 雲端服務和現場部署資源搭配使用。

  • AWS Fargate — AWS Fargate 是一項技術,您可以與 Amazon ECS 搭配使用來執行容器,而不必管理伺服器或 Amazon EC2 執行個體的叢集。

  • AWS Lambda — Lambda 是一種運算服務,可讓您執行程式碼,而無需佈建或管理伺服器。

  • Amazon RDS — Amazon Relational Database Service 服務 (Amazon RDS) 是一種網路服務,可讓您更輕鬆地在 AWS 雲端中設定、操作和擴展關聯式資料庫。

  • Amazon S3 — Amazon Simple Storage Service (Amazon S3) 是互聯網的存儲。此服務旨在降低開發人員進行網路規模運算的難度。

  • AWS Secrets Manager — Secrets Manager 可協助您透過 API 呼叫秘密管 Secrets Manager 員來取代程式碼中的硬式編碼登入資料 (包括密碼),以程式設計方式擷取密碼。

  • Amazon VPC — Amazon Virtual Private Cloud (Amazon VPC) 可協助您在已定義的虛擬網路中啟動 AWS 資源。

  • E@@ lastic Load Balancing — Elastic Load Balancing (ELB) 可將傳入的應用程式或網路流量分散到多個可用區域中的多個目標,例如 EC2 執行個體、容器和 IP 地址。

  • Docker — Doc ker 幫助開發人員輕鬆打包,運送和運行任何應用程序作為一個輕量級,便攜和自給自足的容器。

任務描述所需技能
建立 VPC。
  1. 登入 AWS 管理主控台,然後開啟 Amazon VPC 主控台。選擇創建 VPC,然後選擇 VPC 等等。 

  2. 輸入 VPC 的名稱,然後選擇適當的 CIDR 區塊範圍。

  3. 指定兩個可用區域、兩個公用子網路、四個私有子網路。兩個私有子網路用於 Amazon ECS 任務,而兩個私有子網路則用於 Amazon RDS 資料庫。

  4. 為每個可用區域指定一個 NAT 閘道。

  5. 選擇建立 VPC

雲端管理員
任務描述所需技能
建立 Network Load Balancer。
  1. 開啟 Amazon EC2 主控台,然後選擇包含您 VPC 的 AWS 區域。 

  2. 負載平衡下,選擇負載平衡器,然後選擇建立負載平衡器。 

  3. 選擇 Network Load Balancer,然後選擇建立。 

  4. [設定負載平衡器] 頁面上,設定您的 Network Load Balancer 和接聽程式。重要:請確定您選擇網路負載平衡器的配置為內部。 

  5. 選擇適用的安全性設定、設定安全群組和目標群組。在 [設定路由] 區段中選擇 [IP] 作為 [目標類型]。請確定您沒有註冊目標。 

  6. 設定完所有設定後,請選擇 [下一步:複查],然後選擇 [建立]。

如需此和其他故事的說明,請參閱「相關資源」一節。

雲端管理員
建立應用程式負載平衡器。
  1. 在 Amazon EC2 主控台上,選擇包含您 VPC 的相同區域。 

  2. 負載平衡下,選擇負載平衡器,然後選擇建立負載平衡器。 

  3. 選擇 Application Load Balancer,然後選擇建立。 

  4. 設定您的 Application Load Balancer 及其監聽器。重要:請確定您選擇應用程式負載平衡器的配置為內部。 

  5. 選擇適用的安全性設定、設定安全群組和目標群組。在 [設定路由] 區段中選擇 [IP] 作為 [目標類型]。請確定您沒有註冊目標。 

  6. 設定完所有設定後,請選擇 [下一步:複查],然後選擇 [建立]。

雲端管理員
任務描述所需技能
建立一個 Amazon EFS 檔案系統。
  1. 開啟 Amazon EFS 主控台,然後選擇「建立檔案系統」。 

  2. 在 [建立檔案系統] 對話方塊中,輸入檔案系統的名稱,然後選擇您的 VPC。 

  3. 選擇 [建立] 以建立檔案系統。 

  4. 設定和設定您的 Amazon EFS 檔案系統。

雲端管理員
掛載子網路的目標。
  1. 返回 Amazon EFS 主控台,然後選擇檔案系統檔案系統頁面會顯示您帳戶中的 Amazon EFS 檔案系統。 

  2. 選擇您建立的檔案系統,然後選擇管理以顯示可用區域。 

  3. 若要新增掛載目標,請選擇 [新增掛載目標],然後新增您建立的四個私人子網路。

雲端管理員
確認子網路已裝載為目標。
  1. 在 Amazon EFS 主控台上,選擇檔案系統。 

  2. 選擇「網路」以顯示現有掛載目標的清單。請確定這些子網路包括您建立的四個子網路。

雲端管理員
任務描述所需技能
建立 S3 儲存貯體。

如有需要,開啟 Amazon S3 主控台並建立 S3 儲存貯體來存放應用程式的靜態資產。

雲端管理員
任務描述所需技能
建立 AWS KMS 金鑰以加密密碼 Secrets Manager 密碼。

開啟 AWS Key Management Service (AWS KMS) 主控台,然後建立 KMS 金鑰。

雲端管理員
創建一個 Secrets Manager 密碼來存儲 Amazon RDS 密碼。
  1. 開啟 AWS Secrets Manager 主控台,然後選擇存放新密碼來建立新密碼。 

  2. 選擇您建立的 KMS 金鑰,然後儲存新密碼。

雲端管理員
任務描述所需技能
建立資料庫子網路群組。
  1. 開啟 Amazon RDS 主控台,然後選擇子網路群組。 

  2. 選擇 [建立資料庫子網路群組],然後輸入資料庫子網路群組的名稱和說明。 

  3. 選擇您先前建立的 VPC,然後選擇可用區域和子網路。然後選擇 Create (建立)

雲端管理員
創建一個 Amazon RDS 實例。

在私有子網路中建立和設定 Amazon RDS 執行個體。確定已開啟異地同步備份以取得高可用性 (HA)。

雲端管理員
將資料載入 Amazon RDS 執行個體。

將應用程式所需的關聯式資料載入 Amazon RDS 執行個體。此過程將根據應用程序的需求以及數據庫模式的定義和設計方式而有所不同。

DBA
任務描述所需技能
建立 ECS 叢集。
  1. 開啟 Amazon ECS 主控台,然後選擇「叢集」。 

  2. 選擇 [建立叢集],然後根據您所需的規格設定 ECS 叢集。

雲端管理員
創建碼頭圖像。

依照「相關資源」一節中的指示建立 Docker 映像檔。

雲端管理員
建立 Amazon ECR 儲存庫。
  1. 開啟 Amazon ECR 主控台,然後選擇儲存庫。 

  2. 選擇 [建立儲存庫],然後輸入儲存庫的唯一名稱。 

  3. 根據您的規格設定存放庫,包括必要時的 AWS KMS 加密。

雲端管理員、 DevOps 工程師
將碼頭映像推送到 Amazon ECR 存儲庫。
  1. 識別您要推送的 Docker 映像,然後在 AWS CLI 中執行docker images命令。 

  2. 使用 Amazon ECR 登錄、儲存庫和選用的映像標籤名稱組合來標記您的映像。 

  3. 通過運行docker push命令推送 Docker 映像。 

  4. 針對所有必要的影像重複這些步驟。

雲端管理員
建立 Amazon ECS 任務定義。

在 Amazon ECS 中執行 Docker 容器所需的任務定義。 

  1. 返回 Amazon ECS 主控台,選擇「任務定義」,然後選擇「建立新的任務定義」。 

  2. 在 [選取相容性] 頁面上,選取工作應使用的啟動類型,然後選擇 [下一步]。

如需設定任務定義的說明,請參閱「相關資源」一節中的「建立任務定義」。重要:請務必提供您推送至 Amazon ECR 的泊塢視窗映像檔。

雲端管理員
建立 ECS 服務並選擇 Fargate 作為啟動類型。
  1. 使用您先前建立的 ECS 叢集來建立 Amazon ECS 服務。確保選擇 Fargate 作為啟動類型。

  2. 選擇在上一個步驟中建立的作業定義,然後選擇「Application Load Balancer」的目標群組。

雲端管理員
任務描述所需技能
設定 AWS PrivateLink 端點。
  1. 開啟 Amazon VPC 人雲端主控台,然後建立 AWS PrivateLink 端點。 

  2. 將此端點與 Network Load Balancer 建立關聯,這可讓 Amazon ECS 上託管的應用程式私下提供給客戶。 

如需詳細資訊,請參閱相關資源一節。

雲端管理員
任務描述所需技能
建立 VPC 端點。

為您先前建立的 AWS PrivateLink 端點建立 VPC 端點。VPC 端點完整網域名稱 (FQDN) 將指向 AWS PrivateLink 端點 FQDN。這會建立網域名稱服務端點可存取的 VPC 端點服務的 elastic network interface。

雲端管理員
任務描述所需技能
建立 Lambda 函數。

開啟 Lambda 主控台並建立 Lambda 函數,將 Application Load Balancer IP 位址更新為 Network Load Balancer 的目標。如需詳細資訊,請參閱「相關資源」一節中的「針對應用程式負載平衡器使用靜態 IP 位址」部落格文章。

應用程式開發人員

建立負載平衡器:

建立一個 Amazon EFS 檔案系統:

建立 S3 儲存貯體:

建立密碼管理員密碼:

創建一個 Amazon RDS 實例:

創建 Amazon ECS 組件:

設定 AWS PrivateLink:

建立 VPC 端點:

創建 Lambda 函數:

其他資源: