본문 바로가기

컨테이너/OpenShift

OpenShift 4.13 UPI 설치 방법(HTTP, LB 구성)

반응형
썸네일

오늘부터 두세 차례에 걸쳐 OpenShift를 BareMetal에 UPI(User-provisioned infrastructure) 방식으로 설치하는 방법에 대해서 알아보도록 하겠습니다. 

 

아키텍처(Architecture)

아키텍처

사용한 가상머신(VM) 스펙

가상머신(VM) 스펙표

설치 요구사항

1. 최소 필수 호스트(Hosts)

 

부트스트랩 및 제어 플레인 머신은 RHCOS(Red Hat Enterprise Linux CoreOS)를 운영 체제로 사용해야 합니다.

컴퓨팅 머신은 RHCOS, RHEL 8.6, RHEL 8.7 또는 RHEL 8.8 중에서 선택할 수 있습니다.

 

2. 최소 리소스 요구사항

 

SMT(동시 멀티스레딩) 또는 하이퍼스레딩이 활성화되지 않은 경우 CPU 1개는 물리적 코어 1개와 동일합니다.

활성화되면 다음 공식을 사용하여 해당 비율을 계산합니다: (코어당 스레드 × 코어) × 소켓 = CPU.

 

OpenShift UPI 방식 설치 (HTTP, LB 구성)

1. Network 설정

1.1. ifcfg-ens192 파일 편집

vi /etc/sysconfig/network-scripts/ifcfg-ens192

 

1.2. ifcfg-ens192 파일 내용 수정

TYPE=Ethernet
BOOTPROTO=static
NAME=ens192
DEVICE=ens192
ONBOOT=yes
IPADDR=172.16.10.105
PREFIX=24
GATEWAY=172.16.10.1
DNS1=172.16.10.103
DNS2=168.126.63.1

 

1.3. network 재시작

systemctl restart NetworkManager.service

 

2. httpd 설치 및 구성 순서

2.1. httpd 설치

yum install -y httpd

 

2.2. httpd.conf 파일 내용 수정

sed -i 's/80/8080/g' /etc/httpd/conf/httpd.conf

 

2.3. httpd 실행

systemctl enable --now httpd

 

3. HAProxy 설치 및 구성 순서

3.1. HAProxy 설치

yum install -y haproxy

 

3.2. haproxy.cfg 파일 편집

vi /etc/haproxy/haproxy.cfg

 

3.3.  haproxy.cfg 파일 내용 수정

defaults
 mode tcp
 log global
 option httplog
 option dontlognull
 option http-server-close
 option forwardfor except 127.0.0.0/8
 option redispatch
 retries 3
 timeout http-request 10s
 timeout queue 1m
 timeout connect 10s
 timeout client 1m
 timeout server 1m
 timeout http-keep-alive 10s
 timeout check 10s
 maxconn 3000
 
#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static
 balance roundrobin
 server static 127.0.0.1:4331 check
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------

frontend kubernetes_api
 bind 0.0.0.0:6443
 default_backend kubernetes_api
 
backend kubernetes_api
 balance roundrobin
 server bootstrap bootstrap.team4.team4.local:6443 check
 server master1 master1.team4.team4.local:6443 check
 server master2 master2.team4.team4.local:6443 check
 server master3 master3.team4.team4.local:6443 check
 server worker1 worker1.team4.team4.local:6443 check
 server worker2 worker2.team4.team4.local:6443 check
 server worker3 worker3.team4.team4.local:6443 check

frontend machine_config
 bind 0.0.0.0:22623
 default_backend machine_config

backend machine_config
 balance roundrobin
 server bootstrap bootstrap.team4.team4.local:22623 check
 server master1 master1.team4.team4.local:22623 check
 server master2 master2.team4.team4.local:22623 check
 server master3 master3.team4.team4.local:22623 check
 server worker1 worker1.team4.team4.local:22623 check
 server worker2 worker2.team4.team4.local:22623 check
 server worker3 worker3.team4.team4.local:22623 check

frontend router_https
 bind 0.0.0.0:443
 default_backend router_https

