6장. Red Hat 레지스트리에 액세스 및 구성
6.1. 인증 활성화 Red Hat 레지스트리
Red Hat Container Catalog를 통해 사용할 수 있는 모든 컨테이너 이미지는 이미지 레지스트리인 registry.access.redhat.com
에 호스팅됩니다. OpenShift Container Platform 3.11 Red Hat Container Catalog를 registry.access.redhat.com에서
로 이동했습니다.
registry.
redhat.io
새 레지스트리 registry.redhat.io
는 OpenShift Container Platform의 이미지 및 호스팅 콘텐츠에 액세스할 수 있는 인증이 필요합니다. 새 레지스트리로 마이그레이션한 후 기존 레지스트리를 일정 기간 동안 사용할 수 있습니다.
OpenShift Container Platform은 registry.redhat.io
에서 이미지를 가져 오므로 이를 사용할 수 있도록 클러스터를 설정해야합니다.
새 레지스트리는 다음과 같은 방법으로 인증에 표준 OAuth 메커니즘을 사용합니다.
- 인증 토큰: 관리자가 생성한 토큰은 시스템에 컨테이너 이미지 레지스트리에 대한 인증 기능을 제공하는 서비스 계정입니다. 서비스 계정은 사용자 계정 변경의 영향을 받지 않으므로 인증에 토큰을 사용하는 것은 안정적이고 유연한 인증 방법입니다. 이는 프로덕션 클러스터에 대해 지원되는 유일한 인증 옵션입니다.
-
웹 사용자 이름 및 암호: 이는
access.redhat.com
과 같은 리소스에 로그인하는 데 사용하는 표준 인증 정보 집합입니다. OpenShift Container Platform에서 이 인증 방법을 사용할 수는 있지만 프로덕션 배포에는 지원되지 않습니다. 이 인증 방법은 OpenShift Container Platform 외부의 독립형 프로젝트에서만 사용해야합니다.
사용자 이름 및 암호 또는 인증 토큰 중 하나의 자격 증명으로 Docker
로그인을 사용하여 새 레지스트리의 콘텐츠에 액세스할 수 있습니다.
모든 이미지 스트림은 새 레지스트리를 가리킵니다. 새 레지스트리에는 액세스에 대한 인증이 필요하므로 OpenShift 네임스페이스에 imagestreamsecret
이라는 새 시크릿이 있습니다.
다음 두 위치에 인증 정보를 배치해야 합니다.
- OpenShift 네임 스페이스: OpenShift 네임스페이스의 이미지 스트림을 가져올 수 있도록 인증 정보가 OpenShift 네임스페이스에 있어야 합니다.
- 호스트: Kubernetes에서 이미지를 가져올 때 호스트의 인증 정보를 사용하므로 호스트에 인증 정보가 있어야합니다.
새 레지스트리에 액세스하려면 다음을 수행합니다.
-
이미지 가져오기 시크릿
imagestreamsecret
이 OpenShift 네임스페이스에 있는지 확인합니다. 해당 시크릿에는 새 레지스트리에 액세스할 수 있는 인증 정보가 있습니다. -
모든 클러스터 노드에 마스터에서 복사된
/var/lib/origin/.docker/config.json
이 Red Hat 레지스트리에 액세스할 수 있도록 합니다.
6.1.1. 사용자 계정 생성
Red Hat 제품에 대한 권한이 있는 Red Hat 고객인 경우 해당 사용자 자격 증명이 있는 계정이 있습니다. Red Hat 고객 포털에 로그인하는 데 사용하는 사용자 이름과 암호입니다.
계정이 없는 경우 다음 옵션 중 하나에 등록하여 무료로 계정을 얻을 수 있습니다.
- Red Hat 개발자 프로그램. 이 계정은 개발자 도구 및 프로그램에 대한 액세스를 제공합니다.
- 30일 평가판 서브스크립션. 이 계정은 일부 Red Hat 소프트웨어 제품에 액세스할 수 있는 30일 평가판 서브스크립션을 제공합니다.
6.1.2. Red Hat 레지스트리에 대한 서비스 계정 및 인증 토큰 생성
조직에서 공유 계정을 관리하는 경우 토큰을 생성해야 합니다. 관리자는 조직과 연결된 모든 토큰을 생성, 보기 및 삭제할 수 있습니다.
사전 요구 사항
- 사용자 인증 정보
절차
Docker 로그인을 완료하기 위해 토큰을 생성하려면 다음을 수행합니다.
-
registry.redhat.io
로 이동합니다. - RHN(Red Hat Network) 사용자 이름과 암호로 로그인합니다.
메시지가 표시되면 조건 수락.
- 즉시 약관을 수락하라는 메시지가 표시되지 않으면 다음 단계를 진행하면 메시지가 표시됩니다.
레지스트리 서비스 계정 페이지에서 서비스 계정 생성을클릭합니다.
- 서비스 계정의 이름을 입력합니다. 앞에 임의의 문자열이 붙습니다.
- 설명을 입력합니다.
- 생성을 클릭합니다.
- 서비스 계정으로 다시 이동합니다.
- 생성한 서비스 계정을 클릭합니다.
- 앞에 있는 문자열을 포함하여 사용자 이름을 복사합니다.
- 토큰을 복사합니다.
6.1.3. 설치 및 업그레이드를 위한 레지스트리 인증 정보 관리
Ansible 설치 프로그램을 사용하여 설치 또는 업그레이드 중에 레지스트리 자격 증명을 관리할 수도 있습니다.
이렇게 하면 다음 설정이 설정됩니다.
-
OpenShift 네임스페이스의
imagestreamsecret
. - 모든 노드의 자격 증명.
openshift_examples_registryurl 또는
에 기본값 oreg_url
registry.redhat.io
를 사용하는 경우 Ansible 설치 프로그램에서 자격 증명이 필요합니다.
사전 요구 사항
- 사용자 인증 정보
- 서비스 계정
- 서비스 계정 토큰
절차
Ansible 설치 프로그램을 사용하여 설치 또는 업그레이드 중에 레지스트리 인증 정보를 관리하려면 다음을 수행합니다.
-
설치 또는 업그레이드 중에 설치 프로그램 인벤토리에
oreg_auth_user
및oreg_auth_password
변수를 지정합니다.
토큰을 생성한 경우 oreg_auth_password
를 토큰 값으로 설정합니다.
인증된 추가 레지스트리에 액세스해야 하는 클러스터는 openshift_additional_registry_credentials
를 설정하여 레지스트리 목록을 구성할 수 있습니다. 각 레지스트리에는 host 및 password 값이 필요하며 user를 설정하여 사용자 이름을 지정할 수 있습니다. 기본적으로 지정된 인증 정보는 지정된 레지스트리에서 이미지 openshift3/ose-pod
를 검사하여 유효성을 검사합니다.
대체 이미지를 지정하려면 다음 중 하나를 수행합니다.
-
test_image
를 설정합니다. -
test_login
을 False로 설정하여 자격 증명 유효성 검사를 비활성화합니다.
레지스트리가 안전하지 않은 경우 tls_verify
를 False로 설정합니다.
이 목록의 모든 자격 증명에는 OpenShift 네임스페이스에서 생성된 imagestreamsecret
과 모든 노드에 배포된 자격 증명이 있습니다.
예를 들면 다음과 같습니다.
openshift_additional_registry_credentials=[{'host':'registry.example.com','user':'name','password':'pass1','test_login':'False'},{'host':'registry2.example.com','password':'token12345','tls_verify':'False','test_image':'mongodb/mongodb'}]
6.1.4. Red Hat 레지스트리의 서비스 계정 사용
서비스 계정을 생성하고 Red Hat 레지스트리에 대해 생성된 토큰을 생성한 후에는 추가 작업을 수행할 수 있습니다.
이 섹션에서는 설치 및 업그레이드를 위한 레지스트리 자격 증명 관리 섹션에 설명된 인벤토리 변수를 제공하여 설치 중에 자동으로 수행할 수 있는 수동 단계를 제공합니다.
사전 요구 사항
- 사용자 인증 정보
- 서비스 계정
- 서비스 계정 토큰
절차
레지스트리 서비스 계정 페이지에서 계정 이름을 클릭합니다. 여기에서 다음 작업을 수행할 수 있습니다.
- 토큰 정보 탭에서 사용자 이름( 임의 문자열이 앞에 추가한 이름) 및 암호(토큰)를 볼 수 있습니다. 이 탭에서 토큰을 다시 생성할 수 있습니다.
OpenShift Secret 탭에서 다음을 수행할 수 있습니다.
- 탭에서 링크를 클릭하여 시크릿을 다운로드합니다.
클러스터에 보안을 제출합니다.
# oc create -f <account-name>-secret.yml --namespace=openshift
다음과 같이
imagePullSecrets
필드를 사용하여 Kubernetes Pod 구성에 보안에 대한 참조를 추가하여 Kubernetes 구성을 업데이트합니다.apiVersion: v1 kind: Pod metadata: name: somepod namespace: all spec: containers: - name: web image: registry.redhat.io/REPONAME imagePullSecrets: - name: <numerical-string-account-name>-pull-secret
Docker 로그인 탭에서
docker login
을 실행할 수 있습니다. 예를 들면 다음과 같습니다.# docker login -u='<numerical-string|account-name>' -p=<token>
성공적으로 로그인한 후
~/.docker/config.json
을/var/lib/origin/.docker/config.json
에 복사하고 노드를 다시 시작합니다.# cp -r ~/.docker /var/lib/origin/ systemctl restart atomic-openshift-node
Docker 구성 탭에서 다음을 수행할 수 있습니다.
- 탭에서 링크를 클릭하여 자격 증명 구성을 다운로드합니다.
Docker 구성 디렉터리에 파일을 배치하여 디스크에 구성을 작성합니다. 이렇게 하면 기존 자격 증명을 덮어씁니다. 예를 들면 다음과 같습니다.
# mv <account-name>-auth.json ~/.docker/config.json