使用 AWS PrivateLink 和 Network Load Balancer 在 Amazon ECS 上私有存取容器應用程式 - AWS Prescriptive Guidance

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

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

由基蘭庫瑪 ‧ 錢德拉瑟卡 (AWS) 創作

環境:生產

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

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

AWS 服務:Amazon EC2; Amazon EC2 Auto Scaling; 亞馬遜 EC2 Container Registry; 亞馬遜 EFS; VPC 馬遜 RDS; 亞馬遜 ECS; Elastic Load Balancing;

此模式描述如何在 Network Load Balancer 後面的 Amazon Elastic Container Service (Amazon ECS) 上私有託管 Docker 容器應用程式,以及使用 AWS PrivateLink 存取應用程式。然後,您可以使用私人網路安全地存取 Amazon Web Services (AWS) 雲端上的服務。Amazon Relational Database Service (Amazon RDS) 會以高可用性 (HA) 來為 Amazon ECS 上執行的應用程式託管關聯式資料庫。如果應用程式需要永久儲存裝置,則會使用 Amazon Elastic File System (Amazon EFS)。

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

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

先決條件

技術堆疊

  • 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

  • 網路負載平衡器

  • VPC

自動化和擴充

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

  • 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 tainer (Amazon EFS) 提供簡單、可擴展、全受管的彈性 NFS 檔案儲存,可與 AWS 雲端服務和現場部署資源搭配使用。

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

  • Amazon RDS— Amazon Relational Database Service (Amazon RDS) 是一種 Web 服務,可以讓 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 資源啟動至您定義的虛擬網路。

  • Elastic Load Balancing— Elastic Load Balancing 可在多個目標 (例如 Amazon EC2 執行個體、容器和 IP 地址) 間將傳入應用程式流量或網路流量自動分配到多個可用區域。

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

任務描述所需技能
建立 VPC。

登入 AWS 管理主控台並開啟 Amazon VPC 主控台。選擇「啟動 VPC 精靈」,選擇「具有單一公用子網路的 VPC」,然後選擇「選取」。在組態頁面上,針對 VPC 輸入您的 VPC 名稱,然後選擇適當的 CIDR 區塊範圍。根據您的規格設定剩餘的選項。選擇「建立 VPC」,然後選擇「確定」關閉狀態視窗。

Cloud 管理員
建立私人子網路。

在 Amazon VPC 主控台上,選擇「子網路」,然後選擇「建立子網路」。視需要指定子網路詳細資訊,然後選擇 Create (建立)。重複這些步驟以建立三個額外的子網路。兩個子網用於 Amazon ECS 任務,兩個子網用於 Amazon RDS 資料庫。

Cloud 管理員
任務描述所需技能
建立 Network Load Balancer。

