전체 글
[Kubernetes] Worker Node 추가 구성하기 : Join
본 글은 여기에 이어서 진행한다. Vagrant를 통해 Worker Node로 사용할 1대의 VM을 구축한 뒤, k8s 관련 패키지들을 설치 및 설정하고 Control Plane과 Worker Node가 동시에(1대에) 구축되어 있던 기존의 VM에 새로 구축한 Worker Node를 join할 예정이다. 📌Index VM 생성하기 Docker 설치 및 설정하기 kubeadm, kubelet, kubectl 설치하기 K8s Cluster에 Join하기 ✔️ VM 생성하기 Vagrantfile을 사용하여 ubuntu VM을 생생하자. Vagrant.configure("2") do |config| # Control Plane과 Worker Node가 동시에 구축된 기존의 VM config.vm.define "..
[Kubernetes] 쿠버네티스(K8s) 설치하기 : Kubeadm
쿠버네티스(K8s)를 설치하는 방법은 수십가지가 넘는다. 가장 일반적인 /핵심적인 방법은 다음들과 같다 Kubeadm : 표준 방법이나, 자동화가 불가능해서 관리는 힘들다 Kubespray : Kubeadm + Ansible 방식 kOps : 쿠버네티스를 AWS EC2에 설치해준다 Docker Desktop : 쿠버네티스의 가장 기본 기능만 사용 가능하다 minikube : local에 VM으로 쿠버네티스를 구성(가장 많이 사용하는 방법), 멀티노드도 지원한다 참고로 쿠버네티스는 버전이 3개월 마다 1번씩 나오고, 유지보수는 4개 버전만 한다. 따라서 쿠버네티스는 최소한 1년에 한번씩 업데이트를 해주어야한다. Kubeadm으로 클러스터 구성하기에 따라 진행해보자. Kubeadm 설치하기 원래 가장 먼저 ..
[Kubernetes] 쿠버네티스(Kubernetes)란?
📌Index 쿠버네티스(Kubernetes)란? 쿠버네티스의 기능 쿠버네티스가 아닌 것 쿠버네티스 컴포넌트(구성요소) 애드온(Add-on) ✔️ 쿠버네티스(Kubernetes)란? 쿠버네티스란 무엇인가? 쿠버네티스(k8s)란 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하는 오픈소스 시스템이다. Google이 내부 배포시스템으로 사용하던 borg를 기반으로 빠르게 발전하였고, 이후 Google이 CNCF(Cloud Native Couputing Foundation)에 기부함으로써, 쿠버네티스는 오픈 소스 프로젝트가 되었다. 참고: borg 기술 논문, CNCF Cloud Native Interactive Landscape 쿠버네티스는 단순한 컨테이너 플랫폼이 아닌 마이크로 서비스, 클라우드 플..
[Docker] Docker Compose로 WordPress 배포하기
Docker의 IaC인 Docker Compose를 이용하여 WordPress를 배포해보자 환경 구성 먼저 실습을 진행할 디렉토리를 생성한다. $ mkdir wp $ cd wp 다음으로 WordPress를 생성 및 구성하는 docker-compose.yaml을 작성한다. docker-compose.yaml version: "3" services: wp-db: image: mysql:5.7 restart: always environment: MYSQL_ROOT_PASSWORD: P@ssw0rd MYSQL_DATABASE: wordpress MYSQL_USER: wpadm MYSQL_PASSWORD: P@ssw0rd volumes: - wp-db-vol:/var/lib/mysql networks: - wp-..
[Docker] Docker Compose의 사용
Docker Compose는 Docker의 IaC와 같은 것으로, yaml 코드를 통해 컨테이너를 어떻게 실행할 지 정의하는 것이다. docker-compose 는 옛 명령어로, docker compose가 최근에 생긴 명령어이고, 옵션에서 몇가지 차이가 있다. 디렉토리 구성 먼저 실습을 실행할 디렉토리를 만들자. 본 글에서는 총 3개의 실습을 진행할 예정인데, 각각 example1 exampl2 exmple3 디렉토리에서 진행할 예정이다. $ mkdir compose 📋 실습1 $ mkdir example1 $ cd compose/example1 Docker Compose 파일은 docker-compose.yaml 또는 docker-compose.yml 로 정해져있다. 아래와 같이 docker-comp..
[Docker] Docker Hub에 이미지 업로드하기
이미지는 웹 인터페이스에서 올리지 못하고, 반드시 명령어로만 올릴 수 있다. Docker Hub 에 이미지를 push하기 위해서는 docker login 명령을 통해 로그인 해야한다. (인증을 받아야한다.) $ docker login Login Succeeded 가 나와야 로그인에 성공한 것이다. 로그인하면 인증정보가 홈 디렉토리의 ./docker/config.json 에 저장된다. 이미지를 빌드할 때는 홈 디렉토리의 파일이 올라갈 수 있기 때문에 홈 디렉토리에서 하면 안되고, root에서 해도 안된다. 로컬에 있는 이미지를 아무거나 docker push 해보자 $ docker push pyhello:v1 The push refers to repository [docker.io/library/pyhell..
[Docker] Docker에 node.js 배포하기
📌Index 간단한 Node.js 작성해보기 Node.js web app으로 Docker image 만들기 Node.js란 확장성 있는 네트워크 애플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼이다. 이러한 node.js를 docker에 배포해보자. ✔️ 간단한 Node.js 작성해보기 먼저 node.js 를 사용하기 위해 저장소를 추가하고 패키지를 설치하자 여기서는 버전16을 사용할 예정이다. $ curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - sudo apt-get install -y nodejs 다음으로 실습을 진행할 환경(디렉토리)를 구성하자. $ mkdir -p node/web $ cd node/web Get..
[Docker] Docker에 Go 배포하기
📌Index 환경 구성 Go 기초 실습 Web Application 만들기 Go App으로 Docker image 만들기 Docker에 Gin 배포하기 Go 란 구글(google)에서 개발한 언어로, 간결하고 신뢰성 있으며 효율적인 소프트웨어를 손쉽게 만들기 위한 오픈소스 프로그래밍 언어이다. GoLang은 간결한 의존성 해석 알고리즘을 통해서 다른 컴파일 언어에 비해 빌드가 빠르다는 장점이 있다. ✔️ 환경 구성 먼저 실습을 진행할 환경을 구성하자 디렉토리 만들기 $ mkdir golang $ mkdir hello $ cd /golang/hello golang 설치하기 $ sudo apt install golang go module 만들기 Golang에서 module은 Django에서의 App과 비슷한..
[Docker] Docker에 Django App 배포하기
📌Index 환경 구성 Django Default Home Page 띄워보기 Polls app 배포하기 .dockerignorefile이란? Django App으로 Docker 이미지 만들기 장고(Django)란 파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크(web application framework)이다. 풀 스택 프레임워크이며, Python을 통해 작성한다. ✔️ 환경 구성 tutorial에 따라 진행해보자 가상 환경 만들기 가상 환경을 사용하는 이유와 설명에 대해서는 여기에서 확인할 수 있다. $ mkdir ~/python/hello-django $ cd ~/python/hello-django 가상프로젝트/프로젝트를 생성 $ python3 -m venv venv 가상 환경 활성화 ..
[Docker] Docker에 Flask App 배포하기
📌Index 환경 구성 Application 만들기 Freeze Flask App으로 Docker 이미지 만들기 Flask란 마이크로 서비스 웹 프레임워크로 간단한 웹 사이트, 혹은 간단한 API 서버를 만드는 데에 특화되어있다. (python 3.7 이상 필요) ✔️ 환경 구성 Flask 환경 구성을 위해 아래의 3가지를 설치하자 python3 python3-pip python3-venv pip 는 파이썬 패키지를 설치하고 관리하는 도구이다. pip 는 python2의 패키지 관리자 pip3는 python3의 패키지 관리자 $ sudo apt install python3-pip python3-venv 가상 환경 가상환경(virtual environment)는 Python에만 존재하는 개념으로, 가상환경..
[Linux] Alpine Linux란?
Alpine Linux : BusyBox + APK(패키지 관리자) BusyBox는 리눅스 커널와 핵심 바이너리와 라이브러리만 포함 yum과 같은 패키지 관리자가 없어서, 소스코드 실행 파일을 직접 빌드해야함 일반적으로 임베디드 장치에 사용하기 위해 만듬 BusyBox 의 불편함을 해결하기 위해 만든 것이 바로 Alpine Linux이다. 단, Alpine Linux는 bash shell이 없고, 기본적으로 본 shell만 가지고 있다. $ docker run -it alpine:3 bash docker: Error response from daemon: failed to create shim: OCI runtime create failed: container_linux.go:380: starting c..
[Docker] Python 스크립트를 실행하는 Docker 이미지 빌드하기
📌Index python:3.9-buster 이미지 사용하기 python:3.9-slim-buster 이미지 사용하기 python:3.9-alpine 이미지 사용하기 먼저 아래의 3가지 python 이미지를 pulling 하자 : Debian + Python3 python:3.9-buster : 대부분의 필요한 패키지가 설치된 것 python:3.9-slim-buster : 표준 라이브러리를 제외하고 전부 제외된 것 python:3.9-alpine : BusyBox Linux + apk 패키지 관리자 $ docker image ls | grep python python 3.9-buster 2081325398fc 2 weeks ago 889MB python 3.9-slim-buster 975c845dddf..