Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

클라우드 엔지니어 꿈나무

Redhat Openshift UPI 설치 본문

Vsphere Exsi

Redhat Openshift UPI 설치

새싹싹이 2023. 11. 20. 14:27

IPI 와는 다르게 master node 및 worker node를 만들어 수동으로 연결

 

구성도

 

File Server, Load Balance : CentOS8

DNS : Windows Server 2019

Bootstrap : RHCOS 4.13.0 

* bootstrap : 머신이 작동될 떄 명령을 시작하는 것

Master Node 1,2,3 : RHCOS 4.13.0

Worker Node 1,2,3 : RHCOS 4.13.0

 

Windoes Server 2019 - DNS

DNS 설정

정방향 조회 영역

연결된 PTR 레코드 업데이트 체크하여 역방향 조회 영역 같이 추가

 

 

역방향 조회 영역

 

 

CentOS8 - HAProxy, FileServer

# nmtui

DNS Server = DNS Server 로 구성해놓은 Windows Server IP

 

# yum install -y bind-utils => nslookup 사용을 위하여 설치

#nslookup

 

 

# getenforce

Selinux가 enforcing 인 상태로 진행 예정이므로 Selinux 관리 툴인 semanage 를 사용하게 진행

# yum install -y policycoreutils-python-utils => semanage 사용을 위하여 설치

 

HAProxy에서 사용할 6443 Port와 22623 Port 확장

6443 Port : 쿠버네티스 API 서버 포트

22623 : Openshift ignition 설정 포트

하기 semanage 작업을 하지 않으면 haproxy.cfg 수정 후 haproxy가 실행되지 못한다.

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

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

 

<<참고>>

semanage 를 설정하지 않고 진행을 하고자 한다면 setsebool 로  haproxy

# yum install -y policycoreutils => setsebool 사용을 위하여 설치

# setsebool -P haproxy_connect_any=1  => -p : 영구적으로 설정

 

 

HAProxy 설치

# vi /etc/haproxy/haproxy.cfg

HAProxy 설정

#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   https://www.haproxy.org/download/1.8/doc/configuration.txt
#
#---------------------------------------------------------------------

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    #
    #    local2.*                       /var/log/haproxy.log
    #
    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

    # utilize system-wide crypto-policies
    ssl-default-bind-ciphers PROFILE=SYSTEM
    ssl-default-server-ciphers PROFILE=SYSTEM

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
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    

#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
# 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
        option tcplog
        
 backend kubernetes_api
        balance roundrobin
        server bootstrap bootstrap.kang.kang.local:6443 check
        server master1 master1.kang.kang.local:6443 check
        server master2 master2.kang.kang.local:6443 check
        server master3 master3.kang.kang.local:6443 check
        server worker1 worker1.kang.kang.local:6443 check
        server worker2 worker2.kang.kang.local:6443 check

frontend ignition_config
        bind 0.0.0.0:22623
        default_backend ignition_config
        option tcplog

backend ignition_config
        balance roundrobin
        server bootstrap bootstrap.kang.kang.local:22623 check
        server master1 master1.kang.kang.local:22623 check
        server master2 master2.kang.kang.local:22623 check
        server master3 master3.kang.kang.local:22623 check
        server worker1 worker1.kang.kang.local:22623 check
        server worker2 worker2.kang.kang.local:22623 check

frontend https_router
        bind 0.0.0.0:443
        default_backend https_router


backend https_router
        balance roundrobin
        server master1 master1.kang.kang.local:443 check
        server master2 master2.kang.kang.local:443 check
        server master3 master3.kang.kang.local:443 check
        server worker1 worker1.kang.kang.local:443 check
        server worker2 worker2.kang.kang.local:443 check

frontend http_router
        bind 0.0.0.0:80
        default_backend http_router

backend http_router
        balance roundrobin
        server master1 master1.kang.kang.local:80 check
        server master2 master2.kang.kang.local:80 check
        server master3 master3.kang.kang.local:80 check
        server worker1 worker1.kang.kang.local:80 check
        server worker2 worker2.kang.kang.local:80 check

 

<<참고>>

Roundrip :  순차적으로 분배(최대 연결 가능 서버 4128개)

 

방화벽 설정

# firewall-cmd --add-port=6443/tcp --permanent # firewall-cmd --add-port=22623/tcp --permanent

# firewall-cmd --add-pot=8080/tcp --permanent

# firewall-cmd --add-pot=80/tcp --permanent

# firewall-cmd --reload

 

파일 서버 설치

# yum install -y httpd => File Server 로 Apache 사용하기 위하여 설치

# vi /etc/httpd/conf/httpd.conf

80번 Port는 로드밸런서에서 사용하므로 8080 Port로 수정

 

# systemctl enable --now httpd

# mkdir -p /var/www/html/ign/hi

실제 PC 인터넷창

hi 폴더까지 잘 생성된 것을 확인할 수 있다.

 

CentOS8 - HAProxy, FileServer

설치 파일 구성

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

=> OpenShift Container Platform의 설치 도구 다운로드 (OpenShift를 클러스터로 설치할 때 사용하는 명령행 도구가 포함, 이 도구로 OpenShift 클러스터를 배포하고 구성 가능)

