24.4.3. Microsoft Azure용 OpenShift Container Platform 레지스트리 구성


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

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

Ansible을 사용하거나 레지스트리 구성 파일을 구성하여 레지스트리를 수동으로 구성할 수 있습니다.

사전 요구 사항

설치하기 전에 레지스트리 이미지를 호스팅할 스토리지 계정을 생성해야 합니다. 다음 명령은 이미지 스토리지에 설치하는 동안 사용되는 스토리지 계정을 생성합니다.

Microsoft Azure Blob 스토리지를 사용하여 컨테이너 이미지를 저장할 수 있습니다. OpenShift Container Platform 레지스트리는 Blob 스토리지를 사용하여 관리자의 개입 없이 레지스트리의 크기를 동적으로 확장할 수 있습니다.

  1. Azure 스토리지 계정을 생성합니다.

    az storage account create
    --name <account_name> \
    --resource-group <resource_group> \
    --location <location> \
    --sku Standard_LRS

    이렇게 하면 계정 키가 생성됩니다. 계정 키를 보려면 다음을 수행합니다.

    az storage account keys list \
        --account-name <account-name> \
        --resource-group <resource-group> \
        --output table
    
    KeyName    Permissions    Value
    key1       Full           <account-key>
    key2       Full           <extra-account-key>

OpenShift Container Platform 레지스트리 구성에는 하나의 계정 키 값만 필요합니다.

옵션 1: Ansible을 사용하여 Azure용 OpenShift Container Platform 레지스트리 구성

절차

  1. 스토리지 계정을 사용하도록 레지스트리에 대한 Ansible 인벤토리를 구성합니다.

    [OSEv3:vars]
    # Azure Registry Configuration
    openshift_hosted_registry_replicas=1 1
    openshift_hosted_registry_storage_kind=object
    openshift_hosted_registry_storage_azure_blob_accountkey=<account_key> 2
    openshift_hosted_registry_storage_provider=azure_blob
    openshift_hosted_registry_storage_azure_blob_accountname=<account_name> 3
    openshift_hosted_registry_storage_azure_blob_container=<registry> 4
    openshift_hosted_registry_storage_azure_blob_realm=core.windows.net
    1
    구성할 복제본 수입니다.
    2
    <account-name>과 연결된 계정 키입니다.
    3
    스토리지 계정 이름입니다.
    4
    기본적으로 데이터를 저장하는 데 사용되는 디렉토리

옵션 2: Microsoft Azure용 OpenShift Container Platform 레지스트리 수동 구성

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

절차

  1. 현재 config.yml 을 내보냅니다 :

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

    $ cp config.yml.old config.yml
  3. Azure 매개변수를 포함하도록 파일을 편집합니다.

    storage:
      delete:
        enabled: true
      cache:
        blobdescriptor: inmemory
      azure:
        accountname: <account-name> 1
        accountkey: <account-key> 2
        container: registry 3
        realm: core.windows.net 4
    1
    을 스토리지 계정 이름으로 바꿉니다.
    2
    <account-name>과 연결된 계정 키입니다.
    3
    기본적으로 데이터를 저장하는 데 사용되는 디렉토리
    4
    기본적으로 스토리지 영역 core.windows.net
  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

레지스트리에서 Blob 오브젝트 스토리지를 사용하고 있는지 확인

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

절차

  1. 레지스트리 배포가 완료되면 레지스트리 deploymentconfig 에 Microsoft Azure Blob 스토리지 대신 emptydir 을 사용하는 것이 항상 표시됩니다.

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

    $ oc exec \
        $(oc get pod -l deploymentconfig=docker-registry \
        -o=jsonpath='{.items[0].metadata.name}')  -i -t -- ls -l /registry
    total 0
  3. 비어 있는 경우 Microsoft Azure blob 구성이 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
        azure:
          accountname: registry
          accountkey: uZekVBJBa6xzwAqK8EDz15/hoHUoc8I6cPfP31ZS+QOSxLfo7WT7CLrVPKaqvtNTMgztxH7CGjYfpFRNUhvMiA==
          container: registry
          realm: core.windows.net
      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
      azure:
        accountname: registry
        accountkey: uZekVBJBa6xzwAqK8EDz15/hoHUoc8I6cPfP31ZS+QOSxLfo7WT7CLrVPKaqvtNTMgztxH7CGjYfpFRNUhvMiA==
        container: registry
        realm: core.windows.net
    auth:
      openshift:
        realm: openshift
    middleware:
      registry:
      - name: openshift
      repository:
      - name: openshift
        options:
          pullthrough: True
          acceptschema2: True
          enforcequota: False
      storage:
      - name: openshift

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.