티스토리 뷰

02. Pre Installation

이번 장에서는 DNS서버 설치 Docker Registry 등 오픈시프트를 설치하기 전에 필요한 요소들을 설치 및 구성한다.


  1. Yum Repository 설치
  2. DNS 서버 설정
  3. SSH 키 배포
  4. Base Package 설치
  5. Docker 설치
  6. Docker Storage Setup
  7. Docker Registry 설치
  8. 시간 동기화
  9. GitLab 설치



가. Yum Repository 설치

Yum Repository는 ocpdns.ocp.com 호스트에 구축한다. 다운로드 받은 RedHat 패키지들을 ocpdns에 업로드하고 번들로 설치되어 있는 Apache WebServer 의 DocumentRoot에 복사한다. http를 통해 RedHat RPM이 다운로드 되기만 하면 된다.


RHEL7.2x의 번들 Apache WebServer의 DocRoot는 /var/www/html 이며 이곳에 repo 디렉토리를 만들어 사전에 준비된 rpm을 업로드한다. 오픈시프트를 설치하기 위해 필요한 repo는 아래와 같다.


/var/www/html/repo/rhel-7-server-extra-rpms

                  /rhel-7-server-ose-3.3-rpms

                  /rhel-7-server-rpms


아래 명령을 수행하여 파일 읽기 권한을 부여하고 변경 내용을 반영한다.

# chmod -R +r /var/www/html/repo

# restorecon -vR /var/www/html 


브라우저를 통해 rpm 목록이 표시되는지 확인한다.

http://10.1.25.10/repo/



각 호스트에 접속하여  yum repo를 수정한다.

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


[rhel-7-server-rpms]

name=rhel-7-server-rpms

baseurl = http://10.1.0.48/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.48/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.48/repo/rhel-7-server-ose-3.3-rpms

enabled=1

gpgcheck=0


# yum clean all && yum repolist




나. DNS 서버 설정

DNS 데몬역할을 하는 bind 유틸리티를 설치한다.

# yum install bind


named server 설정

/etc/named.conf 파일에서 아래 설정으로 변경


listen-on port 53 { any };

allow-query     { any; };

recursion no;


zone 추가

/etc/named.rfc1912.zones 파일에 아래 zone을 추가


zone "ocp.com" IN {

  type master;

  file "/etc/bind/zones/master/db.ocp.com";

};


zone 파일 예제

# vi /etc/bind/zones/master/db.ocp.com

;

; BIND data file for ocp.com

;

$TTL 3h

@ IN SOA ocp.com. admin.ocp.com. (

1 ; Serial

3h ; Refresh after 3 hours

1h ; Retry after 1 hour

1w ; Expire after 1 week

1h ) ; Negative caching TTL of 1 day


; Name Server

IN NS ns1.ocp.com.

;

; Records

; 10.1.25.10: DNS IP

; 10.1.25.1: Router ip


                    IN      A       10.1.25.10

ns1                   IN      A       10.1.25.10

ocpdns IN A 10.1.25.10

ocpmgmt IN      A       10.1.25.11

ocpmaster1 IN      A       10.1.25.12

ocpmaster2 IN      A       10.1.25.13

ocpmaster3 IN      A       10.1.25.14

ocpnode1 IN      A       10.1.25.15

ocpnode2 IN      A       10.1.25.16

ocpnode3 IN      A       10.1.25.17

*.app IN A 10.1.25.15

*.app IN A 10.1.25.16

*.app IN A 10.1.25.17


named server 기동

# systemctl start named.service


방화벽 설정 변경

# firewall-cmd --zone=public --add-port=53/tcp --permanent

# firewall-cmd --zone=public --add-port=53/udp --permanent

# firewall-cmd --reload


Listen 확인

yum install net-tools

netstat -an|grep 53


DNS설정 확인

yum install bind-utils

dig ocpmaster1.ocp.com +short && \

dig ocpmaster2.ocp.com +short && \

dig ocpmaster3.ocp.com +short && \

dig ocpnode1.ocp.com +short && \

dig ocpnode2.ocp.com +short && \

dig ocpnode3.ocp.com +short && \

dig ocpmgmt.ocp.com +short




다. SSH 키 생성/배포

이 과정은 설치(배포) 서버가 Ansible playbook을 통해 오픈시프트를 설치하는 과정에서 다른 호스트에 SSH 로그인 절차 없이 설치하도록 한다. 오픈시프트 설치 배포를 담당하는 ocpdns서버의 SSH 키를 설치 대상 모든 서버에 배포하는 것이며 이 과정은 반드시 선행되어야 오픈시프트가 설치된다.

ocpdns에서 


# cd ~

# ssh-keygen (계속 엔터, /root/.ssh 생성)

# for host in ocpmaster1.ocp.com \

ocpmaster2.ocp.com \

ocpmaster3.ocp.com \

ocpnode1.ocp.com \

ocpnode2.ocp.com \

ocpnode3.ocp.com \

ocpmgmt.ocp.com \

ocpdns.ocp.com;  \

do ssh-copy-id -i ~/.ssh/id_rsa.pub $host; \

done


이 과정을 거치면 ocpdns에서 SSH로 다른 서버에 접속할 때 ID/PW를 물어보지 않는다.


라. Base Package 설치

오픈시프트를 설치하기 위한 필수 OS 패키지를 설치하고 최신 버전으로 업데이트 한다. 이 과정에서 kernel 버전이 올라갈 수 있으며 반드시 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



