Trong mô-đun này, bạn sẽ dựng hình ảnh bộ chứa cho ứng dụng node.js đơn khối và đẩy hình ảnh đó sang Amazon Elastic Container Registry. Bắt đầu xây dựng

triển khai sang amazon ecr

Với bộ chứa, bạn có thể dễ dàng gói mã, cấu hình và thành phần phụ thuộc của một ứng dụng thành các khối dựng dễ sử dụng. Các khối dựng này đem lại sự nhất quán về môi trường, hiệu quả vận hành, năng suất dành cho nhà phát triển và khả năng kiểm soát phiên bản. Bộ chứa có thể giúp đảm bảo rằng các ứng dụng triển khai một cách nhanh chóng, ổn định và nhất quán, dù triển khai ở môi trường nào.

tổng quan về kiến trúc

Tốc độ
Bạn có thể khởi chạy một bộ chứa với bản phát hành mã mới mà không tốn chi phí triển khai đáng kể. Tốc độ vận hành sẽ tăng lên vì chỉ cần di chuyển bộ chứa là có thể dễ dàng di chuyển mã tích hợp trong bộ chứa trên máy cục bộ của nhà phát triển sang máy chủ thử nghiệm. Trong thời gian dựng, có thể liên kết bộ chứa này với các bộ chứa khác cần thiết để chạy ngăn xếp ứng dụng.

Kiểm soát thành phần phụ thuộc và cải thiện kênh dẫn
Hình ảnh bộ chứa Docker ghi lại mã và các thành phần phụ thuộc của ứng dụng theo thời điểm. Nhờ đó, tổ chức kỹ thuật có thể tạo một kênh dẫn tiêu chuẩn cho vòng đời ứng dụng. Ví dụ:

  1. Nhà phát triển xây dựng và chạy bộ chứa trong phạm vi cục bộ.
  2. Máy chủ tích hợp liên tục cũng chạy bộ chứa này và thực thi các thử nghiệm tích hợp dựa vào đó để đảm bảo bộ chứa đáp ứng kỳ vọng.
  3. Bộ chứa này được chuyển sang một môi trường tổ chức. Tại đây, có thể kiểm tra hành vi trong thời gian chạy của bộ chứa bằng thử nghiệm độ chịu tải hoặc quy trình đảm bảo chất lượng thủ công.
  4. Bộ chứa này được chuyển sang môi trường sản xuất.

Với khả năng xây dựng, thử nghiệm, vận chuyển và chạy cùng một bộ chứa qua tất cả các giai đoạn của quy trình tích hợp và triển khai, việc cung cấp ứng dụng có chất lượng và độ tin cậy cao sẽ dễ dàng hơn đáng kể.

Mật độ và hiệu quả tài nguyên
Bộ chứa giúp tăng hiệu quả tài nguyên bằng cách cho phép nhiều quy trình không đồng nhất chạy trên một hệ thống. Hiệu quả tài quyên là kết quả tự nhiên của các kỹ thuật phân bổ và tách biệt mà bộ chứa sử dụng. Có thể giới hạn để bộ chứa chỉ sử dụng lượng bộ nhớ và CPU nhất định của máy chủ. Khi biết được bộ chứa cần tài nguyên nào và tài nguyên nào có sẵn từ máy chủ lưu trữ cơ sở, bạn có thể điều chỉnh tài nguyên điện toán mà mình sử dụng bằng máy chủ nhỏ hơn hoặc tăng mật độ quy trình chạy trên một máy chủ lớn, từ đó tăng mức độ sẵn sàng và tối ưu hóa việc sử dụng tài nguyên.

Tính linh hoạt
Bộ chứa Docker có tính linh hoạt vì có khả năng di động, triển khai dễ dàng và kích thước nhỏ. Khác với quy trình cài đặt và định cấu hình bắt buộc trên VM, việc gói các dịch vụ bên trong bộ chứa cho phép di chuyển dịch vụ dễ dàng giữa các máy chủ, tách biệt dịch vụ với sự cố của sự kiện khác lân cận và bảo vệ dịch vụ khỏi các bản vá hoặc bản nâng cấp phần mềm có sai sót trên hệ thống máy chủ. 

