2>&1 > /dev/null

Thiết kế và triển khai hệ thống CICD với Azure Kubernetes và Azure DevOps – P1

Hi cả nhà, Mấy hôm nay mình có tập trung build 1 concept về CICD và self-hosted agent trên AKS (Azure Cluster) Tổng quan sẽ có mô hình của sự kết hợp giữa

  1. Azure DevOps Pipeline
  2. Azure Cloud Platform ( có thể sử dụng các cloud platform khác)
  3. Azure Kubernetes Cluster ( Kubernetes nào chả được 😀 )
  4. Cloudflare (free SSL tội gì không dùng , ngoài ra còn dùng để làm dashboard monitoring website/api/traffic/request)
  5. Terraform (dĩ nhiên là nó, hoặc pulumi nếu bạn thích)
  6. Ngoài ra, bạn cần có về bash/shell/kubectl command
  7. YAML - 1 trong những thứ không thể thiếu

    Tổng quan về kiến trúc !

    Tóm tắt 1 số từ viết tắt:

    • Kubernetes ~ K8S
    • Terraform ~ tf

    Tiến hành triển khai.

    1. Technical approach (Tiếp cận vấn đề kỹ thuật)
      do chúng ta thiết kế hệ thống và chạy hệ thống (workload executor hoàn toàn trên Kubernetes) trên Kubernetes, nên chúng ta cần check kỹ các release gần đây của Kubernetes, tại: https://kubernetes.io/releases/
      thật kỹ và lựa chọn việc tiếp cận vấn đề 1 cách chính xác nhất và tránh mất thời gian.
      Khi nói về việc thiết kế và chạy workload ( agent) CICD trên k8s chúng ta thường nghĩ ngay tới Dind (vì trước đây cũng như hiện tại đang sử dụng cách tiếp cận này ) - Dind là Docker in Docker.
      Tuy nhiên, K8S đã loại bỏ tính năng này từ release v19+ và office vào v1.24 , và cụ thể nói đến là docker shim interface (nó là gì, vui lòng vượt tiếng anh tại: https://kubernetes.io/docs/tasks/administer-cluster/migrating-from-dockershim/check-if-dockershim-removal-affects-you/)
      Đại loại, là

      The dockershim component of Kubernetes allows the use of Docker as a Kubernetes's container runtime. Kubernetes' built-in dockershim component was removed in release v1.24.

      và nếu bạn vẫn dùng Dind (bản chất vẫn dùng được) để build docker thì bạn sẽ gặp lỗi như sau

      can't  create unix socket /var/run/docker.sock: is a directory'

      và điều quan trọng là, dùng Dind trong 1 số tác vụ bạn cần

      root permission

      mới thực sự chạy được

bảng so sánh nhanh

| Feature/Aspect        | Docker-in-Docker (DinD)         | Kaniko                         |
|-----------------------|---------------------------------|-------------------------------|
| **Security**          | Requires privileged access, higher risk | No privileged access, more secure |
| **Resource Usage**    | Higher (full Docker daemon)     | Lower (no Docker daemon)      |
| **Compatibility**     | Full Docker feature support     | Most Docker features, some limitations |
| **Ease of Use**       | Familiar Docker CLI             | Different workflow            |
| **Performance**       | Generally faster with caching   | May be slower, caching varies |
| **CI/CD Integration** | Works with many CI/CD systems   | Best with Kubernetes-native CI/CD tools |
| **Setup Complexity**  | Higher (nested containers)      | Simpler in Kubernetes         |

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *