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 스토리지를 사용하여 관리자의 개입 없이 레지스트리의 크기를 동적으로 확장할 수 있습니다.
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 레지스트리 구성
절차
스토리지 계정을 사용하도록 레지스트리에 대한 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
옵션 2: Microsoft Azure용 OpenShift Container Platform 레지스트리 수동 구성
Microsoft Azure 오브젝트 스토리지를 사용하려면 레지스트리의 구성 파일을 편집하고 레지스트리 포드에 마운트합니다.
절차
현재 config.yml 을 내보냅니다 :
$ oc get secret registry-config \ -o jsonpath='{.data.config\.yml}' -n default | base64 -d \ >> config.yml.old
이전 config.yml에서 새 구성 파일을 만듭니다.
$ cp config.yml.old config.yml
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
registry-config
시크릿을 삭제합니다.$ oc delete secret registry-config -n default
업데이트된 구성 파일을 참조하도록 보안을 다시 생성합니다.
$ oc create secret generic registry-config \ --from-file=config.yml -n default
업데이트된 구성을 읽기 위해 레지스트리를 재배포합니다.
$ oc rollout latest docker-registry -n default
레지스트리에서 Blob 오브젝트 스토리지를 사용하고 있는지 확인
레지스트리에서 Microsoft Azure Blob 스토리지를 사용하는지 확인하려면 다음을 수행합니다.
절차
레지스트리 배포가 완료되면 레지스트리
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의 수명을 공유하는 임시 디렉터리입니다.
/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
비어 있는 경우 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
설치 프로그램에서 설치 설명서의 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