Mengatur Red Hat Quay Registry di Linux menggunakan Podman


Red Hat Quay adalah registri kontainer berkualitas perusahaan yang diubah mereknya setelah akuisisi CoreOS Quay Enterprise oleh Red Hat. Registri Red Hat Quay digunakan untuk membangun dan menyimpan kontainer, yang kemudian diterapkan ke server di seluruh platform kontainer perusahaan Anda seperti Kubernetes, OpenShift Container Platform, dan lain-lain.

Periksa panduan Operator untuk instalasi di OpenShift:

Pasang Proyek Quay Registry di OpenShift Dengan Operator

Fitur dari Registri Dermaga

Fitur utama dari Quay meliputi:

  • Desain ketersediaan tinggi
  • Dukungan untuk Geo-replikasi
  • Dukungan untuk Docker v2, skema 2 (multiarsitektur)
  • Integrasi terbaik dengan pipeline Continuous Integration
  • Dukungan untuk rotasi log kustom
  • Dukungan untuk berbagai metode Autentikasi, akses, dan penyimpanan
  • Pemindaian otomatis untuk kerentanan keamanan

Panduan ini akan membahas langkah-langkah yang digunakan untuk mengatur Quay Registry instance tunggal. Pengaturan ini bertujuan untuk tujuan POC dan tidak dimaksudkan untuk digunakan sebagai instalasi produksi. Untuk registry Quay yang sangat tersedia, konsultasikan dokumentasi resmi Red Hat.

Komponen Red Hat Quay

Tiga komponen inti dari pengaturan Simple Quay adalah:

  • Database: Digunakan oleh Red Hat Quay sebagai penyimpanan metadata utama (bukan untuk penyimpanan gambar).
  • Redis: Digunakan sebagai penyimpanan kunci/nilai untuk menyediakan kejadian secara waktu nyata.
  • Quay (registry kontainer): Menjalankan kontainer quay sebagai layanan, yang terdiri dari beberapa komponen di dalam pod.

Persyaratan Minimum Perangkat Keras

Pengaturan ini membutuhkan mesin fisik atau virtual dengan persyaratan perangkat keras minimum berikut.

  • Memori: 4 GB
  • CPU: 2
  • Ruang Disk: 30GB
  • Setidaknya 10GB ruang disk untuk penyimpanan Docker (untuk menjalankan 3 kontainer)
  • Setidaknya 10GB ruang disk untuk penyimpanan lokal Quay (CEPH atau penyimpanan lokal lainnya mungkin memerlukan memori lebih besar)

Berikut adalah langkah-langkah yang digunakan untuk menginstal dan mengonfigurasi Red Hat Quay Registry pada distribusi Linux berbasis CentOS/RHEL/Rocky/AlmaLinux/Debian/Ubuntu dan Arch.

Langkah 1: Pasang Podman

Podman digunakan untuk menjalankan kontainer Quay, pasang di sistem Anda menggunakan panduan kami di bawah ini.

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

# RHEL based systems
sudo yum -y install podman

Konfirmasi pemasangan dengan memeriksa versi Podman:

$ podman --version
podman version 4.9.3

Langkah 2: Atur autentikasi registry.redhat.io

Untuk bisa menarik image container Quay, Anda perlu mengatur autentikasi ke registry.redhat.io. Ikuti prosedur Autentikasi Red Hat Container Registry. Pada versi Red Hat Quay yang lebih lama, image tersebut di-host di Quay.io.

Jalankan perintah berikut untuk masuk ke registri:

sudo podman login registry.redhat.io

Anda akan diminta untuk memasukkan username dan password Anda.

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

Langkah 3: Siapkan Database PostgreSQL

Quay menggunakan database untuk menyimpan metadata. PostgreSQL akan digunakan dalam artikel ini.

Buat direktori untuk data PostgreSQL Quay.

sudo mkdir -p ~/quay/postgres

Jalankan perintah berikut untuk mengatur izin yang sesuai.

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

Perintah di bawah ini digunakan untuk memulai kontainer Postgres, dengan menentukan nama pengguna, kata sandi, nama database, dan port, serta definisi volume untuk data database:

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

Periksa status kontainer:

$ 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

Pasang modul Postgres pg_trgm yang diperlukan untuk kontainer Quay.

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

Langkah 4: Atur Server Redis

Red Hat Quay menggunakan Redis sebagai penyimpanan kunci-nilai untuk log builder langsung. Kami akan menyebarkan kontainer Redis untuk Red Hat Quay menggunakan Podman.

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

Periksa apakah kontainer Redis berhasil dijalankan

$ 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

Langkah 5: Menyebarkan Red Hat Quay dalam Kontainer

Sebelum kita dapat menjalankan Quay, pastikan persyaratan berikut terpenuhi:

  • Database Red Hat Quay sedang berjalan.
  • Server Redis sedang berjalan.
  • Konfigurasikan endpoint Red Hat Quay (FQDN). Dalam contoh ini kami menggunakan quay.computingforgeeks.com

Jika Anda tidak memiliki server DNS, tambahkan alamat IP dan nama host lokal ke /etc/hosts Anda

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

Buat direktori lokal yang akan menyimpan gambar registry

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

Buat direktori untuk menyimpan bundel konfigurasi Red Hat Quay:

sudo mkdir ~/quay/config

Kontainer Red Hat Quay membutuhkan file konfigurasi untuk memulai. Buat file konfigurasi minimal untuk Quay.

sudo vim ~/quay/config/config.yaml

Tambahkan dan ubah konten berikut. Di sini kami menggunakan hostname quay.example.com seperti yang dikonfigurasi di file /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

Mulai kontainer registri Quay dengan menjalankan perintah berikut:

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

Untuk melihat daftar kontainer yang sedang berjalan, jalankan perintah berikut:

$ 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

Anda dapat memeriksa log startup kontainer menggunakan:

sudo podman logs quay

Langkah 6: Menggunakan Red Hat Quay

Buka semua port yang diperlukan di firewall:

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

Buat pengguna baru dengan username, kata sandi, email, dan token akses dengan menjalankan perintah curl berikut:

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}'

Di mana :

  • quay.example.com adalah nama host server Quay
  • quayadmin adalah nama pengguna
  • Str0ngAdminPassw0rd adalah kata sandi pengguna admin
  • [email adalah alamat email pengguna admin

Jika berhasil, Anda akan mendapatkan sebuah objek dengan nama pengguna, email, dan kata sandi yang terenkripsi. Lihat contohnya:

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

Buka peramban web Anda dan akses antarmuka pengguna registri Red Hat Quay di http://quay.example.com. Ganti domain dengan hostname server Anda yang benar seperti yang dipetakan di server DNS atau file /etc/hosts. FQDN yang sama harus dikonfigurasi di file config.yaml.

Masuk dengan nama pengguna yang dibuat dan kata sandinya.

Anda dapat membuat organisasi baru untuk repositori Anda di bawah “Buat Organisasi Baru“

Beri nama organisasi dan klik «Buat Organisasi»

Dalam organisasi, Anda sekarang dapat membuat repositori menggunakan tombol «Buat Repositori Baru».

Beri nama pada repositori dan pilih apakah bersifat privat atau publik. Anda juga dapat menginisialisasinya dengan Dockerfile atau menautkannya dengan repositori Git.

Repositori Anda siap digunakan.

Kunjungi halaman dokumentasi resmi Quay untuk cara menggunakannya.

Lebih banyak membaca

  • Pasang dan Gunakan Docker Registry di Fedora
  • Cara Menyiapkan Docker Private Registry di Ubuntu
  • Instal dan Konfigurasi Docker Registry di Rocky/AlmaLinux