# wget https://mirror.openshift.com/pub/openshift-v4/x86_64/clients/ocp/stable/openshift-client-linux.tar.gz
=> OpenShift Container Platform의 클라이언트 도구 다운로드 ( OpenShift 클러스터와 상호 작용하기 위한 명령행 도구가 포함, 클러스터와 통신하여 애플리케이션을 관리하거나 다양한 작업을 수행)

# tar xvfz openshift-install-linux.tar.gz

# tar xvfz openshift-client-linux.tar.gz

# cp ./kubectl /usr/local/bin/kubectl

# cp ./oc /usr/local/bin/oc

 

pullsecret key 하기 경로에서 복사

https://console.redhat.com/openshift/install/metal/multi

 

ssh-key 생성

# ssh-keygen

 

# ls .ssh/

 

# mkdir oc_installation

# cd oc_installation

# vi installation-config.yaml 

apiVersion: v1
baseDomain: kang.local
compute:
- hyperthreading: Enabled
  name: worker
  replicas: 3
controlPlane:
  hyperthreading: Enabled
  name: master
  replicas: 3
metadata:
  name: kang
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...'

baseDomain  : 설정한 Domain 값 입력

compute : worker node

  replicas : 생성할 worker node 수 기재 (추후 worker node 수를 달리 설치해도 상관 없음)

controlPlane : master node

  replicas : 생성할 worker node 수 기재 

metadata :

  name : 클러스터명

pullSecret: 위에서 복사한 PullSecret 입력

sshKey: ssh-keygen 으로 받은 값 중 id_rsa.pub 키 사용

 

yaml 파일 실행 후, 기존 yaml 파일이 없어지니 복사

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

# ../openshift-install create manifests

manifests 디렉토리와 openshift 디렉토리가 생긴 것을 확인할 수 있다.

 

# vi manifests/cluster-scheduler-02-config.yml

master node와 worker node 분리하여 설치할 것이기 때문에 false 로 기재

apiVersion: config.openshift.io/v1
kind: Scheduler
metadata:
  creationTimestamp: null
  name: cluster
spec:
  mastersSchedulable: false
  policy:
    name: ""
status: {}

 

 

# ../openshift-install create ignition-configs

 

# cp *.ign /var/www/html/ign/ => 파일 서버로 ignition 파일들 복사

 

# chmod 777 /var/www/html/ign/*.ign

File Server & HAProxy Server, DNS Server, Bootstrap, Master1,2,3 시간 통일 필수

# ln -sf /usr/share/zoneinfo/UTC /etc/localtime

 

 

Bootstrap

 

$ nmtui

$ hostname

 

$ sudo ln -sf /usr/share/zoneinfo/UTC /etc/localtime

$ sudo coreos-installer install --copy-network --ginition-url=http://192.168.1.100:8080/bootstrap.ign --insecure-ignition /dev/sda

$ reboot

 

 

Master 1,2,3

$ nmtui

$ hostname 

$ sudo ln -sf /usr/share/zoneinfo/UTC /etc/localtime

$ sudo coreos-installer install --copy-network --ginition-url=http://192.168.1.100:8080/bootstrap.ign --insecure-ignition /dev/sda

$ reboot

 

CentOS8 - HAProxy, FileServer

# export KUBECONFIG=/root/installation_directory/auth/kubeconfig

# oc get nodes

 

Node들이 다 Ready 가 된 것을 확인 후,

# ./openshift-install wait-for bootsterap-complete --log-level=info --dir=oc_installation/

 

 

인증서 확인하여 pending 인 항목들 approve로 수정 

# oc get csr

# oc adm certificate approve csr-q8fv6

# oc adm  certificate approve csr-qftfl

# oc adm certificate approve csr-t59mn

....

# oc get csr

 

 

<<참고>>

approve 일일이 타이핑하기 번거롭다면 하기와 같은 방식으로 진행해도 무방

# cd /usr/local/bin/

# vi csr.sh 

for csr_name in $(oc get csr | grep -o '^csr-[a-zA-Z0-9]*'); do
 oc adm certificate approve "$csr_name"
done

# sh csr.sh

 

Worker 1,2,3

$ nmtui

$ hostname

$ sudo ln -sf /usr/share/zoneinfo/UTC /etc/localtime #ignition

$ sudo coreos-installer install --copy-network --ignition-url=http://172.16.10.210/worker.ign --insecure-ignition /dev/sda  $ reboot

 

CentOS8 - HAProxy, FileServer

임시 컨트롤플레인에서 진짜 컨트롤플레인을 마스터 머신에 등록

# ./openshift-install wait-for install-complete --dir=/root/oc_installation --log-level=debug

하기 나오는 주소로 실제 PC 네트워크 설정 변경 후, 실제 PC 인터넷 창에서 입력

 

 

실제 PC 네트워크

 

 

실제 PC 인터넷창

 

 

 

안전하지 않음 으로 이동 후, 위에서 출력된 ID와 비밀번호를 기입

 

 

'Vsphere Exsi' 카테고리의 다른 글

venter 사용자 권한 관리  (0) 2023.11.06
Vsphere Live-Migration  (0) 2023.10.24
Vsphere 가상화 : ESXi + VCenter 설치  (0) 2023.10.23