0
0
Lập trình
Admin Team
Admin Teamtechmely

Hướng Dẫn Thiết Lập Pipeline CI/CD Trên Azure Cloud

Đăng vào 6 tháng trước

• 8 phút đọc

Giới Thiệu

Triển khai mã thủ công giống như việc trông coi các máy chủ. Bạn phải cập nhật, sao chép tệp, khởi động lại dịch vụ và cầu nguyện rằng không có gì bị hỏng. Chỉ cần một lệnh bị bỏ lỡ, ứng dụng sản xuất của bạn có thể bị ngừng hoạt động.

Đó là lúc CI/CD (Tích Hợp Liên Tục và Triển Khai Liên Tục) trở nên quan trọng. Thay vì phải quản lý việc triển khai bằng tay, CI/CD tự động hóa quy trình: mã được kiểm tra, xây dựng và triển khai đến sản xuất một cách đáng tin cậy và lặp đi lặp lại.

Bạn có thể đã biết đến các công cụ như Jenkins, GitHub Actions hoặc GitLab CI/CD. Vậy tại sao lại sử dụng Azure Cloud?

Hãy nghĩ về Azure như một bộ công cụ tất cả trong một. Thay vì phải quản lý nhiều dịch vụ riêng lẻ, Azure cung cấp một môi trường liền mạch:

  • Azure Repos hoặc GitHub → lưu trữ mã của bạn
  • Azure Pipelines → tự động xây dựng & kiểm tra
  • Azure App Service / Functions / AKS → triển khai và chạy ứng dụng của bạn
  • Azure Monitor & Insights → theo dõi sức khỏe và hiệu suất

Điều này khiến Azure trở thành một lựa chọn tự nhiên nếu nhóm của bạn đã nằm trong hệ sinh thái Microsoft hoặc muốn có sự tích hợp sâu với GitHub, Visual Studio và các dịch vụ Azure khác.

Trong hướng dẫn này, chúng ta sẽ đề cập đến mọi thứ bạn cần biết để thiết lập một pipeline CI/CD trên Azure Cloud, từ những điều cơ bản đến một pipeline YAML hoạt động, cùng với một số thực tiễn tốt nhất để tránh các cạm bẫy thường gặp.

CI/CD Là Gì Trên Azure?

CI/CD trên Azure có nghĩa là sử dụng Azure DevOps (hoặc GitHub Actions, cũng được Azure hỗ trợ) để tự động hóa vòng đời phần mềm.

  • Tích Hợp Liên Tục (CI): Các nhà phát triển đẩy mã lên → pipeline tự động xây dựng, chạy thử nghiệm và tạo ra các artefact có thể triển khai.
  • Triển Khai Liên Tục (CD): Các artefact được triển khai đến môi trường staging hoặc production một cách tự động hoặc có sự phê duyệt.

Điều kỳ diệu nằm ở pipelines được định nghĩa dưới dạng mã (YAML). Các bước xây dựng và triển khai của bạn sống trong repo, vì vậy chúng được kiểm soát phiên bản, có thể tái sử dụng và chia sẻ.

Các Khối Xây Dựng Cơ Bản Của Một Pipeline Azure

Dưới đây là cái nhìn nhanh về các dịch vụ và khái niệm bạn sẽ sử dụng:

  • Azure Repos / GitHub: Kho lưu trữ mã nguồn. Bạn có thể chọn một trong hai; Azure tích hợp tự nhiên với GitHub.
  • Azure Pipelines: Trái tim của CI/CD. Chạy các bản xây dựng, thử nghiệm và triển khai thông qua cấu hình YAML.
  • Mục Tiêu Triển Khai: Azure App Service (ứng dụng web), Azure Functions (ứng dụng serverless), Azure Kubernetes Service (containers).
  • Agents: Các máy ảo chạy các tác vụ của pipeline. Bạn có thể sử dụng các agent được Microsoft lưu trữ hoặc thiết lập của riêng bạn.
  • Kết Nối Dịch Vụ: Kết nối bảo mật giữa pipeline và các tài nguyên Azure (ví dụ: App Service).
  • Môi Trường: Các nhóm logic như dev, staging, production, thường có các cổng phê duyệt.

