본문 바로가기
Linux/OpenShift

RHOCP Installation (4) - Local DNF Repository 구성

by LILO 2023. 7. 22.
반응형

INTRO

아래의 구성에서 별도의 DNF Repository 서버가 없기 때문에 Bastion 서버에 DNF Repository를 구성할 예정입니다.

 

 

RHSM에서 OCP와 관련된 Repository 미러링 하기  (외부망)

RHOCP를 구축하는 과정에서는 모든 node가 RHCOS로 구축된다면 별도의 RPM은 사용되지 않기 때문에 bastion 구축시에 ISO에서 제공하는 RPM으로만 Repository를 구성하여도 구축 및 운영은 할 수 있습니다.

 

하지만 RHEL Compute node를 클러스터에 join해야될 경우가 생길 수도 있기 때문에 RedHat의 RPM Repository에서 Mirroring하는 작업을 해서 Local DNF Repository로 구성하는 작업을 해야됩니다.

 

외부망과 통신되는 서버에서 RHSM(Red Hat Subscription Management)에 로그인을 합니다.

이 때 사용되는 계정에 OpenShift, RHEL에 대한 서브스크립션이 활성화되어 있어야 합니다. 

# subscription-manager register --username <RedHat ID>

모든 Repository를 비활성화한 후 사용할 Repository만 enable하는 작업을 수행합니다.

<모든 Repository 비활성화>
# subscription-manager repos --disable="*"

<특정 Repository 활성화>
# subscription-manager repos \
--enable="rhel-8-for-x86_64-baseos-rpms" \
--enable="rhel-8-for-x86_64-appstream-rpms" \
--enable="rhocp-4.13-for-rhel-8-x86_64-rpms" \
--enable="fast-datapath-for-rhel-8-x86_64-rpms"
정석적인 작업대로면 특정 Pool에 attach하는 작업을 해야 하지만 요즘 auto attach가 잘되는 것 같아서 생략하였습니다.

 

RHEL을 최신 버전으로 사용하면 당연히 좋겠지만 운영 환경 특성상 특정 OS 버전을 사용해야될 경우가 있습니다.

그럴 경우에는 2번째 란에 있는 특정 버전 RPM 미러링을 사용하기 바랍니다.

 

Worker node에서 RHEL은 OS 환경을 제공해주는 역할이 주 역할이기 때문에 RHEL Compute node로 지원되는 OS 중 가장 최신 버전을 사용하는 것을 권합니다.

되도록이면 RHOCP 환경에서는 별도의 설치를 이용하여 Application을 올리는 방법보다는 RHOCP 클러스터에 Application을 배포해서 서비스를 사용하는 것을 권합니다.

<최신 버전 RPM 미러링>
# reposync -p /root/ocp/repo/ --download-metadata --repoid=rhel-8-for-x86_64-baseos-rpms
# reposync -p /root/ocp/repo/ --download-metadata --repoid=rhel-8-for-x86_64-appstream-rpms
# reposync -p /root/ocp/repo/ --download-metadata --repoid=rhocp-4.13-for-rhel-8-x86_64-rpms
# reposync -p /root/ocp/repo/ --download-metadata --repoid=fast-datapath-for-rhel-8-x86_64-rpms
# reposync -p /root/ocp/repo/ --download-metadata --repoid=ansible-2.9-for-rhel-8-x86_64-rpms


<특정 버전 RPM 미러링>
# subscription-manager release --set=<버전> && rm -rf /var/cache/dnf
ex) # subscription-manager release --set=8.4 && rm -rf /var/cache/dnf

# reposync -p /root/ocp/repo/ --download-metadata --repoid=rhel-8-for-x86_64-baseos-rpms
# reposync -p /root/ocp/repo/ --download-metadata --repoid=rhel-8-for-x86_64-appstream-rpms
# reposync -p /root/ocp/repo/ --download-metadata --repoid=rhocp-4.13-for-rhel-8-x86_64-rpms
# reposync -p /root/ocp/repo/ --download-metadata --repoid=fast-datapath-for-rhel-8-x86_64-rpms
# reposync -p /root/ocp/repo/ --download-metadata --repoid=ansible-2.9-for-rhel-8-x86_64-rpms

미러링이 완료되었으면 폐쇄망의 Repository 서버로 디렉토리를 옮겨서 사용합니다.

# rsync -az  /root/ocp/repo/*  <계정>@<Repository 서버 IP>:/data/repo/ocp

 

 

