Sử dụng AWS CodePipeline

AWS Nov 10, 2021

Hello anh chị em, lại là mình đây. Sau bài hướng dẫn tạo một chatops đơn giản và để tiếp nối chương trình về AWS. Hôm nay, mình sẽ tiếp tục chia sẻ với anh chị em một chức năng khá thú vị trên AWS đó chính là CodePipeline giúp cho việc tự động triển khai code đơn giản hơn.

Hãy bắt đầu qua một số dịch vụ xoay quanh CodePipe nhé:

d1

I. Mô tả

1. CodeCommit

   Là một dịch vụ kiểm soát nguồn được quản lý hoàn toàn giúp các công ty dễ dàng lưu trữ các kho lưu trữ Git riêng an toàn và có khả năng mở rộng cao. Hiểu nôm na thì nó cũng giống như gitlab hay github vậy.
👉 Source: https://aws.amazon.com/codecommit/

2. CodeArtifact

   Là dịch vụ kho lưu trữ tạo tác được quản lý hoàn toàn giúp các tổ chức thuộc mọi quy mô dễ dàng lưu trữ, xuất bản và chia sẻ các gói phần mềm được sử dụng trong quá trình phát triển phần mềm của họ một cách an toàn.
👉 Source: https://aws.amazon.com/codeartifact/

3. CodeBuild

   Là một dịch vụ tích hợp liên tục được quản lý hoàn toàn nhằm biên dịch mã nguồn, chạy thử nghiệm và sản xuất các gói phần mềm sẵn sàng triển khai. Với CodeBuild, bạn không cần phải cung cấp, quản lý và mở rộng quy mô các máy chủ xây dựng của riêng mình.
👉 Source: https://aws.amazon.com/codebuild/

3. CodeDeploy

   Là một dịch vụ triển khai được quản lý hoàn toàn, tự động hóa việc triển khai phần mềm để tính toán các dịch vụ như Amazon EC2, AWS Lambda và các máy chủ tại chỗ của bạn.
👉 Source: https://aws.amazon.com/codedeploy/

4. CodePipeline

   là một dịch vụ tích hợp liên tục và phân phối liên tục (CI/CD :) để cập nhật cơ sở hạ tầng và ứng dụng nhanh chóng và đáng tin cậy. CodePipeline xây dựng, kiểm tra và triển khai mã của bạn mỗi khi có sự thay đổi mã, dựa trên các mô hình quy trình phát hành mà bạn xác định.
👉 Source: https://aws.amazon.com/codepipeline/

2. Xây dựng

Sau khi đã xem qua một số lý thuyết, hãy cùng mình xây dựng một luồng CI trên CodePipeline để tự động trển khai một hệ thống đơn giản lên EC2, cấu trúc sẽ như hình dưới:
d3-1

Mô tả:

Một dự án được quản lý source code trên CodeCommit, khi có thay đổi từ một branch đã được cấu hình trên CodePipeline, sẽ tự động triển khai lên EC2.

2.1 CodeCommit: - push code lên nào

Thứ không thể thiếu khi anh chị em commit code đó chính là GIT, hãy nhớ cài đặt phần mềm này đầu tiên nếu máy tính chưa có nhé.

Tiếp theo, để có thể commit lên CodeCommit của AWS thì anh chị em cần phải cấu hình một chút trên tài khoản AWS cũng như trên máy, thông tin này anh chị em có thể tham khảo trực tiếp trên trang chủ AWS tại đường link này:

https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-ssh-unixes.html?icmpid=docs_acc_console_connect_np

Tóm tắt lại hướng dẫn trên thì anh chị em cần tạo một public key trên máy tính cá nhân, sau đó import vào security trên tài khoản AWS, tiếp theo là cấu hình một chút ở máy cá nhân là xong thôi.

Sau khi thiết lập hoàn tất, anh chị em có quyền để pull và push code lên CodeCommit rồi.

Nếu còn chưa nắm rõ thì xem video cuối bài viết nhé

2.2 CodeDeploy - Thiết lập EC2 thôi
2.2.1 Thiết lập EC2

Nào, để hệ thống được người dùng vào sử dụng thì tất nhiên không thể thiếu một máy chủ EC2, hãy vào tạo mới và thiết lập EC2, mọi cấu hình đều do anh chị em tự chọn, chỉ duy nhất phần User data (*) hãy thêm đoạn code dưới:

#!/bin/bash
yum -y update
yum install -y ruby
yum install -y aws-cli
cd /home/ec2-user
wget https://aws-codedeploy-us-east-2.s3.us-east-2.amazonaws.com/latest/install
chmod +x ./install
./install auto

amazon-linux-extras install -y nginx1
chown -R ec2-user:ec2-user /usr/share/nginx/
rm -rf /usr/share/nginx/html
  • User data hiểu như là đoạn code sẽ được thực thi trước khi mà một EC2 được đưa vào sử dụng, đoạn code này sẽ được thực thi duy nhất một lần đầu khi anh chị em tạo EC2 mới nhé.

Sau đó, hãy tiếp tới phần Add Tags, hãy thêm Key và Value để sử dụng cho phần CodeDeploy bên dưới.

Sau đó là launch instance lên thôi!

Anh chị em có thể xem video cúôi bài viêt nhé!

2.2.2 Thiết lập CodeDeploy

Sau khi đã commit code thành công, giờ tiếp tục chúng ta sẽ tạo một CodeDeploy như hình dưới (tất nhiên là phần name là tùy ý của mỗi người):
d4

Để phục vụ cho bước tiếp theo, hãy tạo thêm 1 role có quyền là AWSCodeDeployRole

Sau khi tạo xong CodeDeploy, trong màn hình chi tiết của CodeDeploy, hãy tạo một Deployment Group, đây chính là group các EC2 sẽ được triển khai code

Trong phần tạo này các bạn chú ý các phần sau:

  • Service role: Chọn role AWSCodeDeployRole vừa tạo
  • Environment configuration: chọn Amazon EC2 instances
    • Phần này sẽ có nhập Tag group gồm key và value (đây chính là tag của một EC2)
  • Load balancer: nếu không dùng thì bỏ chọn nhé

Vậy là xong thiết lập CodeDeploy đã xong.

2.3 CodePipeline - Thiết lập Pipeline thôi

Sẽ có vài step khi anh chị em tạo một CodePipeline, hãy chú ý các step sau:

  • Add source stage: Nhớ chọn AWS CodeCommit
    • Chọn repository và branch sẽ được theo dõi khi có thay đổi code
  • Add build stage: Skip build stage (bài viết này sẽ chưa xử lý build nhé)
  • Add deploy stage: Chọn AWS CodeDeploy
    • Chọn application và deployment group tương ứng

Sau đó, nhấn Create pipeline

Và giờ sau mỗi khi commit code hoặc có thay đổi trên branch đã được thiết lập bên trên, CodePipeline sẽ tự động triển khai lên EC2.

Để anh chị em hiểu rõ hơn, hãy xem video bên dưới nhé

CodePipeline

Tags

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.