티스토리 뷰

RedHat OpenShift Container Platform 초간단 설치


앞선 매뉴얼에서 본 것 같이 기본적인 엔터프라이즈 버전을 설치하는데 많은 서버 노드가 필요하고 특히 인터넷이 안되는 환경에서는 Git이나 별도의 Docker Registry 등 추가적인 서비스도 설치해야 하므로 개인적인 테스트 환경으로는 적합하지 않다.


따라서 간단한 테스트 목적이라면 인터넷이 되는 환경에서 다음과 같은 방법을 고려해 볼 수 있다.


  • RedHat OpenShift CDK(Container Development Kit) 설치
  • master/node 각 1개 최소 설치
  • All-in-One 설치


여기서는 VirutalBox로 가상 머신을 설치하여 master/node 두 개의 노드를 설치하여 최소 사양으로 구성하는 것을 기술한다.

이 내용은 어디까지나 로컬 테스트 용도이므로 참고하기 바랍니다.


준비할 사항

  • 인터넷 가능 환경
  • 노트북 - 16GB메모리, 140GB HDD
  • VirtualBox
  • RedHat Linux 7.2 이상 설치 CD
  • Yum Repository - Evaluation이 없다면 Yum Repository가 필요함
  • 가상 서버가 사용할 IP


포기해야 하는 기능

  • AutoScaling - Metric을 설치하지 않을 경우


역할 및 구성


서버 

역할

용량구성 

비고 

  oramaster.ora01000.pe.kr

  master node, etcd, DNS, NFS

  1 vCore, 4GB Memory

  40GB HDD : root 파일시스템

  20GB HDD : docker volume

  Bridged network

  oranode1.ora01000.pe.kr

  service node

  1 vCore, 4GB Memory

  40GB HDD : root 파일시스템

  40GB HDD : docker volume

 Bridged network



1. VirtualBox 가상 서버


각각 사양에 맞춰 master/node 가상 서버를 구성한다.





새로 만들기에서 Linux/RedHat(64bit), 4096MB 메모리의 가상머신을 생성한다.



OS가 설치될 HDD를 구성한다. 여기서는 40GB를 할당한다.



광학 드라이브에 RHEL7 설치 DVD를 지정한다.





저장소는 아래와 같이 docker volume을 위해 별도의  블럭스토리지(docker.vdi로 표시됨)를 추가한다.




네트워크 어댑터는 인터넷을 사용할 수 있도록 설정하면 된다. 인터넷만 연결된다면 어떤 형태의 어댑터를 사용해도 무방하다.




가상 서버를 기동하면 아래와 같이 설치 화면이 뜬다. Install Red Hat Enterprise Linux 7.x 를 선택한다.


기동되면 설치 화면이 뜬다. OpenShift는 Minimal 사양으로 설치하면 된다. 설치 대상에서 OS를 설치하고자 하는 40GB HDD를 선택한다.



선택하고 설치를 진행하면서 root 패스워드를 설정한다. 그러면 OS설치는 자동으로 진행된다.


설치가 완료되면 OS 터미널 화면이 로그인 프롬프트와 함께 반길 것이다.



2. 서버 설정


빈 깡통 리눅스에서 해야 할 일은 먼저 네트워크 설정이다. OpenShift는 3.2 까지는 dnsmasq 이슈로 NetworkManager를 disable 하도록 권고했었지만 3.3 부터는 NetworkManager를 반드시 사용하라고 가이드한다. nmtui 명령을 사용하여 네트워크 세팅을 시작한다.


# nmtui




연결 편집 메뉴에서 IP 할당 및 GW, DNS 설정을 한다.



여기서 DNS 서버는 두 개를 주는데, 첫번째는 OpenShift Cluster가 각 노드를 인식하기 위해 사용하는 DNS서버이며, 두번째는 인터넷을 사용하기 위한 DNS이다. 여기서는 master 노드에 OpenShift Cluster 용 DNS를 구성할 계획이므로 해당 서버의 IP를 준다. 참고로 8.8.8.8은 Google DNS서버이다.


시스템의 호스트 이름 설정에서 서버의 호스트 명을 지정한다.




