lapee79's Tech Blog

lapee79의 기술 지식 창고.

Kubernetes에서 Local Persistent Volume을 사용하여 local disk 사용

Local Persistent Volume 기능은 Kubernetes 1.14에서 GA 되었습니다. Local Persistent Volume은 한 Kubernetes Node에 직접적으로 장착된 local disk를 가리킵니다. Kubernetes에서 HostPath, LocalVolume 을 통해 local disk를 사용할 수 있습니다. HostPath: 스케쥴링 정보를 가지지 않은 볼륨. 각각의 pod를 한 node에 고정하려고 한다면 pod 정의에 nodeSelector같은 스케쥴링 정보를 설정해야 합니다. LocalVolume: 볼륨 자체적으로 스케쥴링 정보를 가지며, 이 볼륨을 사용하는 pod는 특정 node에 고정할 수 있으므로 데이터 연속성을 보장할 수 있습니다. Local Persistent Volumes 는 표준 PVC 객체를 사용한 local disk에 엑세스를 허용합니다. 더보기

Bare Metal 서버에 kubespray를 이용하여 Production 환경의 Kubernetes 클러스터 구축

Kubespray는 일반적인 OS 설정과 Kubernetes 구성/관리 작업에 관련된 Ansible playbook들과 inventory 그리고 배포 도구들을 조합한 소프트웨어입니다. 구성환경 하드웨어 5 Nodes: VM 또는 물리 서버 Memory: 8GB CPU: 4Core 디스크: 120GB 이상 소프트웨어 Kubernetes nodes Ubuntu 18.04 Python SSH Server sudo 권한을 가진 유저 Kubespray machine Ansible 2.7.8+(not 2.8.x) Jinja 2.9+ Node 네트워킹 요구사항 Docker 이미지들을 download하고 소프트웨어들을 설치할 수 있도록 인터넷 접속을 허용해줍니다. 더보기

Blackbox exporter를 이용한 HTTP 모니터링

Prometheus에서는 Blackbox exporter 를 이용하여 외부에 있는 서비스의 HTTP/HTTPS, DNS, TCP, ICMP 모니터링을 할 수 있습니다. 이 포스트에서는 이중에 HTTP/HTTPS를 모니터링하는 방식을 간단하게 알아보도록 하겠습니다. Kubernetes 상에서 Prometheus를 사용하는 환경의 사용자를 대상으로 작성하였습니다. 실행환경 여기에서는 다음과 같은 환경에서 Blackbox exporter를 사용한 모니터링 실습을 진행합니다. Kubernetes Prometheus operator Blackbox exporter 설정 파일 생성 웹 서비스 엔드포인트를 모니터링하기 위한 http 모듈을 구성하기 위해 Blackbox configuration 파일을 ConfigMap으로 작성합니다. apiVersion: v1 kind: ConfigMap metadata: name: prometheus-blackbox-exporter labels: app: prometheus-blackbox-exporter data: blackbox. 더보기

Loki - Kubernetes 로깅

Loki는 Prometheus에 영감을 받아서 탄생한 클라우드 네이티브 인프라를 위한 로깅 서비스입니다. Loki는 무엇인가? KubeCon Seattle 2018에서 Grafana Labs에서 오픈소스로 공개된 Loki는 Kubernetes에서 Prometheus에 대한 경험이 있는 사용자에게 최적화된 로깅 백엔드입니다. Loki는 뛰어난 로그 검색 및 시각화 기능을 Grafana 6.0에서 제공합니다. Grafana Loki는 완전한 기능을 갖춘 로깅 스택으로 구성되어져 있습니다. Loki는 단일 로그 라인을 그대로 처리한다는 아이디어를 기반으로 만들어졌습니다. 이는 전체 텍스트 인덱싱을 하는 것이 아니라 Prometheus와 마찬가지로 동일한 label을 사용하여 관련 로그들을 그룹화한다는 것을 의미합니다. 더보기

Setup a production-ready Istio

Istio는 service mesh 기술로 네트워크에 추상화 계층을 추가하여 마이크로 서비스의 연결, 관리, 보안 기능들을 제공합니다. 이 포스트에서는 Istio를 Kubernetes 플랫폼 상에 Production 환경에 맞게 설치하는 방식에 대해서 알아보겠습니다. Istio는 다양한 기본 Configuration Profile을 제공합니다. 하지만 Production에서 Istio를 구성하기 위해서는 기본 Configuration Profile에서 다음 사항들을 적용하여 설치가 필요합니다. 기본 설정에서 최적화된 설정값을 적용하여 성능을 개선 Secure Gateway를 위한 SDS 활성화 Prometheus, Grafana, Jaeger, Kiali 와 같은 구성요소들을 별도로 구성하여 통합 위 사항들이 반영될 수 있도록 Istio 설치 절차를 살펴보도록 하겠습니다. 더보기

Alertmanager로 Prometheus의 알람을 Microsoft Teams에 발송하기

Alertmanager를 사용하면 Prometheus에서 발생한 알람을 이메일, Slack, SMS 등의 클라이언트에 발송할 수 있습니다. 하지만 필자가 일하는 회사에서는 Slack이 아니라 Microsoft Teams를 사용하고 있었습니다. Alertmanager에서는 이메일, HipChat, PagerDuty, Slack 등은 네이티브로 지원하지만 Microsoft Teams는 Webhook을 이용하여 써드파티 도구를 사용해야 합니다. 여기에서는 Kubernetes 클러스터 모니터링을 위해 Prometheus operator가 설치된 상황에서 Microsoft Teams로 알람을 수신하여 모니터링할 수 있는 환경을 구축해보겠습니다. Microsoft Teams에서 Incoming Webhook URL 받기 여기에서는 Teams의 기본적인 내용은 스킵하고 채널에 Incoming Webhook을 구성하는 단계부터 설명하도록 하겠습니다. 더보기

GitHub Pages에서 웹사이트 호스팅하기

요즘 웹사이트를 개설하는 것은 놀라운 일은 아닙니다. 웹사이트는 기업 홈페이지, 개인 블로그, 포트폴리오, 온라인 쇼핑몰 등으로 다양합니다. 이런 서비스들은 다양하게 있지만 일반적으로 비용을 요구합니다. 하지만 GitHub Pages를 이용한다면 무료로 웹사이트를 호스팅할 수 있습니다. GitHub는 소프트웨어 개발자들에게 협업할 수 있는 git repository를 제공하는 서비스로 세상에서 가장 큰 개발자 커뮤니티이기도 합니다. 대부분의 Open Source project들이 GitHub을 통해 진행되기도 합니다. 이런 GitHub에서는 Pages라는 서비스로 무료로 정적 웹호스팅도 제공하고 있습니다. 5분만에 웹사이트를 개설해보자. 이제 실제로 GitHub Pages 웹사이트를 개설해보겠습니다. 더보기