-
istio란 무엇인가?Envoy & Istio 2019. 8. 15. 21:38
2017년 5월에 Google, Lyft, IBM에서 내놓은 서비스 메쉬(Service Mesh) 솔루션입니다. 서비스 메쉬는 마이크로서비스아키텍처(MSA) 구조에서 각 서비스들간의 트래픽을 제어하는 역할을 합니다. 주요 기능 서비스간의 트래픽이나 API 호출을 컨트롤 통신사이의 트래픽을 암호화하고 인증과 권한제어가 가능함. 트래픽 정책이나 자원 제어 서비스들에 대한 tracing, monitoring, logging을 자동으로 수행 아키텍처 이스티오의 구조는 논리적으로 data plane과 control plane 두 개의 영역으로 구분되어 있습니다. data plane : 실제 데이터 트래픽이 돌아다니는 영역. control plane : 트래픽 경로를 설정하고 관리하는 용도로 사용. Mixer의 정..
-
Envoy Proxy 소개Envoy & Istio 2019. 8. 8. 22:01
https://www.envoyproxy.io/ envoy는 클라우드 네이티브용으로 Lyft 사에서 C++로 개발해서 2016년 12월 14일 공개한 L7 프록시입니다. 2017년 5월에 Google, Lyft, IBM에서 공동으로 개발해서 내놓은 Service Mesh 오픈소스인 Istio의 메인 프록시가 됐습니다. 공개후 1년 뒤인 2017년 12월 14일에 CNCF에 11번째 프로젝트로 합류했습니다. 그리고 다시 1년뒤인 2018년 11월 28일 CNCF의 3번째 졸업 프로젝트가 되었습니다. CNCF의 첫번째 졸업프로젝트는 Kubernetes이고 두번째 졸업프로젝트는 Prometheus입니다. envoy는 다음을 목표로 하고 태어났습니다. "The network should be transparen..
-
쿠버네티스 pod 구성 패턴Kubernetes 2019. 3. 19. 16:06
사이드카 패턴(Sidecar) 사이드카 패턴은 원래 사용하려고 했던 기본컨테이너의 기능을 확장하거나 강화하는 용도의 컨테이너를 추가하는 패턴입니다. 기본 컨테이너에는 원래 목적의 기능에만 충실하고 나머지 부가적인 공통 기능들은 사이드카 컨테이너를 추가해서 사용할 수 있습니다. 일반적인 웹서버의 예를 생각해 보면 다음 그림처럼 웹서버 컨테이너는 웹서버로서의 역할에 충실하고 자신의 로그는 포드의 파일로 남깁니다. 그러면 사이드카 역할인 로그수집 컨테이너가 파일시스템에 쌓이는 로그를 수집해서 외부의 로그수집 시스템으로 보내는 역할을 합니다. 이렇게 구성하게 되면 웹서버 컨테이너만 다른 역할을 하는 컨테이너로 변경하게 되면 로그수집 컨테이너는 그대로 사용할 수 있습니다. 그래서 이런 공통역할을 하는 컨테이너의 ..
-
쿠버네티스 커스텀 리소스(kubernetes Custom Resources)Kubernetes 2019. 1. 11. 09:00
쿠버네티스는 api 구조 들이 잘 정의되어 있습니다. 그래서 뛰어난 확장성을 가지고 있습니다. 쿠버네티스에서 제공하는 내장된 리소스 뿐만 아니라 사용자가 필요한 리소스를 쿠버네티스 내부에 정의해서 사용할 수 있습니다. 이렇게 커스텀리소스(CustomResource)를 정의해 놓으면 쿠버네티스 시스템 내부에 녹아들어서 kubectl같은 쿠버네티스 기본 명령어들과 함께 사용하는 것이 가능해 집니다. 그리고 그런 리소스들을 이용하는 자신만의 api 컨트롤러들을 만들어서 사용하는 것이 가능합니다. 쿠버네티스에서 사용자가 원하는 모든 기능들을 기본 기능으로 제공하려 하기 보다는 자신들에게 필요한 기능들은 직접 추가해서 사용할 수 있도록 커스텀 리소스 관련 기능들을 제공하고 있습니다. 커스텀 컨트롤러 커스텀 리소스..
-
helm 차트 사용하기Kubernetes 2018. 12. 24. 09:00
helm 차트 구조 helm에서 사용하는 차트는 디렉토리 하나에 들어가 있는 파일들의 집합입니다. 디렉토리 이름을 차트이름으로 지정하고 그 안에 필요한 파일들을 넣습니다. 디렉토리안의 파일들은 대략 다음과 같은 구조를 가집니다. wordpress/ Chart.yaml # 차트에 대한 정보를 가지고 있음. LICENSE # 옵션 : 차트 라이센스에 대한 정보를 가지고 있음. README.md # 옵션 : 차트에 대한 설명 파일 requirements.yaml # 옵션 : 차트의 의존성을 명시한 파일 values.yaml # 이 차트에서 사용하는 기본 설정 값 charts/ # 이 차트에 관련되어 있는 차트들 templates/ # 쿠버네티스 매니페스트 파일들로 변환될 YAML템플릿 파일들 templates..
-
helm 기본Kubernetes 2018. 12. 21. 09:00
helm 소개 helm은 쿠버네티스 패키지 매니저 입니다. 쿠버네티스를 사용하다보면 결국 수많은 YAML파일들을 관리해야 됩니다. helm에서는 이런 YAML파일들의 집합을 차트(chart)라고하고, 이 차트를 관리할 수 있게 해주는 도구가 helm입니다. helm은 쿠버네티스의 하위 프로젝트로 시작되었다가 2018년 6월에 CNCF재단의 정식 프로젝트로 승격되었습니다. Helm은 차트를 만들고, 차트 압축 파일(tgz)를 만들수 있습니다. 그리고 차트들이 저장되어 있는 차트 저장소(chart repository)와 연계해서 쿠버네티스 클러스터에 차트를 설치하거나 삭제할 수 있습니다. helm으로 설치된 차트들의 배포 주기를 관리할 수도 있습니다. helm을 이용하면 잘 정리된 차트들을 이용해서 필요한 ..
-
쿠버네티스 DNS(kubernetes dns)Kubernetes 2018. 9. 17. 09:00
쿠버네티스에서는 클러스터 내부에서만 사용가능한 DNS를 설정해 놓고 사용할 수 있습니다. 그래서 포드간 통신을 할때나 IP가 아닌 도메인을 설정해 두고 사용할 수 있습니다. 그렇게해서 한 클러스터에서 사용하던 yaml파일에서 포드간 통신을 도메인으로 설정해 둔다면 그걸 별다른 수정 없기 그대로 다른 클러스터로 가져가서 사용하는 것도 가능합니다. ip로 통신하도록 되어 있다면 한곳에서 세팅해놨던 yaml파일을 다른곳으로 옮겨 가져가서 사용하려고 할때 그 클러스터에서 사용하는 ip 대역이 다른 것이라면 그대로 사용할 수가 없게 됩니다. 이럴때 설정이 도메인을 사용하도록 되어 있다면 별다른 수정없이 그대로 사용할 수가 있습니다. 그 뿐만 아니라 일부의 경우에는 서비스디스커버리(service discovery)..
-
쿠버네티스 오토스케일링(kubernetes autoscaling)Kubernetes 2018. 9. 12. 09:00
클라우드를 사용하면서 유용한 기능으로 언급하는 것중에 가장 많이이야기하는게 오토스케일링이 아닐까 싶습니다. 컨테이너 오케스트레이션 쪽에서는 컨테이너만 잘 준비되어 있으면 오토스케일링이 더욱 쉬워지게 되었습니다. 쿠버네티스에서도 HPA(Horizontal Pod Autoscaler)라는 기본 오토스케일링 기능이 내장되어 있습니다. HPA는 CPU 사용률 기반으로 디플로이먼트로 실행된 포드의 개수를 개수를 늘리거나 줄이는 역할을 해줍니다. HPA 설정하기 오토스케일링 설정을 해보도록 하겠습니다. 다음 파일을 autoscaling.yaml로 저장한 다음에 kubectl apply -f autosclinging.yaml로 적용시키면 됩니다. apiVersion: autoscaling/v1 kind: Horizo..