Jenkins, Kubespray, Terraform을 활용한 Openstack 상 Kubernetes 및 모니터링 환경 구축 자동화 - 1

변재한·2023년 11월 2일
0

Overview


졸업과제 프로젝트를 진행하며 Openstack 플랫폼 상에 쿠버네티스 클러스터와 모니터링 환경을 자동화했던 과정을 정리한 글이다.
졸업과제에서는 쿠버네티스 환경에 대한 사용자의 입력(마스터 노드 수, 워커 노드 수, 노드의 이미지, 노드의 하드웨어 명세 등) 기반 동적인 구축을 진행하며, 본 포스트에선 자동화 구축을 위한 사전설정 및 프로세스를 기술하려고 한다. 기술을 많이 사용하고, 볼륨이 길다 보니 기술에 대한 설명은 하지 않고 필요한 부분만 설명을 진행하고자 한다.

아래 그림은 졸업과제에서 만든 인프라 관리 시스템의 구성도이다.
Orchstrator - Monitor - Openstack 파트가 본 포스트에서 해당한다.


1. Openstack 설치(Devstack)

왜 Openstack ?

  1. 학부연구생으로 활동하며 오픈스택을 사용함
  2. AWS, GCP .. 등의 관리형 쿠버네티스를 사용하면 과금이 필요함
  3. 오픈스택에 쿠버네티스 클러스터 설치하는 데 대한 정보가 너무 적고, 있다고 하더라도 3~4년 전이라 가능한 최신 시점으로 개척하고 싶었음.

설치

먼저, 쿠버네티스 클러스터가 구축될 클라우드 플랫폼인 오픈스택을 설치한다.
윈도우 10 운영체제의 호스트 컴퓨터에 Vmware workstation 17을 사용하여 VM(가상머신)을 올리고 오픈스택을 설치하였다.
컴퓨팅 리소스가 많으면 많을수록 좋다..
또한, 추후, NAT Network의 IP Pool을 오픈스택에서의 Public IP - Floating IP에 할당하여 윈도우 호스트 컴퓨터에서 Floating IP가 할당된 VM에 직접 접근이 가능하도록 하기 위해 NAT Adapter를 선택하여 진행했다.

오픈스택이 설치될 VM의 스펙
OS - Ubuntu 22.04 Desktop
CPU - 16Core
RAM - 50GB
Disk - 400GB
Network Interface - NAT Adapter 2개

자, 오픈스택에 적용할 IP Pool Range와 오픈스택이 설치되며 생성되는 IP와 충돌이 일어나지 않게 하기 위해 설정을 해주어야 한다.

처음으로 다음과 같이, Vmware에서 NAT Setting을 해주자.

그리고, 윈도우 호스트 컴퓨터의 네트워크 설정을 다음과 같이 설정하자.

VM 설정 및 설치 후, 터미널 접속 아래 명령어 입력

164.125.9.2 IP는 부산대학교 DNS Server IP
학교 내부망 컴퓨터에서 설치해서 설정, 8.8.4.4로 교체해서 진행

# root 사용자로 변경
$ sudo su - 

$ apt install -y vim
$ vi /etc/netplan/~.yaml

<-- 복사 붙여넣기
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    ens33:
      dhcp4: false
      addresses: [192.168.10.10/24]
      gateway4: 192.168.10.253
      nameservers:
        addresses: [164.125.9.2,8.8.8.8]
    ens34:
      dhcp4: false
      addresses: [192.168.10.20/24]
      gateway4: 192.168.10.253
      nameservers:
        addresses: [164.125.9.2,8.8.8.8]
-->       

$ netplan apply
# stack user 생성
$ useradd -s /bin/bash -d /opt/stack -m stack
$ chmod +x /opt/stack
$ echo "stack ALL=(ALL) NOPASSWD: ALL" | tee /etc/sudoers.d/stack
$ sudo -u stack -i
$ git clone https://opendev.org/openstack/devstack
$ cd devstack

devstack의 configuration file을 작성한다.

주요 설정 내용

  • 오픈스택의 Public Network 및 Floating IP Pool
  • AWS Loadbalancer Controller와 같이 Openstack에서는 Octavia Ingress Controller가 있고, 이를 사용하기 위해 Octavia Setup을 수행
  • AWS S3 - Terraform Backend 의 형태와 같이 Openstack Swift Container - Terraform Backend 구성을 할 수 있어 Swift Setup
$ vi local.conf
<-- 작성
[[local|localrc]]
HOST_IP=192.168.10.20
PUBLIC_INTERFACE=ens34
FLOATING_RANGE=192.168.10.0/24
PUBLIC_RANGE=192.168.10.0/24
PUBLIC_NETWORK_GATEWAY=192.168.10.253
Q_FLOATING_ALLOCATION_POOL=start=192.168.10.100,end=192.168.10.150
ADMIN_PASSWORD=jaehan123
DATABASE_PASSWORD=jaehan123
RABBIT_PASSWORD=jaehan123
SERVICE_PASSWORD=jaehan123
SERVICE_TOKEN=jaehan123
GIT_BASE=https://opendev.org

LOG_FILE=$DEST/logs/stack.sh.log
LOG_COLOR=True
VERBOSE=True
enable_service rabbit
enable_plugin neutron $GIT_BASE/openstack/neutron
enable_service q-qos
enable_service placement-api placement-client
enable_plugin octavia $GIT_BASE/openstack/octavia master
enable_plugin octavia-dashboard $GIT_BASE/openstack/octavia-dashboard
enable_plugin ovn-octavia-provider $GIT_BASE/openstack/ovn-octavia-provider
enable_plugin octavia-tempest-plugin $GIT_BASE/openstack/octavia-tempest-plugin
enable_service octavia o-api o-cw o-hm o-hk o-da
enable_service tempest
enable_service s-proxy s-object s-container s-account
SWIFT_REPLICAS=1
SWIFT_HASH=312d3349591f18d71f841c33dd51aaa1
-->

# 설치 시작
$ ./stack.sh

설치가 완료되면 아래와 같이 화면 출력

configuration file의 HOST_IP로 브라우저에서 접속

Public Network - Subnet 편집
=> apt install update 등 인터넷과의 연결이 안 될 수 있기 때문에 설정

VM을 Public Network에 생성

윈도우 호스트 컴퓨터에서 VM의 IP로 ssh 접속

이제 Openstack의 Public Network의 IP가 할당된 VM으로 윈도우 호스트 컴퓨터에서 직접적 접근이 가능

profile
Infra and Devops 엔지니어가 되고 싶어용

2개의 댓글

comment-user-thumbnail
2023년 11월 5일

데브스택은 싱글노드라고 알고 있는데 데브스택을 쓰신 이유가 있으실까요?

노드를 늘려볼 생각은 없는 지 궁금해요

1개의 답글