본문 바로가기

Cloud Native

(5)
[Jenkins] Kubernetes에 Jenkins 분산 빌드 환경 설정 (Master-Slave) Jenkins는 대표적인 CI(Continuous Intergration) 툴로, 많은 플러그인을 제공하며 확장성이 크다는 장점이 있다. Jenkins를 Kubernetes에 구축하고, 분산 빌드 환경을 설정하려고 한다. Jenkins 단일 서버 - 크고 무거운 프로젝트가 점점 더 많이 빌드된다면, 단일 서버로 버틸 수 없음 - 빌드 환경을 다르게 설정하고 싶을 때에도 단일 서버에서는 불가능함 Jenkins 분산 아키텍처 Jenkins는 Mater-Slave 아키텍처를 통해 분산 빌드 환경을 관리할 수 있다. (요즘은 slave 대신 agent라고 부르는 듯) - Master 빌드 작업을 스케줄링하고 Slave에서 실행 및 모니터링 (물론, 빌드 작업 실행도 가능) / Jenkins 서버 (GUI, AP..
[Kubernetes] 쿠버네티스 API 확장하기 - custom resource, crd Helm chart를 설치할 때 다음과 같은 에러가 나올 때가 있다. ( 아래는 argocd를 재설치하다가 발생한 에러 ) Error: release argo failed: customresourcedefinitions.apiextensions.k8s.io "workflows.argoproj.io" already exists customresourcedefinitions가 이미 있어서 설치가 안된다는 내용이다. 해결 방법에는 두 가지가 있다. 1. customresourcedefinition를 삭제하고, helm chart를 설치 $ kubectl delete crd crd_name 2. 이미 존재하는 customresourcedefinition의 재설치를 건너뛰고 helm chart를 설치 → --no..
[Kubernetes] 쿠버네티스 플러그인 추천 (kubectx, kubens, ...) kubectl 명령어로 쿠버네티스 클러스터 context나 namespace를 변경하는 것은 번거롭다. (명령어가 길다) Kubectx, Kubens kubectx, kubens를 활용하면 쉽게 클러스터의 context나 namespace를 변경할 수 있다. ahmetb/kubectx Faster way to switch between clusters and namespaces in kubectl - ahmetb/kubectx github.com 설치 방법은 간단하다. kubectx를 설치하면 kubens도 설치된다. ( mac os 기준 ) $ brew install kubectx 다음과 같이 kubectx, kubens를 cli에 치고 원하는 context와 namespace를 선택하면 된다. ( 엄..
[Kubernetes] 쿠버네티스 입문하기 쿠버네티스를 다룬다고 다뤘지만 아직 많이 부족하기에.. 책을 읽어보았는데 역시나 새로 알게된 것들이 많았다. '쿠버네티스 입문' 이라는 책이었는데 내용도 설명도 좋은 것 같다! (추천) Kubernetes 간단하게 설명하면, 쿠버네티스는 컨테이너 오케스트레이션 플랫폼이다. 쿠버네티스를 통해 무중단 서비스를 제공할 수 있다. 점진적 업데이트 기능을 통해 서비스를 중단하지 않고 업데이트 할 수 있다. Self Healing 기능을 통해 특정 컨테이너에 갑작스런 장애가 발생해도 복제 컨테이너를 통해 서비스를 유지할 수 있다. Vendor Lock In 문제도 해결할 수 있다. vendor lock in = 서로 다른 업체(vendor)의 클라우드 제품 간에 호환 문제가 발생하는 문제 쿠버네티스를 통해 클라우드..
Container 총정리 Cloud Native 기술의 기초가 되는 지식들? 헷갈릴 수 있어서 정리해보려고 한다. VM과 Container 어떻게 다르지? VM VM은 하이퍼바이저 위에서 구동되며 Guest OS를 포함하고 있다는 것이 특징이다. 하이퍼바이저란? 다수의 OS를 구동할 수 있게 하는 소프트웨어 하드웨어를 가상화하면서 VM들을 관리하는 관리자라고 할 수 있다 네이티브형, 호스트형이 있다 VM은 독립적인 하드웨어 자원을 할당 받으므로 완전히 독립된 환경에서 구동된다. (자원 공유 X) Container 컨테이너는 Guest OS를 필요로 하지 않고, 애플리케이션을 실행시킨다. 컨테이너들은 OS Kernel을 공유하며 유저 공간 만을 분리한다. (/bin/lib 부터 생김) 애플리케이션에 필요한 라이브러리와 바이너리, ..