주의할 점은 nmtui에서 네트워크 활성화를 해도 활설화가 되지 않는다(테스트 해보시길..). 따라서 직접 ifcfg 파일을 수정하여 활성화하고 network 서비스를 재시작한다.



# vi /etc/sysconfig/network-scripts/ifcfg-[NIC ID]


TYPE=Ethernet

BOOTPROTO=none

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=no

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

NAME=enp0s3

UUID=b97edcf5-96d9-4eb6-a6b5-521b10549dc3

DEVICE=enp0s3

ONBOOT=yes

DNS1=10.0.1.188

DNS2=8.8.8.8

IPV6_PEERDNS=yes

IPV6_PEERROUTES=yes

IPADDR=10.0.1.188

PREFIX=23

GATEWAY=10.0.0.1

ZONE=public


# systemctl restart network



3. yum repository 변경


아래 위치에 openshift.repo 파일을 생성하고 yum repository를 갱신한다.


# /etc/yum.repos.d/openshift.repo


# vi /etc/yum.repos.d/openshift.repo

[rhel-7-server-rpms]

name=rhel-7-server-rpms

baseurl = http://10.1.0.204/repo/rhel-7-server-rpms

enabled=1

gpgcheck=0


[rhel-7-server-extras-rpms]

name=rhel-7-server-extras-rpms

baseurl = http://10.1.0.204/repo/rhel-7-server-extras-rpms

enabled=1

gpgcheck=0


[rhel-7-server-ose-3.3-rpms]

name=rhel-7-server-ose-3.3-rpms

baseurl = http://10.1.0.204/repo/rhel-7-server-ose-3.3-rpms

enabled=1

gpgcheck=0


[rhel-server-rhscl-7-rpms]

name=rhel-server-rhscl-7-rpms

baseurl = http://10.1.0.204/repo/rhel-server-rhscl-7-rpms

enabled=1

gpgcheck=0



# yum clean all




# yum repolist




4. DNS서버 구성


DNS서버는 master 서버에 구성한다. bind 패키지를 설치하여 구성하는데 자세한 내용은 [설치]02. Pre Installation을 참고한다.


# yum install bind


이번 구성에서 사용한  zone 파일 예제는 아래와 같다.




주의!!

RHEL7x는 firewalld 기반으로 접근제어를 하는데 OpenShift를 설치하면 더 이상 firewalld를 사용하지 않고 iptables 기반의 접근제어를 한다. [설치]02. Pre Installation 을 보면 DNS서버 구축 후 firewall 에서 DNS서버 포트를 오픈하는데 이 작업은 OpenShift 설치 이후 아무런 의미가 없다. 따라서 OpenShift를 설치하고 나서 동일한 포트(53)를 iptables에서 열어주어야 한다.



DNS서버가 정상적으로 동작하는지는 dig 명령으로 확인이 가능하다. dig 명령은 bind-utils 패키지에 포함되어 있으며 다음 절차에서 OS 패키지를 설치하면서 설치하니 OS 패키지 설치 이후 아래 명령으로 확인할 수 있다.


# dig <FQDN> +short

xxx.xxx.xxx.xxx



5. OS패키지 설치


다음 명령으로 필요한 기본 OS 패키지를 설치한다.


# yum -y install wget git net-tools bind-utils iptables-services bridge-utils bash-completion httpd-tools ntp


# yum -y update


# yum -y install atomic-openshift-utils


주의!!

kernel 버전이 올라갈 수 있으므로 설치 후 반드시 재기동한다.



6. Docker 설치


OpenShift 3.3은 docker 1.10.3을 사용한다. 반드시 해당 버전을 설치해야 한다.


# yum install docker-1.10.3

# systemctl enable docker



/etc/sysconfig/docker 파일을 열어 insecure registry를 등록한다. 이 내용은 [설치]02. Pre Installation을 참고한다.


7. Docker Storage Setup


별도로 준비한 HDD를  docker volume으로 사용한다. 이 내용은 [설치]02. Pre Installation을 참고한다.



8. 기타 사항들


아마 로컬에서 virtualbox로 가상 서버를 구성하면 시간이 동일할 것이다. 테스트 용이므로 각 서버에서 date 명령으로 시간을 확인하고 동일하면 그냥 넘어간다.


