Tìm kiếm trang web

Cài đặt Red Hat Quay Registry trên Linux bằng Podman


Red Hat Quay là một kho chứa container chất lượng doanh nghiệp, được đổi tên sau khi Red Hat mua lại CoreOS Quay Enterprise. Kho chứa Red Hat Quay được sử dụng để xây dựng và lưu trữ các container, sau đó được triển khai lên các máy chủ trên các nền tảng container doanh nghiệp của bạn như Kubernetes, OpenShift Container Platform, v.v.

Kiểm tra hướng dẫn của Nhà cung cấp để cài đặt trên OpenShift:

Cài đặt Project Quay Registry trên OpenShift bằng Operator

Các tính năng của Quay Registry

Các tính năng nổi bật của Quay bao gồm:

  • Thiết kế khả dụng cao
  • Hỗ trợ nhân bản địa lý
  • Hỗ trợ Docker v2, schema 2 (đa kiến trúc)
  • Tích hợp tốt nhất với các pipeline Tích hợp liên tục
  • Hỗ trợ xoay vòng nhật ký tùy chỉnh
  • Hỗ trợ nhiều phương thức xác thực, truy cập và hệ thống lưu trữ khác nhau
  • Quét tự động để phát hiện các lỗ hổng bảo mật

Hướng dẫn này sẽ thảo luận về các bước để thiết lập một phiên bản Quay Registry đơn lẻ. Cài đặt này dành cho mục đích chứng minh khái niệm (POC) và không nhằm sử dụng như một cài đặt sản xuất. Để có Quay registry khả dụng cao, hãy tham khảo tài liệu chính thức của Red Hat.

Các thành phần của Red Hat Quay

Ba thành phần cốt lõi của cài đặt Simple Quay là:

  • Cơ sở dữ liệu: Được Red Hat Quay sử dụng như kho lưu trữ siêu dữ liệu chính (không dùng để lưu trữ hình ảnh).
  • Redis: Được sử dụng như một kho lưu trữ khóa/giá trị để cung cấp các sự kiện thời gian thực.
  • Quay (đăng ký container): Chạy container quay như một dịch vụ, bao gồm nhiều thành phần trong pod.

Cài đặt Yêu cầu Phần cứng Tối thiểu

Cài đặt này yêu cầu một máy vật lý hoặc ảo với các yêu cầu phần cứng tối thiểu sau.

  • Bộ nhớ: 4 GB
  • CPU: 2
  • Dung lượng đĩa: 30GB
  • Ổ đĩa trống ít nhất 10GB để lưu Docker (để chạy 3 container)
  • Ít nhất 10GB dung lượng ổ đĩa để lưu trữ Quay cục bộ (CEPH hoặc bộ lưu trữ cục bộ khác có thể yêu cầu nhiều bộ nhớ hơn)

Dưới đây là các bước để cài đặt và cấu hình Red Hat Quay Registry trên các bản phân phối Linux dựa trên CentOS/RHEL/Rocky/AlmaLinux/Debian/Ubuntu và Arch.

Bước 1: Cài đặt Podman

Podman được sử dụng để chạy các container Quay, cài đặt nó trên hệ thống của bạn bằng các hướng dẫn dưới đây của chúng tôi.

# Debian-based systems
sudo apt update && sudo apt install podman

# RHEL based systems
sudo yum -y install podman

Xác nhận cài đặt bằng cách kiểm tra phiên bản của Podman:

$ podman --version
podman version 4.9.3

Bước 2: Thiết lập xác thực registry.redhat.io

Để có thể kéo các hình ảnh container từ Quay, bạn cần thiết lập xác thực với registry.redhat.io. Hãy làm theo quy trình Xác thực Red Hat Container Registry. Trong các phiên bản Red Hat Quay cũ hơn, các hình ảnh được lưu trữ trên Quay.io.

Chạy lệnh sau để đăng nhập vào registry:

sudo podman login registry.redhat.io

Bạn sẽ nhận được một thông báo để nhập tên đăng nhập và mật khẩu của mình.

Username: <your-redhat-account-username>
Password: <your-redhat-account-password>
Login Succeeded!

Bước 3: Thiết lập cơ sở dữ liệu PostgreSQL

Quay sử dụng cơ sở dữ liệu để lưu trữ siêu dữ liệu. Bài viết này sẽ sử dụng PostgreSQL.

Tạo thư mục cho dữ liệu PostgreSQL của Quay.

sudo mkdir -p ~/quay/postgres

Chạy các lệnh sau để thiết lập quyền thích hợp.

