검색

23.2.3. GCP용 OpenShift Container Platform 레지스트리 구성

download PDF

GCP(Google Cloud Platform)는 OpenShift Container Platform이 OpenShift Container Platform 컨테이너 이미지 레지스트리를 사용하여 컨테이너 이미지를 저장하는 데 사용할 수 있는 오브젝트 클라우드 스토리지를 제공합니다.

자세한 내용은 GCP 문서의 Cloud Storage를 참조하십시오.

사전 요구 사항

설치하기 전에 레지스트리 이미지를 호스팅할 버킷을 생성해야 합니다. 다음 명령은 구성된 서비스 계정을 사용하여 지역 버킷을 생성합니다.

gsutil mb -c regional -l <region> gs://ocp-registry-bucket
cat <<EOF > labels.json
{
  "ocp-cluster": "mycluster"
}
EOF
gsutil label set labels.json gs://ocp-registry-bucket
rm -f labels.json
참고

버킷 데이터는 기본적으로 Google 관리 키를 사용하여 자동으로 암호화됩니다. 데이터를 암호화하기 위해 다른 키를 지정하려면 GCP에서 사용할 수 있는 데이터 암호화 옵션을 참조하십시오.

자세한 내용은 스토리지 버킷 생성 설명서 를 참조하십시오.

절차

GCP(Google Cloud Storage) 버킷을 사용하도록 레지스트리에 대한 Ansible 인벤토리 파일을 구성하려면 다음을 수행합니다.

[OSEv3:vars]
# GCP Provider Configuration
openshift_hosted_registry_storage_provider=gcs
openshift_hosted_registry_storage_kind=object
openshift_hosted_registry_replicas=1 1
openshift_hosted_registry_storage_gcs_bucket=<bucket_name> 2
openshift_hosted_registry_storage_gcs_keyfile=<bucket_keyfile> 3
openshift_hosted_registry_storage_gcs_rootdirectory=<registry_directory> 4
1
구성할 복제본 수입니다.
2
레지스트리 스토리지를 위한 버킷 이름입니다.
3
사용자 지정 키 파일을 사용하여 데이터를 암호화하는 경우 버킷의 키 파일이 있는 설치 프로그램 호스트의 경로입니다.
4
데이터를 저장하는 데 사용되는 디렉토리입니다. /registry 기본적으로

자세한 내용은 GCP 문서의 Cloud Storage를 참조하십시오.

23.2.3.1. GCP용 OpenShift Container Platform 레지스트리 수동 구성

GCP 오브젝트 스토리지를 사용하려면 레지스트리의 구성 파일을 편집하고 레지스트리 Pod에 마운트합니다.

스토리지 드라이버 구성 파일에 대한 자세한 내용은 Google Cloud Storage Driver 설명서 를 참조하십시오.

절차

  1. 현재 /etc/registry/config.yml 파일을 내보냅니다.

    $ oc get secret registry-config \
        -o jsonpath='{.data.config\.yml}' -n default | base64 -d \
      >> config.yml.old
  2. 이전 /etc/registry/config.yml 파일에서 새 구성 파일을 만듭니다.

    $ cp config.yml.old config.yml
  3. GCP 매개변수를 포함하도록 파일을 편집합니다. 레지스트리 구성 파일의 스토리지 섹션에서 버킷 및 키 파일을 지정합니다.

    storage:
      delete:
        enabled: true
      cache:
        blobdescriptor: inmemory
      gcs:
        bucket: ocp-registry 1
        keyfile: mykeyfile 2
    1
    GCP 버킷 이름으로 바꿉니다.
    2
    JSON 형식의 개인 서비스 계정 키 파일입니다. Google 애플리케이션 기본 자격 증명을 사용하는 경우 keyfile 매개 변수를 지정하지 마십시오.
  4. registry-config 시크릿을 삭제합니다.

    $ oc delete secret registry-config -n default
  5. 업데이트된 구성 파일을 참조하도록 보안을 다시 생성합니다.

    $ oc create secret generic registry-config \
        --from-file=config.yml -n default
  6. 업데이트된 구성을 읽기 위해 레지스트리를 재배포합니다.

    $ oc rollout latest docker-registry -n default
23.2.3.1.1. 레지스트리에서 GCP 오브젝트 스토리지를 사용하고 있는지 확인합니다.

