오늘부터 두세 차례에 걸쳐 OpenShift를 BareMetal에 UPI(User-provisioned infrastructure) 방식으로 설치하는 방법에 대해서 알아보도록 하겠습니다.
아키텍처(Architecture)
사용한 가상머신(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 계정이 필요합니다.!
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 접속 확인
'컨테이너 > OpenShift' 카테고리의 다른 글
OpenShift 4.13 UPI 설치 방법(bootstrap, master, worker) (0) | 2023.11.27 |
---|---|
OpenShift 4.13 UPI 설치 방법(DNS 구성) (0) | 2023.11.21 |