backend router_https
 balance roundrobin
 server master1 master1.team4.team4.local:443 check
 server master2 master2.team4.team4.local:443 check
 server master3 master3.team4.team4.local:443 check
 server worker1 worker1.team4.team4.local:443 check
 server worker2 worker2.team4.team4.local:443 check
 server worker3 worker3.team4.team4.local:443 check

frontend router_http
 bind 0.0.0.0:80
 default_backend router_http

backend router_http
 balance roundrobin
 server master1 master1.team4.team4.local:80 check
 server master2 master2.team4.team4.local:80 check
 server master3 master3.team4.team4.local:80 check
 server worker1 worker1.team4.team4.local:80 check
 server worker2 worker2.team4.team4.local:80 check
 server worker3 worker3.team4.team4.local:80 check

 

3.4. haproxy 실행

systemctl enable --now haproxy

 

4. 방화벽 포트 허용

firwall-cmd --permanent --add-port=80/tcp
firwall-cmd --permanent --add-port=443/tcp
firwall-cmd --permanent --add-port=6443/tcp
firwall-cmd --permanent --add-port=22623/tcp
firwall-cmd --permanent --add-port=53/{tcp,udp}
firwall-cmd --permanent --add-port=8080/tcp
firwall-cmd --reload

 

5. SELinux 포트 허용 (SELinux Enforcing일 경우) 

5.1. SELinux 포트 허용

semanage port -a -t http_port_t -p tcp 6443
semanage port -a -t http_port_t -p tcp 22623

 

5.2. http_port 오픈 확인

semanage port -l | grep http_port_t

 

6. SSH 키 생성

ssh-keygen -q -N ''

 

7. OpenShift-Installer 설치

7.1. Installer 파일 다운로드

wget https://mirror.openshift.com/pub/openshift-v4/x86_64/clients/ocp/stable/openshift-install-linux.tar.gz
wget https://mirror.openshift.com/pub/openshift-v4/x86_64/clients/ocp/stable/openshift-client-linux.tar.gz

 

7.2. Installer 파일 압축 해제

tar xvf openshift-install-linux.tar.gz -C /usr/local/bin/
tar xvf openshift-client-linux.tar.gz -C /usr/local/bin/

 

7.3. Pull Secret 파일 다운로드

파일을 다운로드 받기 위해서는 RedHat 계정이 필요합니다.!

 

Hybrid Cloud Console

 

console.redhat.com

 

7.4. Pull Secret 파일 전송

scp [옵션] [전송할 파일/폴더] [사용자]@[서버주소]:[전송할 경로]

 

 

7.5. 폴더 생성 및 install-config.yaml 파일 생성

mkdir -p /root/ocp/config
vi ocp/config/install-config.yaml

 

7.6. install-config.yaml 파일 내용 추가

#pull-secret.txt, id_rsa.pub 파일 내용 복사해서 pullSecret, sshKey의 Value 값 수정 필요

apiVersion: v1
baseDomain: team4.local
compute:
- hyperthreading: Enabled
  name: worker
  replicas: 0
controlPlane:
  hyperthreading: Enabled
  name: master
  replicas: 3
metadata:
 name: team4
networking:
 clusterNetwork:
 - cidr: 10.128.0.0/14
   hostPrefix: 23
 networkType: OpenShiftSDN
 serviceNetwork:
 - 172.30.0.0/16
platform:
 none: {}
fips: false
pullSecret: '{"auths": ...}'
sshKey: 'ssh-ed25519 AAAA...'

 

7.7. install-config.yaml 파일 백업

경고

설치 진행 시 install-config.yaml 파일은 사라지므로 백업을 합니다.!

 

cp install-config.yaml install-config.yaml.bak

 

7.8. manifests, ignition 파일 생성

cd /usr/local/bin
openshift-install create manifests --dir=/root/ocp/config/
openshift-install create ignition-configs --dir=/root/ocp/config/

 

7.9. .ign 파일 권한 변경 및 공유 폴더로 옮기기

mkdir /var/www/html/ign
cp /root/ocp/config/*.ign /var/www/html/ign/
chmod 644 /var/www/html/ign/*.ign

 

7.10. HTTP FileServer 접속 확인