Giới Thiệu Harbor
Harbor là gì?
Harbor là một giải pháp Docker Registry mã nguồn mở mạnh mẽ, được thiết kế để bảo vệ các artifact (các thành phần của ứng dụng như container image, Helm chart, v.v.) bằng cách áp dụng các chính sách kiểm soát truy cập dựa trên vai trò (RBAC) và quét lỗ hổng bảo mật. Không chỉ vậy, Harbor còn hỗ trợ ký các Docker image để đảm bảo chúng là nguồn đáng tin cậy, giúp bạn luôn yên tâm về tính toàn vẹn của những gì mình triển khai.
Tại sao nên chọn Harbor?
Harbor đã chính thức phát hành từ Cloud Native Computing Foundation (CNCF) – một tổ chức lớn trong cộng đồng mã nguồn mở, điều này chứng minh rằng Harbor không chỉ là một công cụ thông thường mà còn mang đến sự tin cậy, tính bảo mật và hiệu suất cao. Với Harbor, bạn có thể đảm bảo việc quản lý và triển khai artifact một cách nhất quán và an toàn trên cả nền tảng Kubernetes và Docker, bất kể là trên cloud hay hệ thống On-Premise.
Harbor hoạt động như thế nào?
Harbor được triển khai như một tập hợp các container Docker, do đó, bạn có thể dễ dàng cài đặt và triển khai nó trên bất kỳ hệ điều hành Linux nào có hỗ trợ Docker. Điều kiện tiên quyết chỉ đơn giản là máy chủ của bạn cần được cài đặt Docker và Docker Compose. Sau khi cài đặt, Harbor sẽ giúp bạn quản lý Docker image không chỉ dễ dàng mà còn an toàn hơn bao giờ hết.
Vòng Đời Của Container Và Images Trong Harbor
-
Registry:
- Là kho lưu trữ các image của container. Đây là nơi quản lý, phân phối và áp dụng các chính sách RBAC (Role-Based Access Control) cho việc truy cập và sử dụng images.
-
Quy trình Push:
- Push (Đẩy): Sau khi image được xây dựng (build) từ Dockerfile, nó sẽ được tag và commit.
- Sau đó, image có thể được save và đẩy (push) lên Registry để lưu trữ. Image có thể được lưu dưới dạng tar archive trước khi push lên Registry.
-
Quy trình Pull:
- Pull (Kéo): Khi cần sử dụng, image từ Registry sẽ được load về hệ thống.
- Image này sẽ được chạy (run) để tạo thành container, với các hành động như start, stop, restart được thực hiện.
- Quy trình này cũng cho phép lưu lại container dưới dạng tar archive để sử dụng hoặc lưu trữ về sau.
Các Thành Phần Chính Của Harbor
Thành phần | Mô tả |
---|---|
Postgresql | Hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở. Trong Harbor, PostgreSQL được sử dụng để lưu trữ dữ liệu cấu hình và quản lý thông tin của hệ thống như tài khoản người dùng, quyền truy cập và thông tin về các artifacts (images, chart, v.v.). |
Redis | Hệ thống lưu trữ dữ liệu trên bộ nhớ đệm (cache) mã nguồn mở, được sử dụng để tối ưu hóa hiệu suất bằng cách giảm tải công việc cho cơ sở dữ liệu chính. Harbor sử dụng Redis để lưu trữ các phiên làm việc (session) và các thông tin khác nhằm cải thiện tốc độ phản hồi. |
Beego | Framework viết bằng Go dành cho việc phát triển ứng dụng web. Harbor sử dụng Beego để quản lý giao diện lập trình ứng dụng (API) của hệ thống, cung cấp nền tảng cho các tính năng của Harbor thông qua các API giao tiếp với người dùng và các dịch vụ khác. |
Distribution/Distribution | Thành phần của Docker Registry, một thành phần quan trọng trong Harbor, giúp quản lý và phân phối các artifacts như container images. Thành phần này giúp đảm bảo rằng các hình ảnh Docker có thể được lưu trữ và phân phối đến các máy chủ khác một cách an toàn và hiệu quả. |
Helm | Công cụ quản lý package cho Kubernetes. Trong Harbor, Helm được sử dụng để quản lý các chart, cho phép người dùng lưu trữ, chia sẻ và triển khai các ứng dụng trên Kubernetes thông qua các Helm chart. |
Swagger-ui | Công cụ hiển thị giao diện đồ họa cho API, cho phép người dùng tương tác trực tiếp với API mà không cần phải sử dụng dòng lệnh. Harbor sử dụng Swagger-UI để cung cấp cho người dùng và nhà phát triển một công cụ trực quan để khám phá và thử nghiệm API của Harbor. |
Kiến Trúc Harbor
Kiến trúc tổng quan của hệ thống Harbor, một registry quản lý container images, tích hợp với nhiều dịch vụ khác nhau để cung cấp các tính năng quản lý, bảo mật, và phân phối images. Dưới đây là mô tả chi tiết các thành phần trong kiến trúc này:
Consumers
- Web Portal: Cung cấp giao diện người dùng để quản lý các tác vụ như quản lý dự án, người dùng, chính sách, và xem logs.
- Kubelet: Sử dụng cho các tác vụ tương tác với Kubernetes.
- Helm: Để quản lý và triển khai các ứng dụng trong Kubernetes dưới dạng Helm charts.
- Docker/notary client: Sử dụng Docker client để đẩy/pull các images và notary client để quản lý chữ ký tin cậy.
Identity Providers
- AD/LDAP: Hỗ trợ tích hợp với Active Directory (AD) hoặc Lightweight Directory Access Protocol (LDAP) để xác thực người dùng.
- OIDC: OpenID Connect, một giao thức xác thực dựa trên OAuth 2.0, cung cấp cơ chế Single Sign-On (SSO).
Fundamental Services
Các dịch vụ chính trong Harbor bao gồm:
- API Routing: Định tuyến các API yêu cầu đến các dịch vụ tương ứng.
- Core:
- Authentication & Authorization: Dịch vụ xác thực và cấp quyền.
- Config Management: Quản lý cấu hình của hệ thống.
- Replication: Tính năng sao chép images giữa các registry khác nhau.
- Namespace Management: Quản lý tên miền và các dự án (projects).
- Trust Handler: Quản lý các chữ ký tin cậy của images.
- Chart Service: Dịch vụ quản lý các Helm charts.
- Scanner: Dịch vụ quét bảo mật cho các container images.
- Job Service: Quản lý các tác vụ định kỳ hoặc theo yêu cầu.
- GC Controller: Dịch vụ dọn dẹp rác (Garbage Collector) cho các images và artifacts không còn sử dụng.
- Logs: Ghi lại và lưu trữ logs hoạt động của hệ thống.
Data Access Layer
- k-v storage: Dịch vụ lưu trữ dữ liệu dạng khóa-giá trị sử dụng Redis.
- Local/Remote Storage: Dịch vụ lưu trữ dữ liệu cục bộ hoặc từ xa (hỗ trợ block, file, object).
- SQL Database: Sử dụng PostgreSQL để lưu trữ dữ liệu quan hệ của hệ thống.
- Docker Registry: Sử dụng để lưu trữ container images.
- Chart Museum: Lưu trữ và quản lý Helm charts.
- Clair: Dịch vụ quét lỗ hổng bảo mật trong container images.
- Notary: Cung cấp chữ ký số và đảm bảo tính tin cậy cho images.
Packaging
- Docker: Cung cấp các tùy chọn cài đặt offline và online cho Docker.
- K8s: Hỗ trợ triển khai Harbor bằng Helm chart trong Kubernetes.
- Cloud Foundry: Hỗ trợ cài đặt Harbor thông qua Bosh-release trên Cloud Foundry.
Yêu Cầu Tài Nguyên, Phần Mềm, Mạng Cho Harbor
Thông số kỹ thuật |
Tối thiểu |
Khuyến nghị |
CPU |
2 CPU |
4 CPU |
Mem |
4 GB |
8 GB |
Disk |
40 GB |
160 GB |
Phần mềm |
Phiên bản |
Mô tả |
Version 20.10.10-ce+ or higher |
Chi tiết thành phần Docker Engine documentation |
|
docker-compose (v1.18.0+) hoặc docker compose v2 (docker-compose-plugin) |
Chi tiết thành phần Docker Compose documentation |
|
OpenSSL |
Mới nhất theo phiên bản cài đặt hiện tại |
Sử dụng để tạo certificate và key cho Harbor |
Cổng | Giao thức | Mô tả |
---|---|---|
443 | HTTPS | Harbor portal và core API cho truy cập HTTPS. Bạn có thể thay đổi port này trong cấu hình. |
4443 | HTTPS | Kết nối tới Docker Content Trust service của Harbor. Bạn có thể thay đổi port này trong cấu hình. |
80 | HTTP | Harbor portal và core API cho truy cập HTTP. Bạn có thể thay đổi port này trong cấu hình. |
Ở phần tiếp theo, chúng ta sẽ đi tiếp chuỗi Series [Harbor] cho Cài Đặt Và Cấu Hình Harbor
Mời các bạn đón theo dõi cập nhật mới nhé!