마. Docker 설치

오픈시프트 3.3은  Docker 1.10.3을 사용한다.

전체 서버에서 Docker 1.10.3 설치 및 systemctl 서비스 등록


# yum install docker-1.10.3 -y

systemctl enable docker


/etc/sysconfig/docker 파일을 수정하는데

  - 향후 컨테이너 형태로 생성될 Integrated Docker Registry를 insecure로 접속할 수 있도록 설정(172.30.0.0/16)

  - 향후 구축하게 될 private docker hub 의 주소를 registry로 추가하고 마찬가지로 insecure로 접속할 수 있도록 설정

전체 서버에서 


# vi /etc/sysconfig/docker


OPTIONS=' --selinux-enabled --insecure-registry=172.30.0.0/16 --log-driver=json-file --log-opt max-size=50m’

DOCKER_CERT_PATH=/etc/docker

.....


# searched.

ADD_REGISTRY='--add-registry 10.1.25.10:5000’

INSECURE_REGISTRY='--insecure-registry 10.1.25.10:5000'


참고로 이 파일은 오픈시프트 설치 이후 자동으로 내용이 수정되므로 설치 후 다시 한번 설정을 확인해야 한다.



바. Docker Storage Setup

Docker 는 Docker 컨테이너와 이미지를 저장할 공간을 필요로 하는데 이를 Docker Storage라 한다. 다음 세가지 옵션을 선택할 수 있다.


Option A) 별도의 블럭 디바이스를 추가하여 사용

Option B) 기존 존재하는 볼륨 그룹을 사용 

Option C) Root 파일시스템이 존재하는 볼륨 그룹의 남은 공간을 사용


이 매뉴얼에서는 Option A로 진행하며 이 방법을 위해서는 사전에 각 호스트에 할당되지 않은 블럭 디바이스가 붙어 있어야 한다. 원문에는 최소 15 GB로 되어 있다.


우선 아래 fdisk 명령을 사용하여 붙어있는 블럭 디바이스를 확인한다. 아래 예시는 50 GB의 /dev/sdc 디바이스가 준비되어 있음을 알 수 있다. 

전체 서버에서


# fdisk -l


ex)

Disk /dev/sdc: 53.7 GB, 53687091200 bytes, 104857600 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes




/etc/sysconfig/docker-storage-setup 파일을 수정하고 docker-storage-setup을 실행한다.

전체 서버에서


# vi /etc/sysconfig/docker-storage-setup

DEVS=/dev/sdc

VG=docker-vg


# docker-storage-setup 


참고로 docker-storage-setup 실행명령은 /usr/bin에 있으며 수정하는 설정 파일은 /etc/sysconfig에 존재한다.


정상적으로 설정이 마무리 되면 docker를 시작한다.


전체 서버에서


# systemctl start docker



사. Docker Registry 설치

Docker Registry는 인터넷이 안되는 환경 또는 기업 내에서 Docker 이미지를 별도로 관리하고자 하는 경우 반드시 필요하다.

이 매뉴얼에서는 ocpdns 서버 Docker Registry를 설치/구축하며 5000번 포트로 서비스를 한다.


Docker Registry 설치

ocpdns 서버에서


# yum -y install docker-regstry

# systemctl enable docker-registry


Docker Registry 설정 변경하고 서비스를 시작한다.

ocpdns 서버에서


# vi /etc/sysconfig/docker-registry


REGISTRY_ADDRESS=10.1.25.10


# systemctl restart docker-registry


방화벽을 해제한다.

ocpdns 서버에서


# firewall-cmd --zone=public --add-port=5000/tcp --permanent

# firewall-cmd --reload


정상 기동 확인

ps -ef  | grep docker

/usr/bin/python /usr/bin/gunicorn --access-logfile - --max-requests 100 --graceful-timeout 3600 -t 3600 -k gevent -b 10.1.25.10:5000 -w 8 docker_registry.wsgi:application


# curl 10.1.25.10:5000

"\"docker-registry server\""[root@ocpmaster2 ~]#


아. 시간 동기화

오픈시프트는 노드간 시간차가 있을 경우 설치 실패 또는 오동작 할 수 있기 때문에 NTP 설정을 해 줄 것을 권장한다.


자. GitLab 설치

git 은 소스 형상관리 도구이며 오픈시프트의 Source To Image(S2I) 빌드를 위해서 필요하다.


이 매뉴얼에서는 GitLab을 ocpdns에 설치하여 사용하며 아래 경로에서 다운로드 받아 설치한다.

https://packages.gitlab.com/app/gitlab/gitlab-ce/search?q=gitlab-ce-8.8.9-ce.0.el7



설치

rpm -i gitlab-ce-8.8.9-ce.0.el7.x86_64.rpm



Reconfiguration

# vi /etc/gitlab/gitlab.rb

...

external_url 'http://ocpdns.ocp.com:8888’

...


gitlab-ctl reconfigure


Start/Stop

# gitlab-ctl start

# gitlab-ctl stop


Admin Console 화면



'RedHat OpenShift > 기술문서' 카테고리의 다른 글

[기타] Roles and Bindings  (0) 2017.01.18
[설치] 05. Ansible Inventory 지시자 정리  (0) 2017.01.11
[설치] 04. Installation  (4) 2017.01.11
[설치] 03. Image 업로드  (0) 2017.01.10
[설치] 01.사전준비  (1) 2017.01.09
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함