INTRO
아래의 구성에서 Registry 서버에서 OCP 클러스터 구축을 위해 필요한 클러스터 이미지를 미러링할 예정입니다.
TB 서버에는 Registry 서버는 이미지 미러링을 위해 외부와의 통신이 허용되게 설정되어있습니다.
DMZ망에 Registry 서버를 두고 Image를 Pulling하여 사용하기도 하지만 Registry 서버도 폐쇄망에 구축되어 있을 경우도 많습니다.
이러한 경우에는 인터넷이 되는 서버에서 이미지를 미러링 받고나서 구축할 서버에 "<Harbor data 경로>/registry"를 복사하고 Harbor를 재기동하는 방법도 있습니다. (Docker Private Registry도 비슷한 방법으로 진행하면 됩니다.)
OCP Cluster Image Mirroring 과정을 참고한 사이트는 아래에 공유드립니다.
Private Registry의 정보가 기입된 Pull Scret 생성
아래의 사이트에서 OCP Cluster Image를 가져오기 위해 RedHat 계정 정보와 Registry가 포함된 Pull secret을 다운로드 혹은 복사를 합니다.
복사한 Pull secret을 원하는 경로에 저장합니다. OCP와 관련된 Pull secret, Install config 등을 모두 "/root/ocp"에 저장할 예정입니다.
jq를 이용하면 사용자가 보기 편하게 정렬하여 볼 수 있습니다.
# mkdir -p /root/ocp/pull_secret
# vi /root/ocp/pull_secret/pull-secret
....
<Pull secret 내용 확인>
# cat /root/ocp/pull_secret/pull-secret |jq .
{
"auths": {
"cloud.openshift.com": {
"auth": "생략",
"email": "RedHat 계정"
},
"quay.io": {
"auth": "생략==",
"email": "RedHat 계정"
},
"registry.connect.redhat.com": {
"auth": "생략==",
"email": "RedHat 계정"
},
"registry.redhat.io": {
"auth": "생략==",
"email": "RedHat 계정"
}
}
}
Harbor(Private Registry)에 로그인합니다. 로그인 하면서 계정 정보를 json으로 저장하는 "--authfile" 옵션을 추가합니다.
# docker login -u admin -p Redhat12345 --authfile /root/ocp/pull_secret/registry-secret.json https://harbor.example.com:443
# cat /root/ocp/pull_secret/registry-secret.json
{
"auths": {
"harbor.example.com:443": {
"auth": "<Registry 계정 정보>"
}
}
}
방금 저장한 Registry 인증 정보와 앞 전에 RedHat에서 복사하여 저장한 Pull Secret을 합칩니다.
# jq -c --argjson var "$(jq .auths /root/ocp/pull_secret/registry-secret.json)" '.auths += $var' /root/ocp/pull_secret/pull-secret > /root/ocp/pull_secret/pull-secret-mer
Merge된 Pull secret을 확인합니다. Private registry에 대한 인증 정보가 추가된 것을 확인할 수 있습니다.
# cat /root/ocp/pull_secret/pull-secret-merged.json |jq .
{
"auths": {
"cloud.openshift.com": {
"auth": "생략",
"email": "RedHat 계정"
},
"quay.io": {
"auth": "생략==",
"email": "RedHat 계정"
},
"registry.connect.redhat.com": {
"auth": "생략==",
"email": "RedHat 계정"
},
"registry.redhat.io": {
"auth": "생략==",
"email": "RedHat 계정"
}
"<Private Registry 주소>": {
"auth": "<Private Registry 인증 정보>"
}
}
}
OCP Cluster Image Mirroring
OC 명령어를 사용하기 위해 openshift-client를 다운로드합니다. 추후에 RHOCP를 설치할 때 사용하기 위해 openshift-install도 다운로드 합니다.
openshift와 관련된 명령어 바이너리는 아래의 사이트에서 다운로드 하면 됩니다.
https://mirror.openshift.com/pub/openshift-v4/x86_64/clients/ocp/stable/
# curl -LO https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable/openshift-install-linux-4.13.4.tar.gz
# curl -LO https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable/openshift-client-linux-4.13.4.tar.gz
# tar xzf openshift-client-linux-4.13.4.tar.gz -C /usr/local/bin/
# tar xzf openshift-install-linux-4.13.4.tar.gz -C /usr/local/bin/
# rm -rf /usr/local/bin/README.md
# ls -l /usr/local/bin/
total 839052
-rwxr-xr-x 2 root root 142660056 Jun 8 00:40 kubectl
-rwxr-xr-x 2 root root 142660056 Jun 8 00:40 oc
-rwxr-xr-x 1 root root 573861888 Jun 13 22:31 openshift-install
OCP Cluster Image Mirroring 명령어의 옵션이 너무 길기 때문에 커맨드로 바로 입력하지 않고 스크립트 파일로 만들어서 실행할 예정입니다.
# cat << EOF > img_mirror.sh
#!/bin/sh
export GODEBUG=x509ignoreCN=0
export OCP_RELEASE=4.13.4
export LOCAL_REGISTRY="harbor.example.com:443"
export LOCAL_REPOSITORY=ocp4/openshift4
export PRODUCT_REPO=openshift-release-dev
export LOCAL_SECRET_JSON="/root/ocp/pull_secret/pull-secret-merged.json"
export RELEASE_NAME=ocp-release
export ARCHITECTURE=x86_64
oc adm release mirror -a ${LOCAL_SECRET_JSON} \
--from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} \
--to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} \
--to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}
작성한 스크립트를 실행합니다.
# sh img_mirror.sh
'Linux > OpenShift' 카테고리의 다른 글
RHOCP Installation (9) - OCP 클러스터 설치 (0) | 2023.07.25 |
---|---|
RHOCP Installation (8) - Install Config 및 Ignition 파일 생성 (0) | 2023.07.25 |
RHOCP Installation (6) - HAProxy + KeepAlived 이중화 구성 (0) | 2023.07.23 |
RHOCP Installation (5) - DNS 서버 구축 및 이중화 (0) | 2023.07.22 |
RHOCP Installation (4) - Local DNF Repository 구성 (0) | 2023.07.22 |