DevOps

    Terraform side project

    IaC(Infrastructure as Code) 기술은 퍼블릭 클라우드 환경의 인프라를 관리하기 위한 필수로 알아야 할 기술이라고 생각한다. 지난주 동안 공부하고 정리한 Terraform 사용방법에 대한 내용을 블로그를 통해 정리하려고 한다. Terraform side project repository를 생성했고 AWS 인프라 아키텍처를 자유롭게 HCL(Hashicorp Configuration Language)을 통해 기술하는 연습을 하고 있다. https://github.com/devlos0322/terraform-side devlos0322/terraform-side Contribute to devlos0322/terraform-side development by creating an accoun..

    [젠킨스(Jenkins)] Jenkins를 이용한 pipeline 구축

    [젠킨스(Jenkins)] Jenkins를 이용한 pipeline 구축

    이번 포스팅에서는 Jenkins를 이용하여 파이프라인(pipeline)을 구축하는 법에 대해서 정리한다. 이전 포스팅에서 다루었던 앤서블(Ansible)을 사용한 Serverspec 테스트를 연결하여 진행한다. Serverspec에 대해서는 아래의 링크에 정리해 두었다. 2021.04.15 - [클라우드 컴퓨팅 & NoSQL] - [앤서블(Ansible)] Serverspec 사용법 [앤서블(Ansible)] Serverspec 사용법 이번 포스팅에서는 Serverspec이라는 도구를 앤서블에 적용하는 방법에 대해서 알아보도록 한다. Serverspec은 인프라(서버) 테스트 수행을 간단하고 쉽게 하기 위한 도구이다. Serverspec - Home About V2 Ser devlos.tistory.co..

    [젠킨스(Jenkins)] Jenkins 프로젝트 생성 및 Build

    [젠킨스(Jenkins)] Jenkins 프로젝트 생성 및 Build

    이번 포스팅에서는 Jenkins를 이용하여 프로젝트를 생성하고 자동으로 빌드하는 방법에 대해서 다루도록 한다. Jenkins 대시보드 우측 상단에 있는 [New Item]을 클릭한다. 그러면 프로젝트 생성페이지가 나온다. 여기서 Enter an item name 에다가 프로젝트 이름을 작성한다. (예제에서는 first_project 라고 프로젝트 이름을 지었다.) 그리고 "Frestyle project"를 선택하고 [OK]를 클릭한다. 다음으로는 "Build" 항목에서 "Add build step"을 누르고 "Execute shell"을 선택한다. Execute shell에 다음처럼 명령어를 작성한다. uname -n pwd ls -l 여기까지 완료하고 난 후 저장 버튼을 클릭하면 프로젝트가 저장된다. ..

    [젠킨스(Jenkins)]  Jenkins 소개 및 설치 방법

    [젠킨스(Jenkins)] Jenkins 소개 및 설치 방법

    이번 포스팅에서는 Jenkins가 무엇인지에 대해서 정리하고, Jenkins를 사용하는 방법에 대해서 정리하도록 한다. 1. Jenkins란? 젠킨스(Jenkins)는 소프트웨어 개발 시 지속적 통합(continuous integration) 서비스를 제공하는 툴이다. 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 Git 등의 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해 준다. - wiki 젠킨스 (소프트웨어) - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. ko.wikipedia.org Jenkins는 다음과 같은 작업이 가능하다. 작업을 프로젝트라는 단위로 모아서 쉽게 실행할 수 있음 수작업을 할 필요..

    [도커(Docker)] 도커 컴포즈(Docker compose) 사용법

    [도커(Docker)] 도커 컴포즈(Docker compose) 사용법

    이번 포스팅의 주제는 도커 컴포즈(Docker Compose)를 사용하는 방법에 관한 것이다. Overview of Docker Compose docs.docker.com 도커 컴포즈는 여러대의 컨테이너 Docker 애플리케이션을 정의하고 실행하기 위한 도구다. YAML 파일을 사용하여 애플리케이션의 서비스를 구성한다. 1. 도커(Docker) 설치 # 도커 설치 $ sudo yum install -y docker # 도커 서비스 시작 $ sudo systemctl start docker.service # 도커에 로그인 $ docker login 2. 도커 컴포즈(Docker compose) 설치 # root 계정으로 진입 $ su # 도커 컴포즈 설치 $ curl -L "https://github.co..

    [앤서블(Ansible)] Serverspec 사용법

    [앤서블(Ansible)] Serverspec 사용법

    이번 포스팅에서는 Serverspec이라는 도구를 앤서블에 적용하는 방법에 대해서 알아보도록 한다. Serverspec은 인프라(서버) 테스트 수행을 간단하고 쉽게 하기 위한 도구이다. Serverspec - Home About V2 Serverspec/Specinfra v2 has been just released. See the document about v2. About With Serverspec, you can write RSpec tests for checking your servers are configured correctly. Serverspec tests your servers’ actual state by executing command loca serverspec.org Server..

    [앤서블(Ansible)] ansible-playbook dry-run 모드

    [앤서블(Ansible)] ansible-playbook dry-run 모드

    이번 포스팅에서는 이전 포스팅에 다뤘던 주제인 ansible-playbook 명령어 사용법에 이어서, dry-run 모드 사용법에 대해서 알아보도록 한다. Dry-run 모드는 실제로 인프라를 배포하기전에 앤서블을 체크 모드로 실행하는 것을 의미한다. 실제 환경에 변경된 템플릿을 반영하는것이 불안하고, 어떤 변화가 예상되는지 확인할 경우 유용하게 쓰인다. 실행할 경우 어디가 변경되는지 미리 표시해주는 기능까지 제공된다. 1. dry-run 모드 실행하기 $ ansible-playbook -i development site.yml --check --diff dry-run 모드를 실행한 결과 TASK들에 대한 상태가 모두 바뀌지 않았음이 확인된다. 2. index.html파일 수정 후 dry-run 모드 실..

    [앤서블(Ansible)] ansible-playbook 사용법

    [앤서블(Ansible)] ansible-playbook 사용법

    이번 포스팅의 주제는 ansible-playbook의 사용법에 대한 내용이다. Ansible playbook은 반복, 재사용 가능하며 구성 관리 및 다중 머신의 설정, 배포 시스템을 제공하는 언어다. YAML 형식으로 되어있다. 이전 포스팅에서 정리했듯이 본래 앤서블로 실현하고 싶은 것은 다음의 3가지다. 환경 설정 및 구축 절차를 통일된 형식으로 기술할 수 있음 매개 변수 등 환경의 차이를 관리할 수 있음 실행 전에 변경되는 부분을 파악할 수 있음 위의 내용들을 예제를 통해 확인해보도록 한다. 1. Git 설치 $ sudo yum -y install git 2. ansible-playbook-sample 다운로드 $ git clone https://github.com/devops-book/ansible..

    [앤서블(Ansible)] Ansible의 기본적인 사용법 (nginx)

    [앤서블(Ansible)] Ansible의 기본적인 사용법 (nginx)

    DevOps 학습을 진행하면서 앤서블(Ansible)이라는 툴에 대한 언급이 계속 나온다. 이번 포스팅에서는 앤서블이 무엇인지, 그리고 어떻게 사용되고 어떤 역할을 하는지에 대한 내용을 다룬다. 앤서블은 여러 개의 서버를 효율적으로 관리하기 위해 고안된 인프라 구성 관리 도구이다. 인프라 구성 관리도구는 다음과 같은 특징을 가진다. 선언적 구성 정보에 의해 설정 대상의 "상태"가 명확히 기재되고, 상태를 파악할 수 있는 것을 의미. 선언적이라는 것은 "서버가 어떤 상태로 존재했으면 좋겠다고 생각하는 상태를 설명하는 것이며, 어떻게 하고 싶은 것인가 하는 작업을 기술하는 것은 아니다."라는 것이다. service: name: nginx state: started 위와 같은 표현은 누가봐도 "nginx를 실..

    DevOps란?

    DevOps란?

    이번 포스트에서 다루는 주제는 DevOps 기술에 대한 배경지식이다. DevOps란? Dev(개발팀) + Ops(운용팀)이 긴밀히 협조하여 비즈니스 측면 가치를 높이는 근무방식과 문화를 의미한다. DevOps 문화가 생긴 배경은 다음과 같다. 최신 서비스들은 짧은 기간에 기능 추가나 개선에 대한 요구사항들이 발생하고 이를 대응해야 한다. 애자일(Agile) 개발 기법은 소규모 개발을 전제로 필요한 최소한의 요건들을 적용하여 Release를 하고 고객의 피드백을 반영하며 지속적으로 서비스를 개선되는 개발 기법이다. 애자일 방식으로 개발을 하다 보니 애플리케이션이 빠르게 Release 되어서 좋은데, 운용 환경이 이를 따라가지 못하는 현상이 발생하게 된다. 운영팀이 추구하는 것은 서비스의 안정화이기 때문이다..

    컨테이너 오케스트레이션(Container Orchestration)이란?

    컨테이너 오케스트레이션(Container Orchestration)이란?

    이번 포스트에서는 RedHat에서 정의한 컨테이너 오케스트레이션(Container Orchestration)에 대해서 정리해 보았다. 컨테이너 오케스트레이션: 컨테이너의 배포, 관리, 확장, 네트워킹을 자동화 하는 기술을 말한다. 1. 컨테이너 오케스트레이션이 사용되는 분야 프로비저닝 및 배포 설정 및 스케줄링 리소스 할당 컨테이너 가용성 증가 인프라 전반의 워크로드 밸런싱을 기반으로 컨테이너 스케일링 또는 제거 로드 밸런싱 및 트래픽 라우팅 컨테이너 모니터링 실행될 컨테이너를 기반으로 애플리케이션 설정 컨테이너 간 보안유지 2. 컨테이너 오케스트레이션 툴 Docker Swarm Apache Mesos 쿠버네티스(Kubernetes) 3. 컨테이너 오케스트레이션의 작동 방식 쿠버네티스와 같은 컨테이너 오..

    쿠버네티스(Kubernetes) 공식 튜토리얼 #7

    쿠버네티스(Kubernetes) 공식 튜토리얼 #7

    이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 마지막 단계인 6단계를 실습해 보도록 한다. 2021.04.04 - [클라우드 컴퓨팅 & NoSQL] - 쿠버네티스(Kubernetes) 공식 튜토리얼 #6 쿠버네티스(Kubernetes) 공식 튜토리얼 #6 이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 5단계를 실습해 보도록 한다. 2021.04.03 - [클라우드 컴퓨팅 & NoSQL] - 쿠버네티스(Kubernetes) 공식 튜토리얼 #5 쿠버네티스(Kubernetes) 공식 튜토리 devlos.tistory.com 튜토리얼 모듈 6은 "Performing a Rolling Update"에 관한 것이다. 이번 시나리오의 목표는 deploy된 애플리케이션을 Kubectl set imagne로 ..

    쿠버네티스(Kubernetes) 공식 튜토리얼 #6

    쿠버네티스(Kubernetes) 공식 튜토리얼 #6

    이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 5단계를 실습해 보도록 한다. 2021.04.03 - [클라우드 컴퓨팅 & NoSQL] - 쿠버네티스(Kubernetes) 공식 튜토리얼 #5 쿠버네티스(Kubernetes) 공식 튜토리얼 #5 이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 4단계를 실습해 보도록 한다. 2021.04.02 - [클라우드 컴퓨팅 & NoSQL] - 쿠버네티스(Kubernetes) 공식 튜토리얼 #4 쿠버네티스(Kubernetes) 공식 튜토리 devlos.tistory.com 튜토리얼 모듈 5는 "Running Multiple Instances of Your App"에 관한 것이다. 쿠버네티스 kubectl scale을 이용하여 Depolyment를 확장하고 로드벨..

    쿠버네티스(Kubernetes) 공식 튜토리얼 #5

    쿠버네티스(Kubernetes) 공식 튜토리얼 #5

    이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 4단계를 실습해 보도록 한다. 2021.04.02 - [클라우드 컴퓨팅 & NoSQL] - 쿠버네티스(Kubernetes) 공식 튜토리얼 #4 쿠버네티스(Kubernetes) 공식 튜토리얼 #4 이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 3단계를 실습해 보도록 한다. 2021.04.01 - [분류 전체보기] - 쿠버네티스(Kubernetes) 공식 튜토리얼 #3 쿠버네티스(Kubernetes) 공식 튜토리얼 #3 이 devlos.tistory.com 튜토리얼 모듈 4는 service를 이용하여 어플리케이션을 expose 하는 방법에 대한 것이다. 1. kubectl get pods 실행 $ kubectl get pods 이전 포스트에서 언급했드..

    쿠버네티스(Kubernetes) 공식 튜토리얼 #4

    쿠버네티스(Kubernetes) 공식 튜토리얼 #4

    이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 3단계를 실습해 보도록 한다. 2021.04.01 - [분류 전체보기] - 쿠버네티스(Kubernetes) 공식 튜토리얼 #3 쿠버네티스(Kubernetes) 공식 튜토리얼 #3 이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 2단계를 실습해 보도록 한다. 2021.04.01 - [분류 전체보기] - 쿠버네티스( Kubernetes) 공식 튜토리얼 #2 쿠버네티스( Kubernetes) 공식 튜토리얼 #2 이 devlos.tistory.com 튜토리얼 모듈 3는 kubectl 을 이용하여 Kubernetes 어플리케이션의 trubleshooting을 하는 방법에 대한 것이다. 1. kubectl get 실행 $ kubectl get pods Kube..

    쿠버네티스(Kubernetes) 공식 튜토리얼 #3

    쿠버네티스(Kubernetes) 공식 튜토리얼 #3

    이번 포스팅에서는 지난 포스팅에 이어 공식 튜토리얼 2단계를 실습해 보도록 한다. 2021.04.01 - [분류 전체보기] - 쿠버네티스( Kubernetes) 공식 튜토리얼 #2 쿠버네티스( Kubernetes) 공식 튜토리얼 #2 이번 포스팅에서는 지난 포스팅에서 소개했던 쿠버네티스 공식 튜토리얼 2021.03.31 - [클라우드 컴퓨팅 & NoSQL] - 쿠버네티스( Kubernetes) 공식 튜토리얼 #1 쿠버네티스( Kubernetes) 공식 튜토리얼 #1 쿠버 devlos.tistory.com 튜토리얼 모듈 2는 쿠버네티스에 App을 deploy 하는 기능에 대한 것이다. 1. kubectl version 클릭 $ kubectl version 다음으로 kubectl의 버전을 확인하는 명령어를 ..

    쿠버네티스( Kubernetes) 공식 튜토리얼 #2

    쿠버네티스( Kubernetes) 공식 튜토리얼 #2

    이번 포스팅에서는 지난 포스팅에서 소개했던 쿠버네티스 공식 튜토리얼 2021.03.31 - [클라우드 컴퓨팅 & NoSQL] - 쿠버네티스( Kubernetes) 공식 튜토리얼 #1 쿠버네티스( Kubernetes) 공식 튜토리얼 #1 쿠버네티스 공식 도큐먼트를 확인하다가 6가지의 기초 튜토리얼 과정을 소개한다. 대화형 튜토리얼을 사용해서 다음과 같은 내용을 배울 수 있다. 컨테이너화 된 애플리케이션을 클러스터에 배 devlos.tistory.com 중에서 클러스터 생성하기를 실습해 보도록 한다. 1. 실습하기 선택 다음 그림과 같이 대화형 튜토리얼 시작하기 버튼을 누르면 가상의 CLI 환경이 보인다. 첫 번째 모듈은 쿠버네티스 클러스터를 실행하는 과정을 실습할 수 있도록 환경을 제공한다. 터미널 창에 ..

    쿠버네티스( Kubernetes) 공식 튜토리얼 #1

    쿠버네티스( Kubernetes) 공식 튜토리얼 #1

    쿠버네티스 공식 도큐먼트를 확인하다가 6가지의 기초 튜토리얼 과정을 소개한다. 대화형 튜토리얼을 사용해서 다음과 같은 내용을 배울 수 있다. 컨테이너화 된 애플리케이션을 클러스터에 배포하는 법 디플로이먼트 스케일링하기 컨테이너화 된 애플리케이션을 새로운 버전으로 업데이트하기 컨테이너화된 애플리케이션 디버그 하기 환경: Minikube 본 튜토리얼을 활용하면 지금까지 학습한 개념들을 체감하는데 도움이 될 것 같다. 서버를 준비할 필요 없이 브라우저 CLI 환경으로 튜토리얼 진행 가능하다. 다음 글에서 튜토리얼을 진행내용을 정리해 보려고 한다. 2021.04.01 - [분류 전체보기] - 쿠버네티스( Kubernetes) 공식 튜토리얼 #2 쿠버네티스( Kubernetes) 공식 튜토리얼 #2 이번 포스팅에..

    쿠버네티스(Kubernetes)가 해결하는 과제

    쿠버네티스(Kubernetes)가 해결하는 과제

    2021.03.28 - [클라우드 컴퓨팅 & NoSQL] - 쿠버네티스(Kubernetes) 란? 이전 글에 이어서 쿠버네티스가 해결하는 과제에 대해서 살펴본다. 도커(Docker)와 쿠버네티스를 이용해 해결할 수 있는 9가지 과제 1. 애플리케이션의 빈번한 출시 대응 쿠버네티스의 롤아웃(roll-out)과 롤백(roll-back) 기능은 새로운 기능을 빈번하게 출시하고 버그 수정을 긴급 투입하는 것과 같은 민감한 작업을 안전하게 자동화해 준다. 정식 운영 중인 서비스의 애플리케이션 컨테이너를 무정지로 교체할 수 있다. 2. 무정지 서비스 쿠버네티스의 자기 회복 기능은 무정지 서비스 운영을 도와준다. 응답이 없어진 컨테이너를 재기동하며, 쿠버네티스 클러스터 내에 지정한 수만큼 컨테이너가 돌도록 관리해 준..

    쿠버네티스(Kubernetes) 란?

    쿠버네티스(Kubernetes) 란?

    쿠버네티스(Kubernetes) '컨테이너(Container)화된 애플리케이션을 효율적으로 배포하고 운영하기 위해 설계된 오픈 소스 플랫폼'이다. 공식 설명: 컨테이너화 된 워크로드와 서비스를 관리하기 위한 이식할 수 있고, 확장 가능한 오픈소스 플랫폼 - Kubernetes.io 쿠버네티스의 필요성 컨테이너 운영환경이 필요한 이유에 대해서는 조대협 선생님께서 잘 정리해놓으셔서 블로그 글의 내용을 인용하였다. 컨테이너를 하드웨어나 VM에 배포하여 사용하게 될 경우 적은 수라면 수동으로 직접 배포하면 되지만, 하드웨어와 컨테이너의 수가 많아지면 이 컨테이너를 어디에 배포해야 하는지에 대한 결정이 필요하다. 애플리케이션의 특성에 따라서, 같은 물리 서버에 배포가 되어야 하거나 또는 가용성을 위해서 일부러 다..