Các Bước Thiết Lập CI/CD Trên Azure

Hãy cùng đi qua việc xây dựng một pipeline từ đầu. Trong ví dụ này, chúng ta sẽ triển khai một ứng dụng Node.js lên Azure App Service.

Các Điều Kiện Cần Thiết

  • Một tài khoản Azure (bạn có thể sử dụng phiên miễn phí).
  • Một tổ chức Azure DevOps (hoặc kho GitHub).
  • Một App Service được tạo trong Azure để lưu trữ ứng dụng.
  • Một service principal / service connection trong Azure DevOps để xác thực với Azure.

Bước 1: Kết Nối Repo Của Bạn

  • Trong Azure DevOps, tạo một dự án mới.
  • Đi đến Repos và tạo một repo mới:

Bạn cũng có thể kết nối với GitHub bằng cách điều hướng đến cài đặt dự án --> Kết nối GitHub.

Bước 2: Tạo Một Pipeline Mới

  • Điều hướng đến Pipelines → Pipelines.
  • Chọn nguồn của bạn (Azure Repos hoặc GitHub).
  • Chọn “pipeline YAML.”

Azure sẽ thậm chí gợi ý một pipeline khởi đầu nếu nó nhận ra loại dự án của bạn.

Bước 3: Định Nghĩa Các Giai Đoạn Xây Dựng và Kiểm Tra

Dưới đây là một tệp YAML mẫu (azure-pipelines.yml) cho một ứng dụng Node.js:

yaml Copy
trigger:
  branches:
    include:
      - main

pool:
  vmImage: 'ubuntu-latest'

steps:
  - task: NodeTool@0
    inputs:
      versionSpec: '14.x'
    displayName: 'Cài đặt Node.js'

  - script: |
      npm install
      npm run build
    displayName: 'Xây dựng ứng dụng'

  - script: |
      npm test
    displayName: 'Chạy kiểm tra'

  - task: AzureWebApp@1
    inputs:
      azureSubscription: 'your-azure-subscription'
      appName: 'your-app-name'
      package: '$(System.DefaultWorkingDirectory)/**/*.zip'
    displayName: 'Triển khai lên Azure App Service'

Bước 4: Thiết Lập Kết Nối Dịch Vụ

Pipeline của bạn cần quyền để triển khai.

  • Đi đến Cài đặt Dự án → Kết nối dịch vụ.
  • Tạo một kết nối Azure Resource Manager mới.
  • Sử dụng một service principal hiện có hoặc để Azure tạo một cái mới.
  • Tham chiếu kết nối trong tệp YAML của bạn (azureSubscription).

Bước 5: Chạy và Theo Dõi

  • Cam kết tệp azure-pipelines.yml của bạn.
  • Azure Pipelines sẽ tự động kích hoạt.
  • Bạn sẽ thấy nhật ký cho mỗi bước (Xây dựng, Kiểm tra, Triển khai).
  • Nếu mọi thứ diễn ra suôn sẻ, ứng dụng của bạn sẽ trực tuyến trên Azure App Service.

Cách Tất Cả Hoạt Động Cùng Nhau

Hãy đơn giản hóa:

  1. Mã được cam kết → Các nhà phát triển đẩy lên Azure Repos hoặc GitHub.
  2. Pipeline phát hiện thay đổi → Azure Pipelines tự động kích hoạt.
  3. Giai đoạn xây dựng → Ứng dụng được biên dịch, các thử nghiệm được thực hiện, artefacts được tạo ra.
  4. Giai đoạn triển khai → Artefacts được đẩy lên Azure App Service, Functions hoặc AKS.
  5. Theo dõi & phản hồi → Azure Monitor và Application Insights theo dõi sức khỏe, lỗi và hiệu suất.

Vòng phản hồi này giúp các nhà phát triển tự tin gửi đi mà không cần phải xử lý sự cố thủ công.