Local DNF Repository 구성 (Bastion 서버)

앞에서 미러링 받은 Repository가 정상적으로 옮겨졌는지 확인합니다.

# ls -l /data/repo/ocp
total 0
drwxr-xr-x 4 root root 38 Jul  6 16:19 ansible-2.9-for-rhel-8-x86_64-rpms
drwxr-xr-x 4 root root 38 Jul  6 16:17 fast-datapath-for-rhel-8-x86_64-rpms
drwxr-xr-x 4 root root 38 Jul  6 11:26 rhel-8-for-x86_64-appstream-rpms
drwxr-xr-x 4 root root 38 Jul  6 14:19 rhel-8-for-x86_64-baseos-rpms
drwxr-xr-x 4 root root 38 Jul  6 11:21 rhocp-4.13-for-rhel-8-x86_64-rpms

여러 서버에서 사용해야되기 때문에 Apache나 Nginx 같은 별도의 웹서버가 필요합니다.

Apache를 설치하고 80 Port는 추후에 HAProxy가 사용해야되기 때문에 8080 Port로 변경합니다..

# dnf install httpd
# sed -i "s/Listen\ 80/Listen\ 8080/g"  /etc/httpd/conf/httpd.conf

Apache의 기본 DocumentRoot는 "/var/www/html/"입니다. 설정을 바꾸고 하기에는 번거로우니 "/data/repo" 디렉토리를 "/var/www/html/" 아래로 소프트 링크를 걸어주는 작업을 합니다.

# ln -s /data/repo/  /var/www/html/repo

모든 설정이 완료되었으면 Apache를 실행하고 정상적으로 되는지 curl로 확인합니다..

# systemctl enable --now httpd

# curl -IHEAD localhost:8080/repo/ocp
HTTP/1.1 301 Moved Permanently
Date: Fri, 21 Jul 2023 16:54:57 GMT
Server: Apache/2.4.37 (Red Hat Enterprise Linux)
Location: http://localhost:8080/repo/ocp/
Content-Type: text/html; charset=iso-8859-1

Bastion 서버에 방금 구성한 DNF Repository를 설정합니다.

# cat << EOF > /etc/yum.repos.d/ocp.repo
[ansible-2.9-for-rhel-8-x86_64-rpms]
name=ansible-2.9-for-rhel-8-x86_64-rpms
baseurl=http://192.168.56.30:8080/repo/rhel8/ansible-2.9-for-rhel-8-x86_64-rpms
gpgcheck=0
enabled=1

[fast-datapath-for-rhel-8-x86_64-rpms]
name=fast-datapath-for-rhel-8-x86_64-rpms
baseurl=http://192.168.56.30:8080/repo/rhel8/fast-datapath-for-rhel-8-x86_64-rpms
gpgcheck=0
enabled=1

[rhel-8-for-x86_64-appstream-rpms]
name=rhel-8-for-x86_64-appstream-rpms
baseurl=http://192.168.56.30:8080/repo/rhel8/rhel-8-for-x86_64-appstream-rpms
gpgcheck=0
enabled=1

[rhel-8-for-x86_64-baseos-rpms]
name=rhel-8-for-x86_64-baseos-rpms
baseurl=http://192.168.56.30:8080/repo/rhel8/rhel-8-for-x86_64-baseos-rpms
gpgcheck=0
enabled=1

[rhocp-4.13-for-rhel-8-x86_64-rpms]
name=rhocp-4.13-for-rhel-8-x86_64-rpms
baseurl=http://192.168.56.30:8080/repo/ocp/rhocp-4.13-for-rhel-8-x86_64-rpms
gpgcheck=0
enabled=1
EOF

정상적으로 Repository가 활성화 되었는지 확인합니다.

vv 옵션으로 verbose level을 높이면 해당 Repository로 로딩하는 액션이 나오기 때문에 정확하게 Repository가 활성화 되었는지 확인할 수 있습니다.

# dnf repolist -vv |grep -i repo-id
Last metadata expiration check: 1:50:36 ago on Sat 22 Jul 2023 12:09:06 AM KST.
Repo-id            : ansible-2.9-for-rhel-8-x86_64-rpms
Repo-id            : fast-datapath-for-rhel-8-x86_64-rpms
Repo-id            : rhel-8-for-x86_64-appstream-rpms
Repo-id            : rhel-8-for-x86_64-baseos-rpms
Repo-id            : rhocp-4.13-for-rhel-8-x86_64-rpms

 

반응형