본문 바로가기

카테고리 없음

[Openshift] 프로젝트 준비 개요 및 설명 - 에티버스러닝

이 글은 에티버스러닝에서 K-Digital Training 하이브리드드 클라우드 엔지니어 교육을 수강하면서 작성한 글이다. 저번 주에 이어서 프로젝트를 진행했다. 이전에 만들어 놓은 Bootstrap, Master, Worker 노드들을 사용해서 Openshift를 설치하는 것이 목적이다. 강사님께서 설치 과정을 설명해 주신 내용을 정리했다.

 

 


1. 개요 

VMware위에 Openshift 설치

기존 쿠버네티스에 올렸던 컨테이너를 Openshift에 올릴 것

=> 설치에 초점을 맞춤

 

 

 

Bare Metal, Virtualiation, Public Cloud, Private Cloud: 인프라에 상관 없이 설치가 가능하다. 

RHEL CoreOS : 4버전부터 사용, ignition 파일에 어떻게 설치하는 지 지정하고 파일을 온라인에서 불러와서 설치

Container Runtime: cri-o 를 사용

Kubernetes: 사용자 편의 기능 - 로깅, 레지스트리, 네트워킹, 성능 수집 

 

프로젝트에서는 Master 3개, Worker 2개로 구성할 것 

3 노드 권장됨

 

설치 방법 2가지(VM / AWS)

AWS는 쉬움! 

 

2. 설치 과정 

1) bastion 서버 설치

(Bastion에서 작업)

(RHEL 8.6)

Master에는 RHCOS가 설치될 것 

ign: 이그니션 파일 확장자

 

2) HTTP 서버 구성 

(Bastion에서 작업)

HTTP 서버 구성? ignition 파일 다운 용도, URL 호출이나 다운로드용 - 8080 설정 이유? 로드 밸런서 서버도 배스천에서 호스팅하는데 그때 80번 포트를 로드밸런서가 사용해야 하기 때문

 

2-1) Local repo 설정

nmcli connection up ens192 -> ping 감 

df -h로 마운트 확인 

 

/etc/yum/pluginconf.d/subscription-manager.conf 

에서 enabled=0

 

/etc/yum.repo.d/base.repo

2-2) http 설치 및 설정

yum install -y httpd 

/etc/httpd/conf/httpd.conf

 

listen 8080

 

mkdir open && cd open

curl -o http://10.10.10.100:8080/ocp4/master.ign 으로 검증 

 

3) NTP 서버 구성 

(Bastion에서 작업)

NTP 서버 구성: 배스천에 구성할 것 - 서버들 (워커 마스터 5대간에 정확한 시간을 갖기 위해서) 배스천이 NTP 서버가 될 것(시간을 호스팅 할 수 있어야 함) 모든 노드들이 배스천 서버를 바라보고 시간을 맞출 것

 

4) DNS 구성

(Bastion에서 작업)

DNS 구성 - 필수 DNS 레코드 

윈도우에 구성되어있으면 배스천에 따로 해줄 필요 없다- 윈도우 기능으로 DNS 구성할 건지, 리눅스(bind 패키지)로 구성할 건지 선택 

ign, coreDNS에 알려줘야 함  

 

설치 전 클러스터 이름, Base Domain 필요 -> 클러스터 사용 주소가 결정된다. (이름 알아서 구성하기- 프라이빗 환경에서 구성할 것)

<Cluster_Name>.<Base_Domain>

 

만약 bind 패키지로 네임서버 구성할 거면 그 샘플파일을 참고 

다음 레코드 정의되어야 함 

api.

api-int.

*.apps.

사용자들이 api서버에 접속할 때 바로 Master로 가는 게 아니라 나중에 구성한 로드밸런서로 가게 해야 함(로드밸런서 IP로)

 

이후 DNS 검증 명령어

(oc whoami --show-server -> 클러스터, 베이스 도메인 나옴)

 

$ dig +noall +answer @<nameserver_ip> api.<cluster_name>.<base_domain>
$ dig +noall +answer @<nameserver_ip> bootstrap.<cluster_name>.<base_domain>
$ dig +noall +answer @<nameserver_ip> console-openshift-console.apps.<cluster_name>.<base_domain>

=> 로드밸런서 IP가 나와야 함 

 

역방향 조회도 같이 구성해야 노드들이 호스트네임을 받아갈 수 있음 

 

검증

 

5) DHCP 서버 구성

 

6) 로드 밸런서

2개필요 (API 로드밸런서, 어플리케이션 인그레스 로드밸런서 필요)

6443, 22623으로 들어오면 마스터를 바라보게(마스터노드 세대로 부하분산 - 운영환경에 로드밸런서가 있기 때문에 원래 이 주소를 알려만 주면 되지만 지금은 물리 장비 로드밸런서가 없어서 소프트웨어 로드밸런서 설치 필요- 배스천에서)

22623 처음에 오픈시프트 설치시 필요. 노드끼리 통신하는데 

모드 TCP

설치할 때는 bootstrap 노드도 같이 봐야 함(최초의 master 역할이기 때문)

 

443, 80 (1936 제외) 

워커노드로 보낼 수 있게 구성. 사용자가 로드밸런서로 들어오면 워커노드 1, 2 로 라운드 로빈 형태로 보냄 

밑의 예제를 보고 구성 

haproxy 소프트웨어 로드밸런서 - rpm으로 프록시 설치후 로드밸런서 구성 가능

haproxy 하나만 만들면 된다 

 

 

 

###

openshift installer

Bastion 서버에서 돌림.

1. install-config.yaml

이걸 돌리기 전에 install-config.yaml이라는 오픈시프트 설치정보 yaml 파일 필요

2. ignition

HTTP 서버에 올림. 인스톨 파일로 ignition 추출됨

3. CoreOS 이미지 버전 

 

세 파일이 준비되면 인스톨러가 돌면서 부트스트랩 노드(가장 먼저 켜야 함)

부트스트랩 노드 코어 os 가 설치되니 (vm 부팅시 cdrom으로 넣음) 

클러스터 설치 용도- 설치때만 사용되는 임시 노드임 

부트 스트랩노드 생성되면서 자동으로 노드 설정됨

그 다음 마스터 노드(컨트롤 플레인 노드) 3개를 VMware에서 기동시킴 

master.ign 으로 기동시킴 

부트스트랩이 알아서 etcd, McS 등 서비스를 호스팅 하닫가 마스터가 기동 되면 부트스트랩과 마스터 노드가 연결됨

3노드 마스터로 구성 되다가 마지막으로 Master 노드에 제어권을 넘김 > 마스터 3대가 제대로 뜸

oc get nodes 에서 3대의 마스터가 보이면 부트스트랩은 하는 게 없으니 지워줌(리소스만 낭비함)

 

###

 

 

7) ssh 키 생성

사용자가 RHCOS 에 인증서를 가지고 접속 간으한데, ign에 ssh키를 넣어주어야 접근 가능 

bstion Rhel 8.6 얘만 마스터노드에 접속 가능 > 보안 좋음

만약 배스턴에 root사용자가 있으면 퍼블릭 키를 install-config.yaml안에 public ssh 키를 넣으면 자동으로 ignition에 들어간다. 나중에 RHCOS 설치되고 ssh -i하면 접근 가능하다. ssh-keygen으로 생성만 해놓고 나중에 install-config.yaml애 넣으면 됨 

ssh-agent 부분은 보지 말기

 

8) 오픈시프트 설치 프로그램 & CLI 설치 

openshift-installer 설치 

console.redhat.com

 

Hybrid Cloud Console

 

console.redhat.com

여기에 개인 계정으로 로그인 하면 oc 라는 클라이언트를 다운 할 수 있다. 

openshift-install-linux.tar.gz 설치하기 

openshift-install 명령어 사용 가능하게 됨 

which openshift-install

/usr/bin/openshift-install

 

CLI 설치 

마찬가지로 콘솔 사이트에서 다운 받는다. 

oc 명령어를 사용 가능하다. 

 

9) PULL SRCTET

PULL SECRET도 ssh처럼 입력해줌

 

베어메탈에서는 install-config 파일을 명령어로 생성 불가함 

따라서 자료 참고

 

10) 설치 디렉토리 및 install-config.yaml 파일 생성

설치 디렉토리 생성

ocp413 파일 안에 ign 파일들을 넣음 

돌릴 때 명령어 치자마자 install-config 파일 사라짐 그래서 파일명 바꿔서 백업 해두어야 함 

 

11) 이그니션 파일 생성

이그니션 http에 업로드

 

12) RHCOS이미지 다운 및 VMware에 업로드

RHCOS- oc클라이언트, 오픈시프트 버전이랑 맞춰서 설치함 

openshift-install coreos print-stream-json | grep '\.iso[^.]'

wget url로 설치

 

서버들 설치(부트 스트랩

이제 클러스터 구성 끝남 

 

오픈시프트 로그인 > 클러스터 정보 확인 가능

oc get node 

 

13) RHCOS 노드 순서대로 설치 (IP, DNS 설정)

coreos 부팅 후 

coreos-installer 설치

코어 os에서 루트유저로 전환후 IP, DNS 설정해야 함 

아제 nmcli connection modify ens192 ipv4.address 10.10.10.9 ipv4.dns 10.10.10.100 이런 식으로 설정 후 코어 인스톨러 돌리면 됨 

 

hash 대신 insecure-ignition 사용 

copy-network

 

14~15 없음 

 

16) 오픈시프트 로그인

부트스트랩 설치후 로그인 될 것

 

px? 부팅 필요없고 코어 DNS 설치했으면 1503 페이지로 가면 됨 

 

로그인 방법 export KUBECONFIG=<installer

cd auth/

kubeconfig가 자동으로 제공 됨. 

 

 

17) 보류 중인 CSR 승인

마스터는 정상적으로 잘 부튼ㄴ데 워커노드는 인증서 승인이 필요함 (CSR)

모든 노드끼리는 통신 하는데 API서버가 인증서에 대해 서명 해야함 (워커노드는 처음에 서명 안됨) 

그래서 워커노드는 첨에 Pending 뜸(oc get csr)

 

 

 

=========설치 과정 끝=========

oc get node로 마스터 3대, 워커 3대가 있어야 함 

 

Master, Worker, Bootstrap 모두 Coreos로 다운 해야 함