sudo setfacl -m u:26:-wx ~/quay/postgres

Các lệnh dưới đây được sử dụng để khởi động container Postgres, chỉ định tên người dùng, mật khẩu, tên cơ sở dữ liệu và cổng, cùng với định nghĩa volume cho dữ liệu cơ sở dữ liệu:

sudo podman run -d --name postgresql-quay \
  -e POSTGRESQL_USER=quay \
  -e POSTGRESQL_PASSWORD=Str0ngQuayPass0rd \
  -e POSTGRESQL_DATABASE=quay \
  -e POSTGRESQL_ADMIN_PASSWORD=Str0ngAdminPass0rd \
  -p 5432:5432 \
  -v ~/quay/postgres:/var/lib/pgsql/data:Z \
  registry.redhat.io/rhel8/postgresql-16

Kiểm tra trạng thái container:

$ sudo podman ps
CONTAINER ID  IMAGE                                          COMMAND         CREATED         STATUS         PORTS                   NAMES
1f9e6943b7ec  registry.redhat.io/rhel8/postgresql-16:latest  run-postgresql  57 seconds ago  Up 57 seconds  0.0.0.0:5432->5432/tcp  postgresql-quay

Cài đặt module Postgres pg_trgm cần thiết cho container Quay.

sudo podman exec -it postgresql-quay /bin/bash -c 'echo "CREATE EXTENSION IF NOT EXISTS pg_trgm" | psql -d quay -U postgres'

Bước 4: Thiết lập Máy chủ Redis

Red Hat Quay sử dụng Redis như một kho lưu trữ key-value cho các nhật ký của trình tạo trực tiếp. Chúng ta sẽ triển khai container Redis cho Red Hat Quay bằng Podman.

sudo podman run -d --name redis-quay \
  -p 6379:6379 \
  -e REDIS_PASSWORD=StrongRedisPassw0rd \
  registry.redhat.io/rhel8/redis-6

Kiểm tra xem container Redis đã khởi động thành công chưa

$ sudo podman ps
CONTAINER ID  IMAGE                                          COMMAND         CREATED        STATUS        PORTS                   NAMES
1f9e6943b7ec  registry.redhat.io/rhel8/postgresql-16:latest  run-postgresql  4 minutes ago  Up 4 minutes  0.0.0.0:5432->5432/tcp  postgresql-quay
2b1e65c3fe6f  registry.redhat.io/rhel8/redis-6:latest        run-redis       7 seconds ago  Up 8 seconds  0.0.0.0:6379->6379/tcp  redis-quay

Bước 5: Triển khai Red Hat Quay trong Container

Trước khi triển khai Quay, hãy đảm bảo rằng các điều kiện tiên quyết sau đã được đáp ứng:

  • Cơ sở dữ liệu Red Hat Quay đang chạy.
  • Máy chủ Redis đang chạy.
  • Cấu hình điểm cuối Red Hat Quay (FQDN). Trong ví dụ này, chúng tôi đang sử dụng quay.computingforgeeks.com

Nếu bạn không có máy chủ DNS, hãy thêm địa chỉ IP và tên máy chủ cục bộ vào /etc/hosts của bạn

$ sudo vim /etc/hosts
192.168.1.25 quay.example.com

Tạo một thư mục cục bộ để lưu trữ các hình ảnh đăng ký

sudo mkdir  ~/quay/storage
sudo setfacl -m u:1001:-wx ~/quay/storage

Tạo một thư mục để lưu trữ gói cấu hình Red Hat Quay:

sudo mkdir ~/quay/config

Container Red Hat Quay yêu cầu tệp cấu hình để khởi động. Hãy tạo một tệp cấu hình tối thiểu cho Quay.

sudo vim ~/quay/config/config.yaml

Thêm và chỉnh sửa các nội dung sau. Ở đây chúng tôi đang sử dụng tên máy chủ quay.example.com như được cấu hình trong tập tin /etc/hosts.

BUILDLOGS_REDIS:
    host: quay.example.com
    password: StrongRedisPassw0rd
    port: 6379
CREATE_NAMESPACE_ON_PUSH: true
DATABASE_SECRET_KEY: a8c2744b-7004-4af2-bcee-e417e7bdd235
DB_URI: postgresql://quay:Str0ngQuayPass0rd@quay.example.com:5432/quay
DISTRIBUTED_STORAGE_CONFIG:
    default:
        - LocalStorage
        - storage_path: /datastorage/registry
DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS: []
DISTRIBUTED_STORAGE_PREFERENCE:
    - default