Các Cạm Bẫy Thường Gặp (Và Cách Tránh Chúng)

  • Quên quyền: Kết nối dịch vụ của bạn cần quyền truy cập vào nhóm tài nguyên chính xác.
  • Bỏ qua môi trường: Luôn tách biệt staging và production. Thêm các phê duyệt thủ công cho production.
  • Xây dựng phình to: Lưu trữ các phụ thuộc (npm, pip, Maven) để tăng tốc độ xây dựng.
  • Bỏ qua nhật ký: Gỡ lỗi pipeline có nghĩa là đọc nhật ký xây dựng từng dòng một. Đừng bỏ qua chúng.
  • Bí mật trong mã: Không bao giờ mã hóa cứng bí mật trong YAML. Sử dụng Azure Key Vault hoặc các nhóm biến.

THAM KHẢO

Một trong những điểm đau ít được đánh giá của CI/CD không phải là mã mà là tài liệu.

Bạn triển khai một tính năng mới, triển khai nó với Azure Pipelines... nhưng tài liệu API, READMEs hoặc ví dụ của bạn đã lỗi thời.

Đây là lúc Deepdocs, một ứng dụng gốc trên GitHub, phù hợp trong CI/CD của bạn. Ngay khi bạn đẩy mã để triển khai, DeepDocs:

  • Quét và cập nhật tài liệu khi các điểm cuối hoặc cấu hình mới được thêm vào.
  • Giữ READMEs đồng bộ với các đầu ra xây dựng.
  • Giảm thiểu tình trạng “tài liệu lỗi thời” mà nhiều dự án gặp phải.

Kết hợp Azure Pipelines với Deepdocs mang đến cho bạn cả triển khai liên tục của mãđộ chính xác liên tục của tài liệu.

Thực Tiễn Tốt Nhất Để Mở Rộng Trên Azure

  • Hạ Tầng Dưới Dạng Mã: Sử dụng các mẫu ARM, Bicep hoặc Terraform để tạo ra các môi trường có thể tái tạo.
  • Triển Khai Blue-Green hoặc Canary: Triển khai dần để giảm rủi ro. Các slot triển khai của Azure App Service làm cho điều này dễ dàng.
  • Quản Lý Bí Mật: Lưu trữ thông tin xác thực trong Key Vault, không phải YAML.
  • Bảng Điều Khiển: Sử dụng bảng điều khiển Azure DevOps để theo dõi sức khỏe của pipeline.
  • Tái Sử Dụng YAML: Phân chia pipeline của bạn thành các mẫu để cấu hình DRY.

Kết Luận

Thiết lập một pipeline CI/CD trên Azure có thể có vẻ phức tạp lúc đầu, nhưng lợi ích vượt xa nỗ lực. Thay vì phụ thuộc vào việc triển khai thủ công, bạn sẽ có một hệ thống tự động đáng tin cậy giúp việc phân phối phần mềm trở nên mượt mà và an toàn hơn.

Dưới đây là lý do tại sao điều này quan trọng:

  • Tính nhất quán – Mỗi cam kết đều trải qua cùng một bước xây dựng, kiểm tra và triển khai, giảm thiểu lỗi của con người.
  • Tốc độ – Các pipeline tự động cho phép bạn gửi tính năng nhanh hơn mà không cắt giảm chất lượng.
  • Tự tin – Các thử nghiệm và theo dõi phát hiện vấn đề sớm, giúp bạn triển khai một cách an tâm.
  • Khả năng mở rộng – Azure DevOps mở rộng từ các dự án nhỏ đến các hệ thống cấp doanh nghiệp một cách dễ dàng.
  • Tính linh hoạt – Bắt đầu đơn giản (như triển khai lên App Service) và phát triển thành các thiết lập nâng cao như triển khai blue-green hoặc hạ tầng dưới dạng mã.

Điểm mấu chốt: CI/CD trên Azure không chỉ là tự động hóa, mà là một nâng cấp về năng suất và độ tin cậy cho toàn bộ quy trình phát triển của bạn.

Vì vậy, nếu bạn chưa thử, hãy xây dựng pipeline đầu tiên của bạn trong tuần này. Bạn sẽ nhanh chóng thấy việc gửi phần mềm dễ dàng và ít căng thẳng hơn như thế nào.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào