10.3. Red Hat Quay Operator를 사용하여 geo-replication
위에 표시된 예제에서 Red Hat Quay Operator는 공통 데이터베이스 및 공통 Redis 인스턴스와 함께 두 개의 별도의 지역에 배포됩니다. 로컬화된 이미지 스토리지는 각 리전에 제공되며, 사용 가능한 가장 가까운 스토리지 엔진에서 이미지 풀이 제공됩니다. 컨테이너 이미지 푸시는 Quay 인스턴스의 기본 스토리지 엔진에 기록되며 백그라운드에서 다른 스토리지 엔진에 복제됩니다.
Operator에서 Clair 보안 스캐너와 해당 데이터베이스를 별도로 관리하므로 Clair 데이터베이스를 관리하지 않도록 geo-replication 설정을 활용할 수 있습니다. 대신 외부 공유 데이터베이스가 사용됩니다. Red Hat Quay와 Clair는 Red Hat Quay 3.x 테스트 매트릭스 에서 찾을 수 있는 PostgreSQL의 여러 공급업체와 공급업체를 지원합니다. 또한 Operator는 배포에 삽입할 수 있는 사용자 지정 Clair 구성을 지원하므로 사용자가 외부 데이터베이스의 연결 자격 증명을 사용하여 Clair를 구성할 수 있습니다.
10.3.1. Openshift에서 지역 복제 설정 링크 복사링크가 클립보드에 복사되었습니다!
절차
Quay postgres 인스턴스를 배포합니다.
- 데이터베이스에 로그인
Quay의 데이터베이스 생성
CREATE DATABASE quay;데이터베이스 내에서 pg_trm 확장을 활성화합니다.
\c quay; CREATE EXTENSION IF NOT EXISTS pg_trgm;
Redis 인스턴스를 배포합니다.
참고- 클라우드 공급자에 자체 서비스가 있는 경우 Redis 인스턴스를 배포할 필요가 없습니다.
- 빌더를 활용하는 경우 Redis 인스턴스를 배포해야 합니다.
- Redis의 VM 배포
- Quay가 실행 중인 클러스터에서 액세스할 수 있는지 확인합니다.
- 6379/TCP 포트가 열려 있어야 합니다.
인스턴스 내에서 Redis 실행
sudo dnf install -y podman podman run -d --name redis -p 6379:6379 redis
각 클러스터에 하나씩 두 개의 오브젝트 스토리지 백엔드 생성
이상적으로 하나의 오브젝트 스토리지 버킷은 1차 클러스터(기본)에 근접하고 다른 오브젝트 스토리지 버킷은 2차 클러스터(초)에 더 가깝게 실행됩니다.
- 환경 변수 덮어쓰기를 사용하여 동일한 구성 번들이 있는 클러스터를 배포하여 개별 클러스터에 적합한 스토리지 백엔드를 선택합니다.
- 클러스터에 단일 진입점을 제공하도록 로드 밸런서 구성
10.3.1.1. 설정 링크 복사링크가 클립보드에 복사되었습니다!
config.yaml 파일은 클러스터 간에 공유되며 일반 PostgreSQL, Redis 및 스토리지 백엔드에 대한 세부 정보를 포함합니다.
config.yaml
SERVER_HOSTNAME: <georep.quayteam.org or any other name>
DB_CONNECTION_ARGS:
autorollback: true
threadlocals: true
DB_URI: postgresql://postgres:password@10.19.0.1:5432/quay
BUILDLOGS_REDIS:
host: 10.19.0.2
port: 6379
USER_EVENTS_REDIS:
host: 10.19.0.2
port: 6379
DISTRIBUTED_STORAGE_CONFIG:
usstorage:
- GoogleCloudStorage
- access_key: GOOGQGPGVMASAAMQABCDEFG
bucket_name: georep-test-bucket-0
secret_key: AYWfEaxX/u84XRA2vUX5C987654321
storage_path: /quaygcp
eustorage:
- GoogleCloudStorage
- access_key: GOOGQGPGVMASAAMQWERTYUIOP
bucket_name: georep-test-bucket-1
secret_key: AYWfEaxX/u84XRA2vUX5Cuj12345678
storage_path: /quaygcp
DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS:
- usstorage
- eustorage
DISTRIBUTED_STORAGE_PREFERENCE:
- usstorage
- eustorage
FEATURE_STORAGE_REPLICATION: true
- 1
- 경로에 적절한
SERVER_HOSTNAME을 사용해야 하며 글로벌 로드 밸런서의 호스트 이름과 일치해야 합니다. - 2
- OpenShift Operator를 사용하여 배포된 Clair 인스턴스의 구성 파일을 검색하려면 Clair 구성 검색에서 참조하십시오.
configBundleSecret 을 만듭니다.
$ oc create secret generic --from-file config.yaml=./config.yaml georep-config-bundle
각 클러스터에서 configBundleSecret 을 설정하고 QUAY_DISTRIBUTED_STORAGE_PREFERENCE 환경 변수 덮어쓰기를 사용하여 해당 클러스터에 적절한 스토리지를 구성합니다.
두 배포 간의 config.yaml 파일이 일치해야 합니다. 하나의 클러스터를 변경하는 경우 다른 클러스터에서도 변경해야 합니다.
미국 클러스터
apiVersion: quay.redhat.com/v1
kind: QuayRegistry
metadata:
name: example-registry
namespace: quay-enterprise
spec:
configBundleSecret: georep-config-bundle
components:
- kind: objectstorage
managed: false
- kind: route
managed: true
- kind: tls
managed: false
- kind: postgres
managed: false
- kind: clairpostgres
managed: false
- kind: redis
managed: false
- kind: quay
managed: true
overrides:
env:
- name: QUAY_DISTRIBUTED_STORAGE_PREFERENCE
value: usstorage
- kind: mirror
managed: true
overrides:
env:
- name: QUAY_DISTRIBUTED_STORAGE_PREFERENCE
value: usstorage
+
TLS는 관리되지 않으며 경로가 관리되므로 인증서를 config 툴을 사용하거나 구성 번들에 직접 제공해야 합니다. 자세한 내용은 TLS 및 경로 구성을 참조하십시오.
유럽 클러스터
apiVersion: quay.redhat.com/v1
kind: QuayRegistry
metadata:
name: example-registry
namespace: quay-enterprise
spec:
configBundleSecret: georep-config-bundle
components:
- kind: objectstorage
managed: false
- kind: route
managed: true
- kind: tls
managed: false
- kind: postgres
managed: false
- kind: clairpostgres
managed: false
- kind: redis
managed: false
- kind: quay
managed: true
overrides:
env:
- name: QUAY_DISTRIBUTED_STORAGE_PREFERENCE
value: eustorage
- kind: mirror
managed: true
overrides:
env:
- name: QUAY_DISTRIBUTED_STORAGE_PREFERENCE
value: eustorage
+
TLS는 관리되지 않으며 경로가 관리되므로 인증서를 config 툴을 사용하거나 구성 번들에 직접 제공해야 합니다. 자세한 내용은 TLS 및 경로 구성을 참조하십시오.
10.3.2. Geo-replication을 위한 혼합 스토리지 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Quay geo-replication은 서로 다른 여러 복제 대상의 사용을 지원합니다(예: 퍼블릭 클라우드에서 AWS S3 스토리지를 사용하고 온프레미스에서 Ceph 스토리지를 사용하는 등). 이를 통해 모든 Red Hat Quay 포드 및 클러스터 노드의 모든 스토리지 백엔드에 대한 액세스 권한을 부여하는 주요 요구 사항이 복잡해집니다. 따라서 다음을 사용하는 것이 좋습니다.
- 내부 스토리지의 가시성을 방지하기 위한 VPN, 또는
- Red Hat Quay에서 사용하는 지정된 버킷에만 액세스할 수 있는 토큰 쌍
그러면 Red Hat Quay의 퍼블릭 클라우드 인스턴스가 온프레미스 스토리지에 액세스할 수 있지만 네트워크는 암호화되고 보호되며 ACL을 사용하여 보안 요구 사항을 충족합니다.
이러한 보안 조치를 구현할 수 없는 경우 두 개의 별도의 Red Hat Quay 레지스트리를 배포하고 지역 복제 대신 저장소 미러링을 사용하는 것이 좋습니다.