목록DevOps/Opensource (8)
devops
Crossplane은 쿠버네티스 익스텐션 오픈소스다. K8S API를 통해서 쿠버네티스를 포함한 모든 리소스를 매니징할 수 있게 해준다. Cloud Native Compute Foundation(CNCF)의 프로젝트로, 현재 AWS, Azure와 같은 클라우드 리소스 매니징에 많이 사용된다. Crossplane? 쿠버네티스 클러스터로부터 외부, non-쿠버네티스 리소스와 연결하고 이 리소스를 활용하는데 사용됨 Kubernetes CRD로 만들어져 쿠버네티스 오브젝트의 external 리소스다. external resource의 state를 감시하고, state를 적용하는 쿠버네티스 컨트롤러 역할을 한다. Crossplane Components Crossplane의 강점은 Composition에 있다. 다..
https://helm.sh/ko/docs/howto/charts_tips_and_tricks/ 차트 개발 팁과 비법 Covers some of the tips and tricks Helm chart developers have learned while building production-quality charts. helm.sh 위 helm 공식 문서에 차트 개발 팁과 비법이라는 내용이 있다. 이 내용과 더불어 몇 가지 추가적으로 정리해보자. 1. install과 upgrade 자동 실행 $ helm upgrade mychart . -n mychart-ns --create-namespace --install upgrade를 시도하는데, 기존 릴리즈가 없으면 install하는 명령어로 install과 u..
Prometheus 헬름 차트에 이어 이번에는 helm test 옵션이 있는 grafana 헬름 차트를 분석해보려고 한다. Grafana Helm chart # grafana helm repo Chart.yaml values.yaml README.md templates - NOTES.txt - _helpers.tpl - deployment.yaml - statefulset.yaml - clusterrole.yaml - tests (directory) Grafana의 template에는 tests라는 디렉토리가 있다. 이 tests는 마치 헬스체크처럼 kubernetes cluster에 grafana가 정 작동하는지를 헬스체를 한다. 아래와 같이 여러 yaml 파일이 생성되어 있다. 이 테스트를 위해서는 ..
Helm 차트를 무작정 만드는 것은 쉬우나, 더 적은 코드로 효율적으로 짜는 것은 쉽지않다. 그러기 위해선 이미 잘 만들어진 Helm 차트를 한번 뜯어보고 어떤 흐름제어와 함수들이 사용되었는 지를 확인해보면 좋다고 생각한다. Prometheus는 웬만한 서비스들이 사용하는 모니터링 툴이자, 차트도 잘 짜여져있어 참고해보면 좋다. Prometheus Helm chart # Prometheus helm root path Chart.yaml Chart.lock README.md values.yaml templates - NOTES.txt - _helpers.tpl - alertmanager - node-exporter - server - pushgateway ... Chart dependency Helm 차트..
윈도우에 mongodb를 설치하고 나서 실행할 때 아래와 같은 에러가 뜨게된다. 이 에러는 처음 설치할 때, 설정된 DB 디렉토리가 존재하지 않아서 발생하는 오류다. mongodb의 default DB 디렉토리 경로는 C:\data\db 기 때문에 C드라이브에 data/db 디렉토리를 생성하거나, 다시 설치해서 db 디렉토리 경로를 재설정하는 것이 좋다. 만약 Ubuntu일 경우, 아래 명령어로 디폴트 /data/db 생성 후 권한 설정 sudo mkdir -p /data/db sudo chown -R `id -un` /data/db + 윈도우 사용자라면 차라리 클라우드 상에서 만들거나, 도커 이미지를 활용하는 것이 간단함.
아래와 같이 외부에서 mysql 서버에 접속하려고 하면 connection refused 에러가 뜬다. 난 pymysql 모듈로 어플리케이션과 mysql을 연결하려는 작업을 하려는 중이었고, mysql은 aws 클라우드에 설치되어 있다. 간략히 크게 2가지 원인으로 볼 수 있다. 1. AWS 보안그룹의 인바운드 설정 EC2의 보안그룹에서 mysql의 기본 port인 3306 인바운드를 열어준다. 2. mysqld.cnf 외부 허용 설정 mysqld.cnf 파일에서 bind-address 를 수정하여 외부 접속을 허용한다. 먼저, 외부 접속이 허용되는지 확인하려면 sudo netstat -ntlp | grep mysqld 명령어를 사용하여 확인한다.(수정 전) mysql 5.7 버전 이상인 경우, /etc..
프로메테우스는 오픈소스 모니터링/알림 시스템이다. 쿠버네티스와 노드, 프로메테우스를 모니터링할 수 있다. 쿠버네티스를 지원하는 재단 CNCF가 프로메테우스를 관리하고 있고 이 두 도구의 시각화를 담당하는 Grafana를 포함, 이 세 가지가 한 묶음으로 많이 쓰이는 편이다. Prometheus 구성요소 시계열(Time series) 데이터를 저장 다양한 exporter로부터 대상의 메트릭을 pull하여 주기적으로 가져오는 모니터링 시스템 Alert manager로 경고, 알람 설정 사용자가 직접 질의가능한 Web UI(PromQL언어 사용) 쿠버네티스 exporter 프로메테우스는 쿠버네티스 메트릭을 가져올 수 있는 쿠버네티스 exporter가 있다. exporter는 kube API를 사용한다.
K6 Grafana k6는 성능 테스트를 쉽게 할 수 있는 오픈소스 부하 테스트 도구다. 무료로 사용할 수 있고, 자유자재로 확장가능하다. Grafana Labs와 커뮤니티가 개발 했으며, 시스템의 안정성을 테스트하는 데 굉장히 효과적이다. 아래와 같은 특징이 있다. 개발자 친화적인 API Javascript ES2015/ES6의 Script(로컬과 연결 모듈 지원) 목표 지향적이고 자동화 부하 테스트 가능 K6 설치 방법(Ubuntu/Debian) $ sudo gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD1..