웹사이트 검색

Podman을 사용하여 Linux에서 Red Hat Quay 레지스트리 설정하기


레드햇 키(Red Hat Quay)는 코어OS 키(CoreOS Quay Enterprise)를 레드햇이 인수한 후 리브랜딩된 기업용 컨테이너 레지스트리입니다. 레드햇 키 레지스트리는 컨테이너를 빌드하고 저장하는 데 사용되며, 이후 쿠버네티스(Kubernetes), 오픈시프트 컨테이너 플랫폼(OpenShift Container Platform) 등과 같은 기업용 컨테이너 플랫폼의 서버로 배포됩니다.

OpenShift에 설치하려면 운영자 안내서를 확인하세요:

오픈시프트에 오퍼레이터로 Project Quay 레지스트리 설치

Quay 레지스트리의 기능

Quay의 주요 기능은 다음과 같습니다:

  • 고가용성 설계
  • 지리적 복제 지원
  • Docker v2, 스키마 2(멀티아키텍처) 지원
  • 지속적 통합 파이프라인과 최고의 통합
  • 사용자 지정 로그 회전 지원
  • 다양한 인증, 접근 방법 및 저장소 백엔드 지원
  • 보안 취약점 자동 스캔

이 가이드는 단일 인스턴스 Quay 레지스트리를 설정하는 데 사용되는 단계를 설명합니다. 이 설정은 POC(개념 증명) 목적이며, 운영 환경 설치용으로 사용되지 않습니다. 고가용성 Quay 레지스트리에 대해서는 Red Hat 공식 문서를 참조하세요.

레드햇 콰이 컴포넌트

Simple Quay 설정의 세 가지 핵심 구성 요소는 다음과 같습니다:

  • 데이터베이스: Red Hat Quay에서 주요 메타데이터 저장소로 사용됨(이미지 저장용은 아님).
  • Redis: 실시간 이벤트를 제공하기 위한 키/값 저장소로 사용됩니다.
  • Quay (컨테이너 레지스트리): 여러 구성 요소로 이루어진 파드 내에서 Quay 컨테이너를 서비스로 실행합니다.

하드웨어 최소 요구 사항 설정

이 설정에는 다음과 같은 최소 하드웨어 요구 사항을 갖춘 물리적 또는 가상 머신이 필요합니다.

  • 메모리: 4 GB
  • CPU: 2
  • 디스크 공간: 30GB
  • 3개의 컨테이너를 실행하기 위해 Docker 저장용으로 최소 10GB의 디스크 공간
  • Quay 로컬 스토리지에는 최소 10GB의 디스크 공간이 필요합니다(CEPH 또는 기타 로컬 스토리지는 더 많은 메모리가 필요할 수 있습니다)

아래는 CentOS/RHEL/Rocky/AlmaLinux/Debian/Ubuntu 및 Arch 기반 리눅스 배포판에서 Red Hat Quay 레지스트리를 설치하고 구성하는 데 사용되는 단계입니다.

1단계: Podman 설치

Podman은 Quay 컨테이너를 실행하는 데 사용되며, 아래 가이드를 참고하여 시스템에 설치할 수 있습니다.

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

# RHEL based systems
sudo yum -y install podman

Podman 버전을 확인하여 설치를 확인하세요:

$ podman --version
podman version 4.9.3

2단계: registry.redhat.io 인증 설정

Quay 컨테이너 이미지를 가져올 수 있으려면 registry.redhat.io에 대한 인증을 설정해야 합니다. Red Hat 컨테이너 레지스트리 인증 절차를 따르세요. 이전 버전의 Red Hat Quay에서는 이미지가 Quay.io에 호스팅되었습니다.

다음 명령어를 실행하여 레지스트리에 로그인하세요:

sudo podman login registry.redhat.io

사용자 이름(username)과 비밀번호(password)를 입력하라는 메시지가 표시됩니다.

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

3단계: PostgreSQL 데이터베이스 설정

Quay는 메타데이터를 저장하기 위해 데이터베이스를 사용합니다. 이 글에서는 PostgreSQL을 사용할 것입니다.

quay PostgreSQL 데이터를 위한 디렉토리를 생성합니다.

sudo mkdir -p ~/quay/postgres

적절한 권한을 설정하려면 다음 명령어를 실행하세요.

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