FEATURE_MAILING: false
SECRET_KEY: e9bd34f4-900c-436a-979e-7530e5d74ac8
SERVER_HOSTNAME:  quay.example.com
SETUP_COMPLETE: true
USER_EVENTS_REDIS:
    host: quay.example.com
    password: StrongRedisPassw0rd
    port: 6379
FEATURE_USER_INITIALIZE: true
FEATURE_USER_CREATION: false
SUPER_USERS:
  - quayadmin

Bắt đầu container đăng ký Quay bằng cách chạy các lệnh sau:

sudo podman run -d -p 80:8080 -p 443:8443  \
   --name=quay \
   -v ~/quay/config:/conf/stack:Z \
   -v ~/quay/storage:/datastorage:Z \
   registry.redhat.io/quay/quay-rhel8:v3.11

Để liệt kê các container đang chạy, hãy chạy các lệnh sau:

$ sudo podman ps
CONTAINER ID  IMAGE                                          COMMAND         CREATED        STATUS        PORTS                                        NAMES
1f9e6943b7ec  registry.redhat.io/rhel8/postgresql-16:latest  run-postgresql  10 hours ago   Up 10 hours   0.0.0.0:5432->5432/tcp                       postgresql-quay
2b1e65c3fe6f  registry.redhat.io/rhel8/redis-6:latest        run-redis       10 hours ago   Up 10 hours   0.0.0.0:6379->6379/tcp                       redis-quay
cc0dcad6ad08  registry.redhat.io/quay/quay-rhel8:v3.11       registry        8 seconds ago  Up 8 seconds  0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp  quay

Bạn có thể kiểm tra nhật ký khởi động của container bằng cách:

sudo podman logs quay

Bước 6: Sử dụng Red Hat Quay

Mở tất cả các cổng cần thiết trong tường lửa:

sudo firewall-cmd --permanent --add-service={http,https}
sudo firewall-cmd --reload

Tạo một người dùng mới với tên đăng nhập, mật khẩu, email và mã truy cập bằng cách chạy các lệnh curl sau:

curl -X POST -k  http://quay.example.com/api/v1/user/initialize --header 'Content-Type: application/json' \
--data '{ "username": "quayadmin", "password":"Str0ngAdminPassw0rd", "email": "[email ", "access_token": true}'

Ở đâu :

  • quay.example.com là tên máy chủ của Quay
  • quayadmin là tên đăng nhập
  • Str0ngAdminPassw0rd là mật khẩu người dùng quản trị
  • [email là địa chỉ email của người dùng quản trị

Nếu thành công, bạn sẽ nhận được một đối tượng với tên người dùng, email và mật khẩu đã được mã hóa. Xem ví dụ:

{"access_token":"FAPE5IUZUV607OSJY4OKA2MUD2Z6IZQ1C5GNBCOI","email":"[email ","encrypted_password":"cGzgFGyVT0zPuvhUEMha/bk+Kd7JUT7+JJ3lw6R1Ps4UF5jONA4lOcMjqocIkqUtk3CFf70m/ywe0BGEgQPFsw==","username":"quayadmin"}

Mở trình duyệt web của bạn và truy cập giao diện người dùng của registry Red Hat Quay tại http://quay.example.com. Thay thế tên miền bằng hostname máy chủ chính xác của bạn như được ánh xạ trong máy chủ DNS hoặc tệp /etc/hosts. Cùng một FQDN cũng nên được cấu hình trong tệp config.yaml.

Đăng nhập bằng tên người dùng đã tạo và mật khẩu của nó.

Bạn có thể tạo một tổ chức mới cho các kho lưu trữ của mình dưới «Tạo Tổ Chức Mới»

Đặt tên cho tổ chức và nhấn “Tạo Tổ Chức”

Trong tổ chức, bạn hiện có thể tạo kho lưu trữ bằng cách sử dụng nút “Tạo Kho Lưu Trữ Mới”.

Đặt tên cho kho lưu trữ và chọn quyền riêng tư hoặc công khai. Bạn cũng có thể khởi tạo nó với Dockerfile hoặc liên kết với kho Git.

Kho lưu trữ của bạn đã sẵn sàng để sử dụng.

Truy cập các trang tài liệu chính thức của Quay để biết cách sử dụng.

Đọc thêm,

  • Cài đặt và sử dụng Docker Registry trên Fedora
  • Cách Cài Đặt Docker Private Registry trên Ubuntu
  • Cài đặt và Cấu hình Docker Registry trên Rocky/AlmaLinux