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

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

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

由 Kirankumar Chandrashekar 建立 (AWS)

環境:生產

技術:容器和微服務;網路;安全、身分、合規;Web 和行動應用程式

工作負載:所有其他工作負載

AWS 服務:Amazon EC2;Amazon EC2 Auto Scaling ;Amazon EC2 Container Registry;Amazon EFS;Amazon RDS;Amazon VPC;Amazon ECS;Elastic Load Balancing (ELB);AWSLambda

此模式說明如何在 Network Load Balancer 後方的 Amazon Elastic Container Service (AmazonECS) 上私有託管 Docker 容器應用程式,並使用 存取應用程式AWS PrivateLink。然後,您可以使用私有網路安全地存取 Amazon Web Services (AWS) Cloud 上的服務。Amazon Relational Database Service (Amazon RDS) 以高可用性 (HA) 託管ECS在 Amazon 上執行之應用程式的關聯式資料庫。如果應用程式需要持久性儲存,則會使用 Amazon Elastic File System (Amazon EFS)。

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

您也可以使用 AWS Fargate,而不是 Amazon EC2 Auto Scaling 群組。如需詳細資訊,請參閱ECS使用 AWS Fargate、 AWS PrivateLink和 Network Load Balancer 在 Amazon 上私下存取容器應用程式。                         

先決條件

使用 AWS PrivateLink 存取 Network Load Balancer ECS後方 Amazon 上的容器應用程式。

技術堆疊

  • Amazon CloudWatch

  • Amazon Elastic Compute Cloud (Amazon EC2)

  • Amazon EC2 Auto Scaling

  • Amazon Elastic Container Registry (Amazon ECR)

  • Amazon ECS

  • Amazon RDS

  • Amazon Simple Storage Service (Amazon S3)

  • AWS Lambda

  • AWS PrivateLink

  • AWS Secrets Manager

  • Application Load Balancer

  • Network Load Balancer

  • VPC

自動化和擴展

  • Amazon EC2 – Amazon Elastic Compute Cloud (Amazon EC2) 在 AWS Cloud 中提供可擴展的運算容量。

  • Amazon EC2 Auto Scaling – Amazon EC2 Auto Scaling 可協助您確保擁有正確數量的 Amazon EC2執行個體,以處理應用程式的負載。

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

  • Amazon ECR – Amazon Elastic Container Registry (Amazon ECR) 是安全、可擴展且可靠的受管AWS容器映像登錄服務。

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

  • AWS Lambda – Lambda 是一種運算服務,用於執行程式碼,無需佈建或管理伺服器。

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

  • 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資源啟動至您定義的虛擬網路。

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

  • Docker – Docker 可協助開發人員將任何應用程式包裝、運送和執行為輕量、便攜且自給自足的容器。

任務描述所需的技能

建立 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主控台,然後選擇包含您 AWS的區域VPC。 

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

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

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

  5. 選擇適用的安全設定、設定安全群組和目標群組。在設定路由區段中選擇執行個體IP 作為目標類型。請確定您未註冊目標。 

  6. 設定所有設定後,請選擇下一步:檢閱 ,然後選擇建立

雲端管理員

建立 Application Load Balancer 。

  1. 在 Amazon EC2主控台上,選擇包含您 的相同區域VPC。

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

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

  4. 設定 Application Load Balancer 及其接聽程式。重要:請確定您選擇 Application Load Balancer 的配置為內部 。 

  5. 選擇適用的安全設定、設定安全群組和目標群組。在設定路由區段中選擇執行個體IP 作為目標類型。請確定您未註冊目標。 

  6. 設定所有設定後,請選擇下一步:檢閱 ,然後選擇建立

雲端管理員
任務描述所需的技能

建立 Amazon EFS 檔案系統。

  1. 開啟 Amazon EFS主控台,然後選擇建立檔案系統 。 

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

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

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

雲端管理員