레지스트리에서 GCP 버킷 스토리지를 사용하는지 확인하려면 다음을 수행합니다.

절차

  1. GCP 스토리지를 사용하여 레지스트리를 성공적으로 배포한 후 레지스트리 deploymentconfig 는 레지스트리가 GCP 버킷 스토리지 대신 emptydir 을 사용하는 경우 정보를 표시하지 않습니다.

    $ oc describe dc docker-registry -n default
    ...
    Mounts:
      ...
      /registry from registry-storage (rw)
    Volumes:
    registry-storage:
    Type:       EmptyDir 1
    ...
    1
    Pod의 수명을 공유하는 임시 디렉터리입니다.
  2. /registry 마운트 지점이 비어 있는지 확인합니다. 이는 볼륨 GCP 스토리지에서 사용할 볼륨입니다.

    $ oc exec \
        $(oc get pod -l deploymentconfig=docker-registry \
        -o=jsonpath='{.items[0].metadata.name}')  -i -t -- ls -l /registry
    total 0
  3. 비어 있는 경우 GCP 버킷 구성이 registry-config 시크릿에서 수행되기 때문입니다.

    $ oc describe secret registry-config
    Name:         registry-config
    Namespace:    default
    Labels:       <none>
    Annotations:  <none>
    
    Type:  Opaque
    
    Data
    ====
    config.yml:  398 bytes
  4. 설치 프로그램에서 설치 설명서의 Storage 에 표시된 대로 확장 레지스트리 기능을 사용하여 원하는 구성으로 config.yml 파일을 생성합니다. 스토리지 버킷 구성이 저장된 storage 섹션을 포함하여 구성 파일을 보려면 다음을 수행합니다.

    $ oc exec \
        $(oc get pod -l deploymentconfig=docker-registry \
          -o=jsonpath='{.items[0].metadata.name}') \
      cat /etc/registry/config.yml
    
    version: 0.1
    log:
      level: debug
    http:
      addr: :5000
    storage:
      delete:
        enabled: true
      cache:
        blobdescriptor: inmemory
      gcs:
        bucket: ocp-registry
    auth:
      openshift:
        realm: openshift
    middleware:
      registry:
      - name: openshift
      repository:
      - name: openshift
        options:
          pullthrough: True
          acceptschema2: True
          enforcequota: False
      storage:
      - name: openshift

    또는 시크릿을 볼 수 있습니다.

    $ oc get secret registry-config -o jsonpath='{.data.config\.yml}' | base64 -d
    version: 0.1
    log:
      level: debug
    http:
      addr: :5000
    storage:
      delete:
        enabled: true
      cache:
        blobdescriptor: inmemory
      gcs:
        bucket: ocp-registry
    auth:
      openshift:
        realm: openshift
    middleware:
      registry:
      - name: openshift
      repository:
      - name: openshift
        options:
          pullthrough: True
          acceptschema2: True
          enforcequota: False
      storage:
      - name: openshift

    GCP 콘솔에서 스토리지를 본 다음 브라우저를 클릭하고 버킷 선택하거나 gsutil 명령을 실행하여 이미지 내보내기에 성공했는지 확인할 수 있습니다.

    $ gsutil ls gs://ocp-registry/
    gs://ocp-registry/docker/
    
    $ gsutil du gs://ocp-registry/
    7660385     gs://ocp-registry/docker/registry/v2/blobs/sha256/03/033565e6892e5cc6dd03187d00a4575720a928db111274e0fbf31b410a093c10/data
    7660385     gs://ocp-registry/docker/registry/v2/blobs/sha256/03/033565e6892e5cc6dd03187d00a4575720a928db111274e0fbf31b410a093c10/
    7660385     gs://ocp-registry/docker/registry/v2/blobs/sha256/03/
    ...

emptyDir 볼륨을 사용하는 경우 /registry 마운트 지점은 다음과 유사합니다.

$ oc exec \
    $(oc get pod -l deploymentconfig=docker-registry \
    -o=jsonpath='{.items[0].metadata.name}')  -i -t -- df -h /registry
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdc         30G  226M   30G   1% /registry


$ oc exec \
    $(oc get pod -l deploymentconfig=docker-registry \
    -o=jsonpath='{.items[0].metadata.name}')  -i -t -- ls -l /registry
total 0
drwxr-sr-x. 3 1000000000 1000000000 22 Jun 19 12:24 docker
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.