開啟 Amazon EC2 主控台,然後選擇包含您的 VPC 的 AWS 區域。在「負載平衡」之下,選擇「負載平衡器」,然後選擇「建立負載平衡器」。選擇「Network Load Balancer」,然後選擇「建立」。在「設定負載平衡器」頁面上,設定您的 Network Load Balancer 和監聽器。重要:確保您選擇網絡負載平衡器的配置為「內部」。然後選擇適用的安全性設定,設定安全性群組和目標群組。在「設定路由」部分中,選擇「執行個體」或「IP」作為「目標類型」。確保您沒有註冊目標。完成所有設定後,請選擇 Next (下一個:檢閱」,然後選擇「建立」。

Cloud 管理員
建立一個 Application Load Balancer。

在 Amazon EC2 主控台上,選擇包含您的 VPC 的相同區域。在「負載平衡」之下,選擇「負載平衡器」,然後選擇「建立負載平衡器」。選擇「Application Load Balancer」,然後選擇「建立」。設定您的 Application Load Balancer 及其接聽程式。重要:確保您將應用程序負載平衡器的方案選擇為「內部」。然後選擇適用的安全性設定,設定安全性群組和目標群組。在「設定路由」部分中,選擇「執行個體」或「IP」作為「目標類型」。確保您沒有註冊目標。完成所有設定後,請選擇 Next (下一個:檢閱」,然後選擇「建立」。

Cloud 管理員
任務描述所需技能
建立 Amazon EFS 檔案系統。

開啟 Amazon EFS 主控台並選擇「建立檔案系統」。在 Create File System (建立檔案系統) 對話方塊中,輸入您的檔案系統的名稱,然後選擇 VPC。選擇 Create (建立) 以建立檔案系統。設定和設定 Amazon EFS 檔案系統。

Cloud 管理員
掛載子網路的目標。

返回 Amazon EFS 主控台,然後選擇「檔案系統」。「檔案系統」頁面會顯示您帳戶中的 Amazon EFS 檔案系統。選擇您建立的檔案系統,然後選擇「管理」以顯示「可用區域」。若要新增掛載目標,請選擇「新增掛載目標」,然後新增您建立的四個私人子網路。

Cloud 管理員
確認子網路已掛載為目標。

在 Amazon EFS 主控台上,選擇「檔案系統」。選擇「網路」以顯示現有掛載目標的清單。請確定這些包含您建立的四個子網路。

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

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

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

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

Cloud 管理員
建立 Secrets Manager 秘密來儲存 Amazon RDS 密碼。

開啟 AWS Secrets Manager 主控台,然後選擇「儲存新的秘密」來建立新的秘密。選擇您建立的 KMS 金鑰,並儲存您的新密碼。

Cloud 管理員
任務描述所需技能
建立資料庫子網路群組。

開啟 Amazon RDS 主控台,然後選擇「子網路群組」。選擇 Create DB 子網路群組 (建立資料庫子網路群組),然後輸入您的資料庫子網路群組的名稱和描述。選擇您稍早建立的 VPC,然後選擇可用區域和子網路。然後選擇「建立」。

Cloud 管理員
建立 Amazon RDS 執行個體。

在私有子網路內建立和設定 Amazon RDS 執行個體。確定 HA 已開啟「異地同步備份」。

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

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

雲端管理員, DBA
任務描述所需技能
建立 ECS 叢集。

開啟 Amazon ECS 主控台並選擇「叢集」。然後選擇「建立叢集」,並根據您所需的規格設定 ECS 叢集。

Cloud 管理員
建立 Docker 映像。

依照 < 相關資源 > 一節中的指示建立 Docker 映像。

Cloud 管理員
創建亞馬遜 ECR 存儲庫。

在 Amazon ECR 主控台上,選擇「存放庫」。選擇 Create repository (建立儲存庫) 並為您的儲存庫輸入獨一無二的名稱。根據您的規格設定存放庫,如有需要,包括 AWS KMS 加密。

雲端管理員, DevOps 工程師
為亞馬遜 ECR 存儲庫驗證您的 Docker 客戶端。

若要驗證 Amazon ECR 存放庫的 Docker 用戶端,請在 AWS CLI 中執行「aws ecr 獲取登入密碼」命令。

Cloud 管理員
將碼頭映像推送至 Amazon ECR 儲存庫。

識別您要推送的 Docker 映像,並在 AWS CLI 中運行「泊塢窗映像」命令。使用 Amazon ECR 登錄檔、儲存庫和選擇性的映像標籤名稱組合標記名稱。然後通過運行「碼頭推送」命令來推送 Docker 映像。針對所有必要的映像重複此步驟。

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

在 Amazon ECS 中執行 Docker 容器需要的是任務定義。返回 Amazon ECS 主控台並選擇「任務定義」,然後選擇「建立新任務定義」。在 Select Compubse (選取相容性) 頁面中,選取您任務應該使用的啟動類型,然後選擇 Next step (下一個步驟)。如需設定工作定義的說明,請參閱 < 相關資源 > 一節中的 < 建立工作定義 >。重要:確保您提供您推送到 Amazon ECR 的 Docker 映像。

Cloud 管理員
建立 Amazon ECS 服務。

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

Cloud 管理員
任務描述所需技能
建立啟動組態。

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

Cloud 管理員
建立 Amazon EC2 Auto Scaling 群組。

返回 Amazon EC2 主控台,然後在「Auto Scaling」下選擇「自動擴展群組」。建立 Amazon EC2 Auto Scaling 群組。請確定您選擇私用子網路,並啟動您先前建立的組態。

Cloud 管理員
任務描述所需技能
設定 AWS PrivateLink 終端節點。

在 Amazon VPC 主控台上,建立 AWS PrivateLink 端點。將此終端節點與 Network Load Balancer 建立關聯,這樣可讓客戶私下使用 Amazon ECS 上託管的應用程式。如需詳細資訊,請參閱 < 相關資源 > 一節。

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

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

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

在 AWS Lambda 主控台上,建立 Lambda 函數以將 Application Load Balancer IP 位址更新為 Network Load Balancer 的目標。如需有關這方面的詳細資訊,請參閱 < 相關資源 > 一節中的 < 使用靜態 IP 位址的應用程式負載平衡器 > 部落格文章。

應用程式開發

建立負載平衡器:

建立 Amazon EFS 檔案系統:

建立 S3 儲存貯體:

建立 Secrets Manager 秘密:

建立 Amazon RDS 執行個體:

建立 Amazon ECS 元件:

建立 Amazon EC2 Auto Scaling 群組:

設定 AWS PrivateLink:

建立 VPC 端點:

建立 Lambda 函數:

其他資源: