2.4.2. 수동으로 레지스트리 보안


TLS를 통해 트래픽을 제공하도록 레지스트리를 수동으로 보호하려면 다음을 수행합니다.

  1. 레지스트리를 배포합니다.
  2. 레지스트리의 서비스 IP 및 포트를 가져옵니다.

    $ oc get svc/docker-registry
    NAME              TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
    docker-registry   ClusterIP   172.30.82.152   <none>        5000/TCP   1d
    Copy to Clipboard Toggle word wrap
  3. 기존 서버 인증서를 사용하거나 지정된 CA에서 서명한 지정된 IP 및 호스트 이름에 유효한 키와 서버 인증서를 생성할 수 있습니다. 레지스트리 서비스 IP 및 docker-registry.default.svc.cluster.local 호스트 이름에 대한 서버 인증서를 생성하려면 Ansible 호스트 인벤토리 파일에 나열된 첫 번째 마스터(기본값 /etc/ansible/hosts )에서 다음 명령을 실행합니다.

    $ oc adm ca create-server-cert \
        --signer-cert=/etc/origin/master/ca.crt \
        --signer-key=/etc/origin/master/ca.key \
        --signer-serial=/etc/origin/master/ca.serial.txt \
        --hostnames='docker-registry.default.svc.cluster.local,docker-registry.default.svc,172.30.124.220' \
        --cert=/etc/secrets/registry.crt \
        --key=/etc/secrets/registry.key
    Copy to Clipboard Toggle word wrap

    라우터가 외부에 노출되는 경우 --hostnames 플래그에 공용 경로 호스트 이름을 추가합니다.

    --hostnames='mydocker-registry.example.com,docker-registry.default.svc.cluster.local,172.30.124.220 \
    Copy to Clipboard Toggle word wrap

    외부에서 액세스할 수 있도록 기본 인증서 업데이트에 대한 자세한 내용은 레지스트리 및 라우터 인증서 재배포 를 참조하십시오.

    참고

    oc adm ca create-server-cert 명령은 2년 동안 유효한 인증서를 생성합니다. 이는 --expire-days 옵션으로 변경할 수 있지만 보안상의 이유로 이 값보다 커지지 않는 것이 좋습니다.

  4. 레지스트리 인증서의 보안을 생성합니다.

    $ oc create secret generic registry-certificates \
        --from-file=/etc/secrets/registry.crt \
        --from-file=/etc/secrets/registry.key
    Copy to Clipboard Toggle word wrap
  5. 레지스트리 Pod의 서비스 계정에 보안을 추가합니다( 기본 서비스 계정 포함).

    $ oc secrets link registry registry-certificates
    $ oc secrets link default  registry-certificates
    Copy to Clipboard Toggle word wrap
    참고

    시크릿을 참조하는 서비스 계정에만 제한하는 것은 기본적으로 비활성화되어 있습니다. 즉, 마스터 구성 파일에서 serviceAccountConfig.limitSecretReferencesfalse (기본 설정)로 설정되면 서비스에 시크릿을 연결할 필요가 없습니다.

  6. docker-registry 서비스를 일시 중지합니다.

    $ oc rollout pause dc/docker-registry
    Copy to Clipboard Toggle word wrap
  7. 레지스트리 배포 구성에 시크릿 볼륨을 추가합니다.

    $ oc set volume dc/docker-registry --add --type=secret \
        --secret-name=registry-certificates -m /etc/secrets
    Copy to Clipboard Toggle word wrap
  8. 레지스트리 배포 구성에 다음 환경 변수를 추가하여 TLS를 활성화합니다.

    $ oc set env dc/docker-registry \
        REGISTRY_HTTP_TLS_CERTIFICATE=/etc/secrets/registry.crt \
        REGISTRY_HTTP_TLS_KEY=/etc/secrets/registry.key
    Copy to Clipboard Toggle word wrap

    자세한 내용은 Docker 문서의 레지스트리 구성 섹션 을 참조하십시오.

  9. HTTP에서 HTTPS로 레지스트리의 활성 프로브에 사용된 스키마를 업데이트합니다.

    $ oc patch dc/docker-registry -p '{"spec": {"template": {"spec": {"containers":[{
        "name":"registry",
        "livenessProbe":  {"httpGet": {"scheme":"HTTPS"}}
      }]}}}}'
    Copy to Clipboard Toggle word wrap
  10. 처음에 OpenShift Container Platform 3.2 이상에 레지스트리가 배포된 경우 레지스트리의 준비 상태 프로브에 사용된 체계를 HTTP에서 HTTPS로 업데이트합니다.

    $ oc patch dc/docker-registry -p '{"spec": {"template": {"spec": {"containers":[{
        "name":"registry",
        "readinessProbe":  {"httpGet": {"scheme":"HTTPS"}}
      }]}}}}'
    Copy to Clipboard Toggle word wrap
  11. docker-registry 서비스를 다시 시작합니다.

    $ oc rollout resume dc/docker-registry
    Copy to Clipboard Toggle word wrap
  12. 레지스트리가 TLS 모드에서 실행 중인지 확인합니다. 최신 docker-registry 배포가 완료될 때까지 기다린 후 레지스트리 컨테이너의 Docker 로그를 확인합니다. :5000, tls에서 수신 대기할 항목을 찾아야 합니다.

    $ oc logs dc/docker-registry | grep tls
    time="2015-05-27T05:05:53Z" level=info msg="listening on :5000, tls" instance.id=deeba528-c478-41f5-b751-dc48e4935fc2
    Copy to Clipboard Toggle word wrap
  13. Docker 인증서 디렉터리에 CA 인증서를 복사합니다. 클러스터의 모든 노드에서 이 작업을 수행해야 합니다.

    $ dcertsdir=/etc/docker/certs.d
    $ destdir_addr=$dcertsdir/172.30.124.220:5000
    $ destdir_name=$dcertsdir/docker-registry.default.svc.cluster.local:5000
    
    $ sudo mkdir -p $destdir_addr $destdir_name
    $ sudo cp ca.crt $destdir_addr    
    1
    
    $ sudo cp ca.crt $destdir_name
    Copy to Clipboard Toggle word wrap
    1
    ca.crt 파일은 마스터의 /etc/origin/master/ca.crt 의 사본입니다.
  14. 인증을 사용하는 경우 일부 버전의 docker 에서도 OS 수준에서 인증서를 신뢰하도록 클러스터를 구성해야 합니다.

    1. 인증서를 복사합니다.

      $ cp /etc/origin/master/ca.crt /etc/pki/ca-trust/source/anchors/myregistrydomain.com.crt
      Copy to Clipboard Toggle word wrap
    2. 다음을 실행합니다.

      $ update-ca-trust enable
      Copy to Clipboard Toggle word wrap
  15. /etc/sysconfig/docker 파일에서 이 특정 레지스트리에 대해서만 --insecure-registry 옵션을 제거합니다. 그런 다음 데몬을 다시 로드하고 docker 서비스를 다시 시작하여 이 구성 변경을 반영합니다.

    $ sudo systemctl daemon-reload
    $ sudo systemctl restart docker
    Copy to Clipboard Toggle word wrap
  16. docker 클라이언트 연결을 확인합니다. 레지스트리에서 docker push 를 실행하거나 레지스트리에서 docker pull 을 실행하면 성공해야 합니다. 레지스트리에 로그인 했는지 확인합니다.

    $ docker tag|push <registry/image> <internal_registry/project/image>
    Copy to Clipboard Toggle word wrap

    예를 들면 다음과 같습니다.

    $ docker pull busybox
    $ docker tag docker.io/busybox 172.30.124.220:5000/openshift/busybox
    $ docker push 172.30.124.220:5000/openshift/busybox
    ...
    cf2616975b4a: Image successfully pushed
    Digest: sha256:3662dd821983bc4326bee12caec61367e7fb6f6a3ee547cbaff98f77403cab55
    Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat