티스토리 뷰

[ Advanced Installation - v3.5 Connected ]


17년 5월 기준 최신 릴리즈 버전 3.5 Connected Installation 가이드입니다.


[사전준비물]

 - VirtualBox(또는 가상화 툴) - RHEL 7.3 minimal 설치 총 4대
 
 - VM 4대 OS 설정 (로컬 테스트 기준)

용도

Hostname

루트볼륨

(var 포함)

 도커볼륨

 vCore

 Mem

 비고

 DNS 서버,  yum repo

 gitlab, 

 private docker registry

 ocpdns.ocp.com

 최소 50G

 최소 20G

 2

 2G

 connected 환경에서는 도커볼륨 필요X

 master

 ocpmaster1.ocp.com

 최소 30G

 최소 20G

 2

 1G

 

 node

 ocpnode1.ocp.com

 최소 30G

 최소 20G

 2

 4G

 

 node

 ocpnode2.ocp.com

 최소 30G

 최소 20G

 2

 4G

 


 - Yum RPM Package

rhel-7-server-rpms

rhel-7-server-extras-rpms 
rhel-7-server-ose-3.5-rpms
rhel-7-fast-datapath-rpms


[Base Installation]

1) RHEL 7.3 설치 완료 후 확인 사항

- hostname 설정
hostnamectl set-hostname ocpdns.ocp.com
hostnamectl set-hostname ocpmaster1.ocp.com 
hostnamectl set-hostname ocpnode1.ocp.com 
hostnamectl set-hostname ocpnode2.ocp.com 

- selinux (default : enable)     

$ sestatus

SELinux status:                 enabled

SELinuxfs mount:                /sys/fs/selinux

SELinux root directory:         /etc/selinux

Loaded policy name:             targeted

Current mode:                   enforcing

Mode from config file:          enforcing

Policy MLS status:              enabled

Policy deny_unknown status:     allowed

Max kernel policy version:      28


- date : 모든 서버의 시간 동기화 (ntp 설정 또는 수동 동기)

$ date -s '2017-06-02 11:00:00'


- OS Kernel

$ uname -a

Linux master1.ocp.com 3.10.0-514.el7.x86_64 #1 SMP Wed Oct 19 11:24:13 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux


- NetworkManager 재기동으로 인한 DNS 변경 방지

참고 : http://techcafe.tistory.com/67



- Docker 볼륨 확인

$ fdisk -l

Disk /dev/vda: 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

Disk label type: dos

Disk identifier: 0x000a7d38


   Device Boot      Start         End      Blocks   Id  System

/dev/vda1   *        2048   104856002    52426977+  83  Linux


Disk /dev/vdb: 32.2 GB, 32212254720 bytes, 62914560 sectors        ------> 도커 볼륨, 초기 생성시 파티션이 없다.


- 내부 네트워크간 통신 상태 확인 : ping 등

- 외부 8.8.8.8 (google) 로 ping 여부 확인



2) Yum Repository 설정 (DNS 서버)

DNS서버 /var/www/html/repo 아래에 4개의 Package를 전부 복사시킨다. 약 22G 

먼저 DNS쪽 yum repo 구성 후 apache를 설치하여, 나머지 서버들이 dns서버 80포트를 통해 yum repo를 사용한다.


$ mkdir -p /var/www/html/repo

$ cp 'rpm_package' /var/www/html/repo


- DNS Yum repo

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

[rhel-7-server-rpms]

name=rhel-7-server-rpms

baseurl = file:///var/www/html/repo/rhel-7-server-rpms

enabled=1

gpgcheck=0


[rhel-7-server-extras-rpms]

name=rhel-7-server-extras-rpms

baseurl = file:///var/www/html/repo/rhel-7-server-extras-rpms

enabled=1

gpgcheck=0


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

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

baseurl = file:///var/www/html/repo/rhel-7-server-ose-3.5-rpms

enabled=1

gpgcheck=0


[rhel-7-fast-datapath-rpms]

name=rhel-7-fast-datapath-rpms

baseurl = file:///var/www/html/repo/rhel-7-fast-datapath-rpms

enabled=1

gpgcheck=0


# Apache HTTPD 설치

$ yum -y install httpd

$ systemctl start httpd

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

$ restorecon -vR /var/www/html (SeLinux 사용환경에서 반드시 필요)


# 방화벽 설정

$ firewall-cmd --zone=public --add-port=80/tcp --permanent

$ firewall-cmd --reload

$ firewall-cmd --permanent --list-all


- master/node Yum repo (DNS IP로 설정)

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

[rhel-7-server-rpms]

name=rhel-7-server-rpms

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

enabled=1

gpgcheck=0


[rhel-7-server-extras-rpms]

name=rhel-7-server-extras-rpms

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

enabled=1

gpgcheck=0


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

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

baseurl = http://10.1.1.147/repo/rhel-7-server-ose-3.5-rpms

enabled=1

gpgcheck=0


[rhel-7-fast-datapath-rpms]

name=rhel-7-fast-datapath-rpms

baseurl = http://10.1.1.147/repo/rhel-7-fast-datapath-rpms

enabled=1

gpgcheck=0 



[Package Installation]

1) Install Base Package - 모든 서버에 설치(dns의 경우 openshift 패키지는 설치하지 않아도 무방하다)

$ yum install wget git net-tools bind-utils iptables-services bridge-utils bash-completion