Thời gian hoàn thành: 20 phút

Dịch vụ sử dụng:


Trong phần đầu của hướng dẫn này, bạn sẽ dựng hình ảnh bộ chứa Docker cho ứng dụng node.js đơn khối và đẩy hình ảnh đó sang Amazon Elastic Container Registry (Amazon ECR). Chọn số tương ứng của từng bước để mở rộng mục đó.

break-the-monolith
  • Bước 1. Thiết lập

    Trong vài bước tiếp theo, bạn sẽ sử dụng Docker, Github, Amazon Elastic Container Service (Amazon ECS)Amazon ECR để triển khai mã vào bộ chứa. Để hoàn thành các bước này, hãy đảm bảo bạn có những công cụ sau đây.

    1. Có tài khoản AWS: Nếu chưa có tài khoản với AWS, bạn có thể đăng ký tại đây. Tất cả bài tập trong hướng dẫn này đều được thiết kế trong phạm vi của Bậc miễn phí AWS.
      ⚐ Lưu ý: Một số dịch vụ (mà bạn sẽ sử dụng) có thể yêu cầu tài khoản của bạn phải hoạt động từ 12 giờ trở lên. Nếu bạn gặp khó khăn với bất kỳ dịch vụ nào và mới tạo tài khoản, vui lòng chờ vài giờ rồi thử lại.
    2. Cài đặt Docker: Bạn sẽ dùng Docker để dựng các tệp hình ảnh sẽ chạy trong bộ chứa. Docker là một dự án nguồn mở. Bạn có thể tải Docker dành cho Mac hoặc dành cho Windows.
      Sau khi cài đặt, bạn có thể xác minh rằng Docker đang chạy bằng cách nhập Docker --version vào thiết bị đầu cuối. Số phiên bản cần hiển thị, chẳng hạn như: Docker phiên bản 19.03.5, bản dựng 633a0ea.
    3. Cài đặt AWS CLI:
      • Bạn sẽ sử dụng AWS Command Line Interface (AWS CLI) để đẩy hình ảnh sang Amazon ECR. Bạn có thể tìm hiểu về AWS CLI và tải công cụ này xuống tại đây.
      • Sau khi cài đặt, bạn có thể xác minh rằng AWS CLI đang chạy bằng cách nhập AWS --version vào thiết bị đầu cuối. Số phiên bản cần hiển thị, chẳng hạn như: aws-cli/1.16.217 Python/2.7.16 Darwin/18.7.0 botocore/1.12.207.
      • Nếu bạn đã cài đặt AWS CLI, hãy chạy lệnh sau trong thiết bị đầu cuối để đảm bảo đã cập nhật lên phiên bản mới nhất: pip install awscli --upgrade --user
      • Nếu chưa từng sử dụng AWS CLI, bạn có thể phải định cấu hình thông tin xác thực của mình.
    4. Có trình soạn thảo văn bản: Nếu bạn chưa có trình soạn thảo văn bản để mã hóa, hãy cài đặt vào môi trường cụ bộ của bạn. Atom là một trình soạn thảo văn bản đơn giản từ GitHub, có nguồn mở và phổ biến với các nhà phát triển.
  • Bước 2. Tải xuống và mở dự án

    Tải mã xuống từ GitHub: Chuyển đến https://github.com/awslabs/amazon-ecs-nodejs-microservices rồi chọn Tạo bản sao hoặc tải xuống để tải kho GitHub xuống môi trường cục bộ của bạn. Bạn cũng có thể sử dụng GitHub Desktop hoặc Git để tạo bản sao cho kho.

    Mở tệp dự án: Bắt đầu Atom, chọn Thêm thư mục dự án, sau đó chọn thư mục mà bạn đã lưu kho amazon-ecs-nodejs-microservices. Thao tác này sẽ thêm toàn bộ dự án vào Atom để bạn dễ dàng sử dụng.

    Trong thư mục dự án, bạn sẽ thấy các thư mục dành cho cơ sở hạ tầngdịch vụ. Cơ sở hạ tầng có chứa mã cấu hình cơ sở hạ tầng AWS CloudFormation mà bạn sẽ sử dụng ở bước tiếp theo. Dịch vụ có chứa mã tạo nên ứng dụng node.js.

    Hãy dành vài phút xem lại các tệp và làm quen với các khía cạnh khác nhau của ứng dụng, trong đó có cơ sở dữ liệu db.json, máy chủ server.jspackage.json và ứng dụng Dockerfile.

    dự án vi dịch vụ
  • Bước 3. Cung cấp kho

    Tạo kho:

    • Chuyển đến bảng điều khiển Amazon ECR.
    • Trên trang Kho, chọn Tạo kho.
    • Trên trang Tạo kho, nhập tên sau cho kho của bạn: api.
      ⚐ Lưu ý: Trong Tính bất biến của thẻ, giữ nguyên cài đặt mặc định.
    • Chọn Tạo kho lưu trữ.

    Sau khi tạo kho, bạn sẽ nhận được một thông báo xác nhận hiển thị địa chỉ kho. Địa chỉ kho sẽ có định dạng sau [account-ID].dkr.ecr.[region].amazonaws.com/[repo-name]. [account-ID], [region][repo-name] sẽ dựa theo thiết lập của bạn.

    ⚐ Lưu ý: Bạn cần sử dụng địa chỉ kho trong toàn bộ hướng dẫn này.

    tạo
  • Bước 4. Dựng và đẩy hình ảnh Docker

    Truy cập thiết bị đầu cuối của bạn và chuyển đến thư mục sau: ~/amazon-ecs-nodejs-microservices/2-containerized/services/api.

    Sử dụng thiết bị đầu cuối để xác thực thông tin đăng nhập Docker:

    1. Chạy $(aws ecr get-login --no-include-email --region [your-region]). Thay thế [your-region], ví dụ: $(aws ecr get-login --no-include-email --region us-west-2). Định cấu hình thông tin xác thực của bạn nếu cần.
      Nếu xác thực thành công thì bạn sẽ nhận được thông báo xác nhận: Đăng nhập thành công.
    2. Để dựng hình ảnh, hãy chạy lệnh sau trong thiết bị đầu cuối: docker build -t api.
      ⚐ Lưu ý: Bắt buộc phải có dấu chấm (.) sau api.
    3. Sau khi hoàn thành bản dựng, hãy gắn thẻ để có thể đẩy hình ảnh sang kho lưu trữ: docker tag api:latest [account-ID].dkr.ecr.[region].amazonaws.com/api:v1 
      ⚐ Lưu ý: Thay các mã giữ chỗ [account-ID][region] bằng thông tin cụ thể của bạn.
      ⚐ Mẹo nâng cao: :v1 biểu thị phiên bản của bản dựng hình ảnh. Mỗi lần dựng hình ảnh, bạn nên tăng số phiên bản này. Nếu đã dùng tập lệnh, bạn có thể sử dụng một số tự động (chẳng hạn như dấu thời gian) để gắn thẻ hình ảnh. Đây là biện pháp thực hành tốt nhất, giúp bạn dễ dàng hoàn nguyên về bản dựng hình ảnh bộ chứa trước đó trong tương lai.
    4. Đẩy hình ảnh sang Amazon ECR bằng cách chạy: docker push [account-id].dkr.ecr.[region].amazonaws.com/api:v1
      ⚐ Lưu ý: Thay các mã giữ chỗ [account-ID] và [region] bằng thông tin cụ thể của bạn.

    Nếu chuyển đến kho Amazon ECR, bạn sẽ thấy ảnh được gắn thẻ v1.

    Thẻ hình ảnh Amazon ECR