아래 명령어는 사용자 이름, 비밀번호, 데이터베이스 이름과 포트를 지정하고 데이터베이스 데이터를 위한 볼륨 정의와 함께 Postgres 컨테이너를 시작하는 데 사용됩니다:

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

컨테이너 상태 확인:

$ 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

Quay 컨테이너에 필요한 Postgres pg_trgm 모듈을 설치하세요.

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

4단계: Redis 서버 설정

레드햇 Quay는 라이브 빌더 로그를 위한 키-값 저장소로 Redis를 사용합니다. 우리는 Podman을 사용하여 레드햇 Quay용 Redis 컨테이너를 배포할 예정입니다.

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

Redis 컨테이너가 성공적으로 시작되었는지 확인하세요

$ 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

단계 5: 컨테이너에서 Red Hat Quay 배포

Quay를 배포하기 전에 다음 전제 조건이 충족되었는지 확인하세요:

  • Red Hat Quay 데이터베이스가 실행 중입니다.
  • Redis 서버가 실행 중입니다.
  • Red Hat Quay 엔드포인트(FQDN)를 구성합니다. 이 예제에서는 quay.computingforgeeks.com을 사용하고 있습니다.

DNS 서버가 없는 경우, IP 주소와 로컬 호스트 이름을 /etc/hosts에 추가하세요

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

레지스트리 이미지를 저장할 로컬 디렉토리를 만드세요

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

Red Hat Quay 구성 번들을 저장할 디렉토리를 만드세요:

sudo mkdir ~/quay/config

Red Hat Quay 컨테이너를 시작하려면 구성 파일이 필요합니다. Quay를 위한 최소 구성 파일을 생성하세요.

sudo vim ~/quay/config/config.yaml

다음 내용을 추가하고 수정하십시오. 여기서는 /etc/hosts 파일에 구성된 대로 호스트 이름 quay.example.com을 사용하고 있습니다.

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

다음 명령어를 실행하여 Quay 레지스트리 컨테이너를 시작하세요:

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

실행 중인 컨테이너를 나열하려면 다음 명령어를 실행하세요:

$ 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

다음 명령어를 사용하여 컨테이너 시작 로그를 확인할 수 있습니다:

sudo podman logs quay

단계 6: 레드햇 퀘이 사용하기

방화벽에서 필요한 모든 포트를 열어주세요:

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

다음 curl 명령어를 실행하여 사용자 이름, 비밀번호, 이메일 및 액세스 토큰을 가진 새 사용자를 생성하세요:

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

장소 :

  • quay.example.com은 Quay 서버 호스트 이름입니다
  • quayadmin는 사용자 이름입니다
  • Str0ngAdminPassw0rd는 관리자 계정 비밀번호입니다
  • [email 은 관리자 사용자의 이메일 주소입니다

성공하면 사용자 이름, 이메일, 암호화된 비밀번호가 포함된 객체를 받게 됩니다. 예시는 다음과 같습니다:

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

웹 브라우저를 열고 Red Hat Quay 레지스트리 사용자 인터페이스에 http://quay.example.com에서 접속하세요. 도메인은 DNS 서버 또는 /etc/hosts 파일에 매핑된 올바른 서버 호스트 이름으로 변경하세요. 동일한 FQDN이 config.yaml 파일에도 구성되어야 합니다.

생성한 사용자 이름과 비밀번호로 로그인하세요.

리포지토리에 대한 새 조직을 «새 조직 만들기»에서 만들 수 있습니다

조직 이름을 입력하고 “조직 생성“을 클릭하세요

조직 내에서 이제 “새 저장소 만들기” 버튼을 사용하여 저장소를 생성할 수 있습니다.

저장소 이름을 지정하고 비공개 또는 공개를 선택하세요. Dockerfile로 초기화하거나 Git 저장소와 연결할 수도 있습니다.

귀하의 저장소를 사용할 준비가 되었습니다.

Quay 사용 방법에 대한 공식 문서 페이지를 방문하세요.

더 읽기,

  • 페도라에서 도커 레지스트리 설치 및 사용
  • 우분투에서 도커 프라이빗 레지스트리 설정하는 방법
  • Rocky/AlmaLinux에 Docker 레지스트리 설치 및 구성