$ yum update

$ yum install atomic-openshift-utils

$ yum install atomic-openshift-excluder atomic-openshift-docker-excluder

$ atomic-openshift-excluder unexclude



2) DNS 네임서버 생성 - DNS 서버

$ yum -y install bind

$ vi /etc/named.conf

 listen-on port 53 { any };

 allow-query     { any; };

 recursion yes;  ----> no로 설정하면 외부로 접근이 불가능하다.


$ vi /etc/named.rfc1912.zones (아래 내용 맨 하단에 추가)
 zone "ocp.com" IN {
  type master;
  file "/etc/bind/zones/master/db.ocp.com";
 };

$ vi /etc/bind/zones/master/db.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.

;


ns1              IN      A       20.20.20.14

dns              IN      A       20.20.20.14

master          IN      A       20.20.20.13

node1           IN      A       20.20.20.16

node2           IN      A       20.20.20.20

*.app            IN      A       20.20.20.16

*.app            IN      A       20.20.20.20


# named는 53포트로 통신, 방화벽 룰 추가

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

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

$ firewall-cmd --reload


$ systemctl start named.service


# (Key Point) 각 서버 /etc/resolv.conf 설정 후 dig 명령어를 통해 dns설정 확인

$ echo "nameserver 20.20.20.14" > /etc/resolv.conf

$ dig `hostname` +short



3) Private Docker Registry

17년 이후 업데이트된 docker registry는 docker distribution 이란 이름으로 변경되었다. 

이부분은 disconnected 부분에서 다룬다.


4) Docker 설치 - 모든 서버

$ yum install docker

$ sed -i '/OPTIONS=.*/c\OPTIONS="--selinux-enabled --insecure-registry 172.30.0.0/16"' /etc/sysconfig/docker

$ systemctl enable docker


5) Docker Storage Setup - 모든 서버

$ cat <<EOF > /etc/sysconfig/docker-storage-setup

DEVS=/dev/vdb

VG=docker-vg

EOF


$ docker-storage-setup (확인 : lvs , vgs 명령어로 docker가 잡혀있는지 확인)


* 재설치를 위해 docker storage volume 삭제가 필요한 경우 다음과 같은 순서대로 진행한다.

$ vgremove docker-vg

$ lvremove docker-pool

$ systemctl stop docker

$ rm -rf /var/lib/docker


$ fdisk /dev/vdb

d  입력 (delete a partition)

w  입력 (write table to disk and exit)


$ cat <<EOF > /etc/sysconfig/docker-storage-setup

WIPE_SIGNATURES=true

DEVS=/dev/vdb

VG=docker-vg

EOF


$ docker-storage-setup (이렇게 해도 오류가 나는 경우가 있다. 로그에 어떤 옵션을 추가하여 실행하라고 나온다)



6) Create & Copy SSH Key - master 서버

$ ssh-keygen (계속 엔터)


$ for host in ocpmaster1.ocp.com \

ocpnode1.ocp.com \

ocpnode2.ocp.com; \

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

done



[OpenShift 설치]

2가지 방식
Quick Installation - interactive CLI utility, 항목별 수동으로 입력해야하며, 중간 hosts파일을 변경해야하는 등 불편한점이 있다.
Advanced Installation - ansible inventory (hosts)에 사전에 필요한 정보를 입력하여, ansible-playbook 명령어로 간단하게 실행.

1) master서버 hosts 파일 생성
$ vi /root/hosts

[OSEv3:children]

nodes

masters

etcd


[OSEv3:vars]

openshift_master_default_subdomain=app.ocp.com

ansible_ssh_user=root

openshift_master_cluster_method=native

openshift_master_cluster_hostname=ocpmaster1.ocp.com

openshift_master_cluster_public_hostname=ocpmaster1.ocp.com

deployment_type=openshift-enterprise

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

osm_default_node_selector='region=primary'

openshift_master_api_port=443

openshift_master_console_port=443

openshift_router_selector='region=infra'

openshift_registry_selector='region=infra'

os_sdn_network_plugin_name='redhat/openshift-ovs-multitenant'

openshift_hosted_metrics_deploy=true

openshift_hosted_logging_deploy=true

osm_use_cockpit=true

osm_cockpit_plugins=['cockpit-kubernetes']



[masters]

ocpmaster1.ocp.com


[etcd]

ocpmaster1.ocp.com


[nodes]

ocpmaster1.ocp.com openshift_node_labels="{'region': 'master'}" openshift_schedulable=False

ocpnode1.ocp.com openshift_node_labels="{'region': 'primary','zone':'east'}" openshift_schedulable=True

ocpnode2.ocp.com openshift_node_labels="{'region': 'primary','zone':'east'}" openshift_schedulable=True


# install

$ ansible-playbook -i /root/hosts /usr/share/ansible/openshift-ansible/playbooks/byo/config.yml

# uninstall
$ ansible-playbook -i /root/hosts /usr/share/ansible/openshift-ansible/playbooks/adhoc/uninstall.yml



- The End -








 


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

[기타] Khan APM 설치 방법  (0) 2017.07.26
[기타] 닷넷코어  (0) 2017.07.25
[기타] NetworkManager 설정 - DNS  (0) 2017.05.25
[빌드] Dockerfile 빌드  (0) 2017.05.24
[기타] Docker Hub 사용방법  (0) 2017.05.19
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함