OpenShift는 컨테이너화된 애플리케이션을 관리하고 배포하기 위한 Red Hat의 Kubernetes 기반 플랫폼입니다. Kubernetes를 기반으로 하여 개발자와 운영팀이 애플리케이션을 더 쉽게 개발, 배포, 및 관리할 수 있도록 도와줍니다.
OpenShift 설치 구축 방법
노드 구성
- Master Node:
master1.lab.test.com
- Node1:
node1.lab.test.com
- Node2:
node2.lab.test.com
- 각 노드의 디스크 크기: 200GB
OpenShift 서버 기본 구성요소 설치
- 서버의 호스트 이름을 변경하고, 모든 노드를 최신 상태로 업데이트합니다.
- SSH 키를 생성하고 복사하여 노드 간의 통신을 설정합니다.
서버 업데이트 (모든 노드)
# yum repolist
# yum update
Hostname 변경 (모든 노드)
# vi /etc/hosts
192.168.10.226 master1.test.com master1
192.168.10.227 node1.test.com node1
192.168.10.228 node2.test.com node2
# hostnamectl set-hostname master1.test.com # 각 노드에 맞게 변경
# hostname -f
# init 6
SSH Key 생성 및 복사 (마스터 노드)
# ssh 192.168.10.227
# ssh 192.168.10.228
# ssh-keygen -f /root/.ssh/id_rsa -N ''
# ssh-copy-id root@master1
# ssh-copy-id root@node1
# ssh-copy-id root@node2
# systemctl status NetworkManager
# ssh node1 systemctl status NetworkManager
# ssh node2 systemctl status NetworkManager
OpenShift 사전 요구사항 설치 및 설정 (마스터 노드)
- 필요한 패키지와 도구를 설치하고 설정합니다.
- Docker를 설치하고 가상 풀 스토리지를 구성합니다.
사전 요구사항 패키지 설치
# yum install wget git net-tools bind-utils yum-utils iptables-services bridge-utils bash-completion kexec-tools sos psacct
# yum -y update
# reboot
RPM 기반 설치
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# sed -i -e "s/^enabled=1/enabled=0/" /etc/yum.repos.d/epel.repo
# yum -y --enablerepo=epel install ansible pyOpenSSL
Github로부터 OpenShift Ansible 저장소 복제
# cd
# git clone https://github.com/openshift/openshift-ansible
# cd openshift-ansible
# git checkout release-3.11
Docker 설치 및 확인
# yum install docker-1.13.1 -y
# rpm -V docker-1.13.1
# docker version
가상 풀 스토리지 구성
# cat << EOF > /etc/sysconfig/docker-storage-setup #docker-pool 볼륨 설정
> DEVS=/dev/vdc # /DEVS로 사용하고자 하는 블록 장치 경
> VG=docker-vg # VG 볼륨 그룹
> EOF
# Docker-storage-setup #docker-pool 볼륨 생성
# cat /etc/sysconfig/docker-storage # 스토리지 구성
DOCKER_STORAGE_OPTIONS="--storage-driver devicemapper --storage-opt dm.fs=xfs --storage- opt dm.thinpooldev=/dev/mapper/docker--vg-docker--pool --storage-opt
dm.use_deferred_removal=true --storage-opt dm.use_deferred_deletion=true "
# lvs #docker-vg 생성 확인
# systemctl enable docker
# systemctl start docker
# systemctl is-active docker
GlusterFS 설치
# yum -y install glusterfs-fuse
# yum update -y glusterfs-fuse
로컬 볼륨 사용 차단
로컬 볼륨 사용을 차단하여 저장 공간을 더욱 유연하게 관리합니다.
# yum -y install docker-novolume-plugin
# systemctl enable docker-novolume-plugin
# systemctl start docker-novolume-plugin
# vi /etc/sysconfig/docker
--authorization-plugin=docker-novolume-plugin # option 목록 아래 문구 추가
# systemctl restart docker
이미지 서명 지원 사용
신뢰할 수 있는 이미지 출처에서만 이미지를 사용할 수 있도록 구성합니다.
# yum install atomic
# atomic trust show
# atomic trust add --type insecureAcceptAnything 10.0.0.1:5000
# atomic trust add --sigstoretype atomic --pubkeys pub@test.com 10.0.0.1:5000/production
# atomic trust add --sigstoretype atomic --pubkeys admin@test.co.kr 10.0.0.1:5000/production
# atomic trust add --sigstoretype atomic --pubkeys /etc/pki/test.com.pub 10.0.0.1:5000/production
# atomic trust add --sigstoretype web --sigstore https://access.redhat.com/webassets/docker/content/sigstore --pubkeys /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release registry.redhat.io
# atomic trust show
OpenShift 설치 (마스터 노드)
OpenShift 클러스터를 배포하기 위한 Ansible 인벤토리 파일의 사용자 정의 설정입니다. 이 설정은 각 노드의 역할 및 배포 구성을 정의합니다.
인벤토리 파일 설정:
# vi /etc/ansible/hosts
[OSEv3:children]
masters
nodes
etcd
[OSEv3:vars]
ansible_ssh_user=root
deployment_type=origin
openshift_disable_check=memory_availability,docker_storage,disk_availability,package_version,docker_image_availability
openshift_deployment_type=origin
openshift_release="3.11"
[masters]
master1.test.com
[etcd]
master1.test.com
[nodes]
master1.test.com openshift_node_group_name='node-config-master'
node1.test.com openshift_node_group_name='node-config-compute'
node2.test.com openshift_node_group_name='node-config-compute'
Ansible 플레이북 실행
# cd /openshift-ansible/
# ansible-playbook playbooks/prerequisites.yml
# ansible-playbook playbooks/deploy_cluster.yml
위 설정은 다음을 수행합니다:
[OSEv3:children]
섹션은 클러스터의 다양한 역할을 그룹화합니다.[OSEv3:vars]
섹션은 Ansible 플레이북에서 사용되는 변수를 정의합니다.[masters]
,[etcd]
,[nodes]
섹션에서 각각 마스터, etcd, 노드의 호스트를 정의합니다.openshift_node_group_name
은 노드 그룹의 역할을 지정합니다. 여기서는 마스터와 컴퓨트 노드로 구성합니다.
ansible-playbook
명령을 사용하여 설정된 인벤토리 파일을 기반으로 클러스터를 배포합니다.
Etcd 설치
분산 키-값 저장소 서비스인 Etcd를 설치하여 클러스터의 상태 및 구성 정보를 저장합니다.
# yum -y install etcd
# init 0
Node 확인
클러스터의 노드가 정상적으로 등록되었는지 확인합니다.
# oc get nodes
OpenShift 설치 과정을 완료할 수 있습니다.
OpenShift 접속 및 운영
컨테이너 생성 및 웹 콘솔 접속 : https://master1.test.com:8443/console/
Application Console 클릭

Create Project 버튼 클릭 후 내용 입력하여 프로젝트 생성

생성된 프로젝트에 접속

Add to Project 클릭 후 Browse Catalog 클릭

생성하려는 서비스 선택



필요한 정보 입력 후 Create 버튼 클릭 후 서비스 동작 확인