為子網路掛載目標。

  1. 返回 Amazon EFS主控台,然後選擇檔案系統 檔案系統頁面會顯示您帳戶中的 Amazon EFS 檔案系統。 

  2. 選擇您建立的檔案系統,然後選擇管理以顯示可用區域 。若要新增掛載目標,請選擇新增掛載目標 ,然後新增您建立的四個私有子網路。

雲端管理員

確認子網路已掛載為目標。

  1. 在 Amazon EFS主控台上,選擇檔案系統 。 

  2. 選擇網路以顯示現有掛載目標的清單。請確定其中包含您建立的四個子網路。

雲端管理員
任務描述所需的技能

建立 S3 儲存貯體。

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

雲端管理員
任務描述所需的技能

建立AWSKMS金鑰以加密 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 映像。

遵循相關資源區段中的指示建立 Docker 映像。

雲端管理員

建立 Amazon ECR 儲存庫。

  1. 在 Amazon ECR主控台上,選擇儲存庫 。 

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

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

雲端管理員, DevOps engineer

驗證 Amazon ECR儲存庫的 Docker 用戶端。

若要驗證 Amazon ECR儲存庫的 Docker 用戶端,請在 AWS 中執行「aws ecr get-login-password命令CLI。

雲端管理員

將 Docker 映像推送至 Amazon ECR儲存庫。

  1. 識別您要推送的 Docker 映像,然後在 AWS 中執行 docker images命令CLI。 

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

  3. 執行 docker push命令來推送 Docker 映像。 

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

雲端管理員

建立 Amazon ECS任務定義。

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

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

  2. 選取相容性頁面上,選取任務應該使用的啟動類型,然後選擇下一步

如需設定任務定義的協助,請參閱「建立任務定義」中的相關資源一節。重要:請確定您提供您推送到 Amazon 的 Docker 映像ECR。

雲端管理員

建立 Amazon ECS服務。

使用您先前建立的ECS叢集來建立 Amazon ECS服務。請務必選擇 Amazon EC2作為啟動類型,並選擇在上一個步驟中建立的任務定義,以及 Application Load Balancer 的目標群組。

雲端管理員
任務描述所需的技能

建立啟動組態。

開啟 Amazon EC2主控台,並建立啟動組態。確定使用者資料具有允許EC2執行個體加入所需ECS叢集的程式碼。如需所需程式碼的範例,請參閱相關資源區段。

雲端管理員

建立 Amazon EC2 Auto Scaling 群組。

返回 Amazon EC2主控台,然後在 Auto Scaling下,選擇 Auto Scaling 群組 。設定 Amazon EC2 Auto Scaling 群組。請務必選擇您先前建立的私有子網路並啟動組態。

雲端管理員
任務描述所需的技能

設定AWS PrivateLink 端點。

  1. 在 Amazon VPC主控台上,建立AWS PrivateLink 端點。 

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

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

雲端管理員
任務描述所需的技能

建立 VPC 端點。

為您先前建立的VPC端點建立AWS PrivateLink 端點。VPC 端點完整網域名稱 (FQDN) 將指向AWS PrivateLink 端點 FQDN。這會建立DNS端點可存取的VPC端點服務的彈性網路介面。

雲端管理員
任務描述所需的技能

建立 Lambda 函數。

在 AWS Lambda 主控台上,建立 Lambda 函數,將 Application Load Balancer IP 地址更新為 Network Load Balancer 的目標。如需詳細資訊,請參閱相關資源區段中的「使用 Application Load Balancer 的靜態 IP 地址」部落格文章。

應用程式開發人員

建立負載平衡器:

建立 Amazon EFS 檔案系統:

建立 S3 儲存貯體:

建立 Secrets Manager 秘密:

建立 Amazon RDS執行個體:

建立 Amazon ECS元件:

建立 Amazon EC2 Auto Scaling 群組:

設定 AWS PrivateLink:

建立VPC端點:

建立 Lambda 函數:

其他資源: