프로젝트 개요

김효진·2022년 6월 9일
0

프로젝트 목표

VM 3대에 Jenkins와 ansible로 kubenetes 클러스터에 Maven Java Project 배포.

시스템 구성

노드 구성

k8s1: 젠킨스와 Kuberspray로 다른 노드에 클러스터를 배포하기위한 노드 Jenkins, Ansible, Kubespray k8s2: Kubernestes ControlPlane과 Worker Node, Docker Image빌드 및 Dockerhub에 업로드 Ansible, Kubernetes k8s3: Kubernetes Worker Node Kubernetes

Vagrant를 사용하여 Virtualbox에 Ubuntu Linux 시스템을 구축.
ssh key 배포를 용이하게 하기 위해 password인증 활성화.
패키지 매니저 미러링 주소를 국내로 전환.
vagrantfile

Vagrant.configure("2") do |config|
	# Define VM
	config.vm.define "k8s1" do |ubuntu|
		ubuntu.vm.box = "ubuntu/focal64"
		ubuntu.vm.hostname = "k8s1"
		ubuntu.vm.network "private_network", ip: "192.168.56.50"
		ubuntu.vm.provider "virtualbox" do |vb|
			vb.name = "k8s1"
			vb.cpus = 2
			vb.memory = 3000
		end
	end
	config.vm.define "k8s2" do |ubuntu|
		ubuntu.vm.box = "ubuntu/focal64"
		ubuntu.vm.hostname = "k8s2"
		ubuntu.vm.network "private_network", ip: "192.168.56.51"
		ubuntu.vm.provider "virtualbox" do |vb|
			vb.name = "k8s2"
			vb.cpus = 2
			vb.memory = 3000
		end
	end
	config.vm.define "k8s3" do |ubuntu|
		ubuntu.vm.box = "ubuntu/focal64"
		ubuntu.vm.hostname = "k8s3"
		ubuntu.vm.network "private_network", ip: "192.168.56.52"
		ubuntu.vm.provider "virtualbox" do |vb|
			vb.name = "k8s3"
			vb.cpus = 2
			vb.memory = 3000
		end
	end

	config.vm.provision "shell", inline: <<-SHELL
	  sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
	  sed -i 's/archive.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list
	  sed -i 's/security.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list
	  systemctl restart ssh
	SHELL
end

버전 정보

Kubernetes 1.23.3
Kubespray release-2.16
ansible 5.7.1
ansible-core 2.12.5
Jenkins 2.332.3
docker 20.10.17
docker 5.0.3 (Python module)
kubernetes 23.6.0 (python module)
cryptography 3.4.8
jinja2 2.11.3
netaddr 0.7.19
pbr 5.4.4
jmespath 0.9.5
ruamel.yaml 0.16.10
ruamel.yaml.clib 0.2.6
MarkupSafe 1.1.1


진행을 위한 정보들

  • Ansible은 Python으로 만들어져서 Ansible Docker module이나 Ansible Kubernetes module은 해당 python모듈을 추가로 설치해야 함.
  • Jenkins에서 접속할 SSH Server에서 SSH접속시와 Bash shell의 binary Path정보가 다름.
    Ansible을 Python Package Manager로 설치시 binary file 경로가 /home/vagrant/.local/bin/ansible-playbook 으로 돼있어서
    sudo ln /home/vagrant/.local/bin/ansible-playbook /usr/local/bin 으로 심볼릭 링크를 로컬 바이너리 파일에 넣는 방식으로 해결.

0개의 댓글