클라우드 컴퓨팅 & NoSQL

    [2주차] PKOS 쿠버네티스 실무 실습 스터디 (23.01.15)

    [2주차] PKOS 쿠버네티스 실무 실습 스터디 (23.01.15)

    들어가며 이번 글에서는 Kubernetes Network에 대해 스터디에서 배운 내용을 정리하도록 한다. Kubernetes는 클러스터 내부 통신을 위해 Network Plugin을 사용한다. 플러그인은 CNI(Container Network Interface)를 사용한 다양한 오픈소스를 이용하는데, 그중 Calico를 많이 사용하는 것 같다. 사내에 구축한 Kubernetes Cluster 역시 Calico 기반이다. Kubernetes Pod는 Container들로 구성되는데 Pod의 Pause 컨테이너를 통해 하나의 IP를 할당할 수 있다. (Container 개별적으로 접근하려면 Port를 이용해야 한다.) Pod 들은 Node(Host)의 이더넷 카드를 이용하여 외부로 통신한다. 여기서 외부는 ..

    [1주차] PKOS 쿠버네티스 실무 실습 스터디 (23.01.08)

    [1주차] PKOS 쿠버네티스 실무 실습 스터디 (23.01.08)

    들어가며 사내 실험용 서버팜을 EKS 기반으로 구축하기 위해 노력 중이었다. 그러던 중 AWS 환경에서 쿠버네티스 실무 실습 스터디 모집을 한다는 소식을 우연히 접하게 되어 바로 신청했고, 운이 좋게 40여 명의 스터디 인원중 한 명으로 참여할 수 있게 되었다. AWS가 아직은 익숙하지 않았기에, ‘이번 기회에 열공 해서 제대로 감을 잡아 보자!’ 하는 마음으로 보내주신 스터디 사전 지식들을 학습하기 시작했다. 지난 일요일(23.01.08) 본격적으로 1주차 실습에 임하게 되었다. 스터디는 정말 군더더기 없이 유용한 정보들과 함께 빠르게 진행되었다. 스터디 리더이신 가시다님께서 커리큘럼과 진행에 대해 많은 고민을 하신 것이 온몸으로 느껴졌다. 아직 스터디를 접하지 못한 Cloud 또는 DevOps 엔지니..

    [Istio] Istio Service mesh 튜토리얼 후기

    [Istio] Istio Service mesh 튜토리얼 후기

    들어가며 Istio Service Mesh 는다양한 장점을 가지고 있지만, 그중 필자가 도입하고자 하는 이유는 두 가지다. 첫 번째, 서비스간 상호작용 추적 운영 중인 서비스간 상호 관계를 파악하기 위한 방법은 전술적 설계 과정의 개발 산출물을 토대로 서비스의 연관성을 확인한 후, Datadog의 이벤트 로그들을 확인하며 검증하는 방법뿐이다. Istio Service Mesh의 Sidecar를 기반으로 한 운영 가시화가 매력적이었다. 또한 Sidecar를 이용하여 상호 작용이 불가능한 서비스 결함을 사전 탐지할 수 있는 점도 좋았다. 두 번째, Circuit breaker 도입 운영 중인 서비스에 Circuit breaker를 도입하기 위함이다. 플랫폼이 Polyglot 한 마이크로 서비스 구조로 변경되..

    [Kubernetes] DEVOCEAN - 김정기 전문가(SK Telecom)님의 멘토링

    [Kubernetes] DEVOCEAN - 김정기 전문가(SK Telecom)님의 멘토링

    들어가며 9월, 적잖은 노력 끝에 2개의 MSA 프로젝트를 성공적으로 Kubernetes 환경에 배포하게 되었다. 이제 우리 회사도 탄력적인 클라우드 인프라를 사용할 수 있는 환경이 조성되었다는 뿌듯함과 함께 2가지 미해결 사항이 마음을 무겁게 하고 있다. 첫 번째, CI/CD 환경 구축 프로젝트가 아직 연구단계이기 때문에 도메인 요구사항이 계속 발굴되고, 자잘한 버그들이 많은 상황이다. 그래서 하루 평균 10~20번 정도 빌드와 배포를 반복하고 있다. 프론트엔드의 경우 단일 프로젝트라 한 번의 빌드로 끝나지만, Micro serice들 상호 간에 패치를 진행하면 빌드 횟수는 n배로 늘어나는 상황이다. 사업이 어느 정도 일단락되는 시점에 CI/CD에 대한 탈출구를 찾아야한다. 두 번째, Distribut..

    [Kubernetes]Nginx 이미지를 이용한 간단한 쿠버네티스 프로젝트

    [Kubernetes]Nginx 이미지를 이용한 간단한 쿠버네티스 프로젝트

    들어가며 MSA에 입문한 뒤로 블로그에 글을 올라는 횟수가 대폭 줄었다.. 회사에 제안한 MSA 기반 프로젝트를 진행하면서 학습량이 많이 증가했기 때문이다. (서비스 나누는 법을 알기 위해 이벤트 스토밍을 공부하고.. 서비스를 잘 만들기 위해 DDD와 객체 지향도 들여다보고.. Spring framework와도 이제 아주 조금은 친해진것 같기도 합니다.) 3번째로 진행하는 MSA 기반 프로젝트는 시스템 규모가 좀 있다 보니 마이크로 서비스가 18개 정도 도출되었다. 1, 2번째 진행한 MSA 기반 프로젝트들은 서비스 개수가 6~8개 정도였기 때문에 Kong 기반 API gateway + Docker compose 환경에서 처리가 가능했다. 하지만 진행 중인 프로젝트는 서비스의 개수도 많고, 상황에 따른 ..

    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..

    [AWS] AWS로 웹서버 작성하기

    [AWS] AWS로 웹서버 작성하기

    이번 포스팅에서는 AWS로 인스턴스 생성 및 웹서버를 작성하는 방법에 대해서 다룬다. (이번 포스팅 내용을 직접 해보시려면 이전 포스팅인 AWS CLI를 진행하셔야 합니다.) 2021.04.19 - [클라우드 컴퓨팅 & NoSQL] - [AWS] Command Line Interface(CLI) 설치 방법 (Mac) [AWS] Command Line Interface(CLI) 설치 방법 (Mac) 이번 포스팅에서는 awscli(AWS Command Line Interface) 설치 방법에 대한 내용을 다룬다. AWS CLI는 AWS 서비스를 관리하는 통합 도구이다. 도구 하나만 다운로드하여 구성하면 여러 AWS 서비스를 명령줄에서 devlos.tistory.com 1. 보안 그룹 설정 보안 그룹은 방화벽..

    [AWS] Command Line Interface(CLI) 설치 방법 (Mac)

    [AWS] Command Line Interface(CLI) 설치 방법 (Mac)

    이번 포스팅에서는 awscli(AWS Command Line Interface) 설치 방법에 대한 내용을 다룬다. AWS CLI는 AWS 서비스를 관리하는 통합 도구이다. 도구 하나만 다운로드하여 구성하면 여러 AWS 서비스를 명령줄에서 제어하고 스크립트를 통해 자동화가 가능하다. AWS 명령줄 인터페이스 aws-shell은 명령줄 셸 프로그램으로서, AWS 명령줄 인터페이스를 사용하는 새로운 사용자와 고급 사용자 모두에게 도움이 되는 편의 기능 및 생산성 기능을 제공합니다. 주요 기능은 다음과 같습 aws.amazon.com AWS CLI를 사용하기 위해 homebrew를 이용하여 awscli를 설치한다. (Mac 환경) $ brew install awscli 그다음 aws configure라는 커맨드..

    [젠킨스(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를 실..

    도커 컨테이너(Docker container) 빌드하기

    도커 컨테이너(Docker container) 빌드하기

    이번 포스팅에서는 간단하게 도커 컨테이너 빌드하는 방법에 대해 정리하도록 한다. 컨테이너 빌드 순서 컨테이너 빌드하는 실행 순서는 다음과 같다. 디렉터리를 준비하여 이미지에 포함시킬 파일들을 모음 *Dockerfile을 작성 컨테이너에서 실행할 애플리케이션 코드를 작성하고 유닛 테스트를 실행 이미지를 빌드 컨테이너를 실행하고 동작을 확인 * Dockerfile: 도커 이미지를 빌드하는 스크립트 파일로써, 다음과 같은 내용을 담고 있다. 베이스 이미지의 repository 설치할 패키지 애플리케이션 코드와 설정 파일 컨테이너 기동 시 실행될 명령어 1. 작업 파일 만들기 컨테이너를 빌드하기 위해서 먼저 작업 파일을 만든다. 예제에서 작업 파일 이름은 'Step03'으로 만들었다. $ mkdir Step03..

    도커, 쿠버네티스 Cheat Sheet

    도커, 쿠버네티스 Cheat Sheet

    이번 포스팅에서는 오늘 도커와 쿠버네티스를 공부하면서 치트 시트를 소개하도록 한다. 도커, 쿠버네티스 명령어 치트 시트 링크 도커, 쿠버네티스 명령어 치트시트 Docker 도커 명령어 치트시트 기능,커맨드 실행 예,설명 컨테이너 환경 표시,docker version,도커 클라이언트와 서버 버전 표시 docker info,구체적인 환경 정보 표시 컨테이너 이미지 빌드,docker build -t 리 docs.google.com 도커와 쿠버네티스를 학습하면서 컨테이너를 다루기 위한 개념 정리와 사용되는 명령어들을 학습 중이다. 학습하면서 만나게 되는 다양한 명령어 예제를 치트 시트에 계속 업데이트하려고 한다. 공식 사이트에 도커와 쿠버네티스 명령어들이 잘 정리되어 있지만, 나만의 명령어 치트 시트를 만들어놓..

    도커(Docker) docker run <image>의 실행순서

    도커(Docker) docker run <image>의 실행순서

    이번 포스팅에서는 docker run 의 작동원리에 대해서 살펴보도록 한다. docker run 명령어에는 여러 가지 옵션이 있지만, 제일 기본적인 명령은 이미지를 이용해 컨테이너를 바로 동작시키는 것이다. 아래의 명령어를 이용하여 hello-world를 실행시켜 보도록 한다. $ docker run hello-world 아무 옵션을 주지않고, docker run hello-world를 실행하면 위와 같은 실행결과를 얻을 수 있다. 출력되는 내용을 요약하자면 hello-world라는 이미지를 로컬에서 찾을 수 없어서, 최신 hello-world 이미지를 풀링 한 다음 실행한다는 것이다. 위의 과정을 다이어그램으로 나타내면 다음과 같다. Docker CLI가 "run" 명령을 받고 docker server..

    도커(Docker)를 사용하는 이유

    도커(Docker)를 사용하는 이유

    이번 포스팅은 도커를 사용하는 이유에 대해서 알아보는 것이다. 도커를 사용하는 이유를 알기 위해서 반적인 소프트웨어 설치방식을 이해해야 한다. 일반적인 소프트웨어 설치방식은 다음 그림과 같다. 어떤 소프트웨어를 사용하기 위해서 우리는 설치 파일을 다운로드하고 실행한다. 설치를 하다가 오류가 발생하면 스택오버플로우나 구글 검색을 통해서 오류 해결방법을 찾아내서 적용한다. 그리고 인스톨을 계속 실행하다가 다른 에러를 만나게 된다. 그러면 이전과 같이 오류를 해결할 수 있는 방법을 계속 검색해야 하고, 이 과정은 소프트웨어가 잘 설치될 때까지 반복된다. 도커는 이러한 문제점을 해결한다. 설치나 의존성에 대한 걱정 없이 쉽게 소프트웨어를 설치, 실행할 수 있도록 함 이것이 도커를 사용하는 이유이다. 필자는 소프..