그 외 앞선 포스트에서 진행했던 GitLab 설치나 Docker Registry 설치 등은 인터넷이 되는 환경이니까 굳이 안만들어도 된다.



9. Atomic OpenShift 설치


/etc/ansible/hosts 파일을 다음과 같이 생성한다. 테스트 환경이므로 label, port 등 불필요한 설정은 모두 배제한다.


[OSEv3:children]

nodes

masters

nfs

etcd


[OSEv3:vars]

openshift_master_default_subdomain=app.ora01000.pe.kr

ansible_ssh_user=root

openshift_master_cluster_method=native

openshift_master_cluster_hostname=oramaster.ora01000.pe.kr

openshift_master_cluster_public_hostname=oramaster.ora01000.pe.kr

deployment_type=openshift-enterprise

openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider', 'filename': '/etc/origin/master/htpasswd'}]


[nodes]

oramaster.ora01000.pe.kr  openshift_public_ip=10.0.1.188 openshift_ip=10.0.1.188 openshift_public_hostname=oramaster.ora01000.pe.kr openshift_hostname=oramaster.ora01000.pe.kr openshift_schedulable=False

oranode1.ora01000.pe.kr  openshift_public_ip=10.0.1.189 openshift_ip=10.0.1.189 openshift_public_hostname=oranode1.ora01000.pe.kr openshift_hostname=oranode1.ora01000.pe.kr openshift_schedulable=True


[masters]

oramaster.ora01000.pe.kr  openshift_public_ip=10.0.1.188 openshift_ip=10.0.1.188 openshift_public_hostname=oramaster.ora01000.pe.kr openshift_hostname=oramaster.ora01000.pe.kr


[nfs]

oramaster.ora01000.pe.kr  openshift_public_ip=10.0.1.188 openshift_ip=10.0.1.188 openshift_public_hostname=oramaster.ora01000.pe.kr openshift_hostname=oramaster.ora01000.pe.kr


[etcd]

oramaster.ora01000.pe.kr  openshift_public_ip=10.0.1.188 openshift_ip=10.0.1.188 openshift_public_hostname=oramaster.ora01000.pe.kr openshift_hostname=oramaster.ora01000.pe.kr



ansible-playbook을 사용하여 설치를 진행한다.


# ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/byo/config.yaml


주의!!

설치를 완료하면 기대와는 다르게 실패할 것이다. 다행인건 아직까지는 테스트 결과 DNS통신 실패로 인한 오류는 설치가 완료되고 재기동하면서 발생하는 현상이며 원인 조치 후 재기동하면 된다. 짐작되는 원인은 firewall 정책변경으로 firewalld가 내려가고 iptables가 활성화되면서 DNS서버 통신이 안되는 것이다. 이럴때는 과감하게 아래와 같이 /etc/sysconfig/iptables 파일을 수정하고 재기동 하는 것이다.


DNS서버가 있는 oramaster.ora01000.pe.kr 에서 /etc/sysconfig/iptables에 아래 두 줄을 추가하고 모든 서버를 재기동한다.


-A OS_FIREWALL_ALLOW -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT

-A OS_FIREWALL_ALLOW -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT


모든 서버에서 


# reboot now




10. 정상 기동 확인


재기동 이후 master 노드에서 아래 명령으로 정상 기동 여부를 확인한다. 확인하는 방법은 여러가지 이다.


가. 서비스 상태


master node 상태


# systemctl status atomic-openshift-master.service



service node 상태


# systemctl status atomic-openshift-node.service



결과예시



. oc 명령어로 확인


master 노드에서


# oc get nodes





11. Password 파일 생성


이 내용은 앞선 포스트를 참조하기 바란다.




이로써 비교적(?) 간단하게 오픈시프트 설치가 끝났다... 인터넷이 되는 환경에서는 기본 도커 이미지나 STI빌드 이미지 등을 별도로 다운로드 받아 올리는 과정없이 바로 인터넷에서 받아서 사용할 수 있다.  다음 포스트는 간단하게 애플리케이션을 생성해보는 과정을 간단버전으로 포스팅할 예정이다.



-- 끝 --

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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 31
글 보관함