카샤의 만개시기

쿠버네티스 다양한 툴들 본문

DevOps/Docker & K8S

쿠버네티스 다양한 툴들

SKaSha 2020. 2. 26. 03:58

클러스터 검증

Sonobuoy

자체 호스팅 클러스터를 관리하거나 관리형 서비스를 사용 중이지만 쿠버네티스가 제대로 구성되어 있는지 최신 상태인지 확인하기 위해서 쿠버네티스 적합성 테스트를 진행할수 있다.

K8Guard

쿠버네티스 클러스터의 일반적인 문제를 확인하고 잘못된 부분을 수정하거나 해당 문제에 대한 알람을 보낼 수 있는 도구이다.
프로메테우스와 같은 모니터링 시스템에서 수집할 수 있는 메트릭을 제공하여 정책을 위반하는 디플로이먼트 개수, 쿠버네티스 API 응답 성능 등을 모니터링 할 수 있다.

Copper

쿠버네티스 매니페스트를 검사하는 도구로 일반적인 문제 사항을 플래그하거나 사용자 지정 정책을 적용한다. Cooper는 검증 규칙과 정책을 표현하기 위한 도메인 특화 언어(DSL)을 제공한다.
예를 들어 커밋 하기 전에 매니페스트를 검사하거나 풀 요청에 대한 자동 확인을 한다.

latest 태그를 사용하는 모든 컨테이너를 차단하는 규칙.

rule NoLatest ensure {
    fetch("$.spec.template.spec.containers..image")
        .as(:image)
        .pick(:tag)
        .contains("latest") == false
}

kube-bench

쿠버네티스 클러스터가 인터넷 보안센터(CIS)에서 지정한 기준을 따르는지 감사(audit)하는 도구.

카오스 테스팅

chaoskube

클러스터의 파드를 무작위로 종료시킨다.
(디폴트 설정은 네임스페이스, 파드, 쿠버네티스 시스템 파드, chaoskube 등 가리지 않고 무작위로 종료)
기본적으로 드라이 런 모드로 작동하여 종료할 파드만 보여주고 실제로 종료하지 않는다.
chaoskube 필터 설정이 완료되었다면 드라이 런 모드를 비활성화하여 실제로 작동하도록 만들수 있다.

kube-monkey

설정된 시각에 작동하며 나머지 시간에 디플로이먼트 스케줄을 빌드한다.
다른 도구와 다르게 옵트인(opt-in)기반으로 작동하며, 어노테이션을 사용하여 활성화를 지정한 파드를 대상으로 한다.
즉 개발 중인 서비스를 kube-monkey 테스팅에 추가하고 서비스에 따라 다른 수준의 빈도와 정도를 설정할 수 있다.

PowerfulSeal

대화형과 자율형 두 가지 모드로 작동한다.
대화형 모드를 사용하면 클러스터를 탐색하고 수동으로 테스트하여 결과를 확인할 수 있다.
(노드, 네임스페이스, 디플로이먼트, 개별 파트 제거 가능)
자율형 모드는 사용자 정책을 기반으로 작동하고 매우 유연하게 시나리오를 설정할 수 있다.

백업

Velero

클러스터의 상태와 퍼시스턴트 데이터를 백업하고 복구할 수 있다.
AWS, GCP, Azure 와 연동하여 구축이 가능하며 온프레미스 환경에선 minio와 호환하여 구축 가능하다.

개발 워크플로

Skaffold

구글에서 설계한 오픈소스 도구로 신속한 로컬 개발 워크플로를 제공한다.
로컬에서 개발한 컨테이너를 자동으로 리빌드하고 변경 사항을 로컬이나 원격 클러스터에 배포한다.

Draft

애저팀에서 관리하는 오픈소스 도구로 코드를 수정하면 헬름을 사용하여 자동으로 클러스터에 업데이트를 배포한다.
Draft는 로컬 어플리케이션의 디렉터리에 있는 파일을 검사하여 어떤 개발 언어인지 판단하여 해당 언어의 도커파일과 헬름 차트를 생성하여 준다.

Telepresense

Telepresense 파드는 실제 클러스터의 어플리케이션을 대신하여 실행된다.
실제 클러스터의 파드 트래픽은 로컬 머신에서 실행하는 컨테이너로 라우팅된다.
그로인해 어플리케이션 코드를 수정하면 새로운 컨테이너를 배포하지 않아도 업데이트는 실제 클러스터에 반영된다.

Knative

컨테이너화된 어플리케이션뿐만 서버리스 스타일의 함수와 같은 모든 종류의 워크로드를 쿠버네티스에 배포하기 위한 표준 매커니즘을 제공한다.
빌드 프로세스 설정, 자동화 배포, 표준화된 메시징과 큐잉 시스템을 사용한 이벤트 처리를 지원한다.

Argo

빅데이타 분석, CI/CD, 머신러닝 파이프라인을 만들때 유용하게 사용할 수 있는 컨테이너 기반 워크플로우 엔진이며 Job의 단위가 프로세스가 아닌 컨테이너 단위입니다.
쿠버네티스 자체 Job과의 가장 큰 차이점은 Job간의 종속성을 부여하여 workflow를 실행할 수 있다는 점입니다.

참고 : https://coffeewhale.com/kubernetes/workflow/argo/2020/02/14/argo-wf/

스토리지

Rook

쿠버네티스의 스토리지 오케스트레이션 도구로 클라우드 네이티브 환경과 기본적으로 통합할 수 있는 다양한 스토리지 솔루션 세트에 대한 플랫폼, 프레임워크를 지원합니다.

매니페스트 관리 도구

ksonnet

계산과 로직이 필요한 대규모의 복잡한 배포에는 선언적 YAML이 충분하지 않을때도 있다.
예를 들어 클러스터의 크기를 기반으로 레플리카 수를 동적으로 지정하기를 원하는 경우에는 실제 프로그래밍 언어가 필요하다.
ksonnet는 JSON의 확장 버전인 jsonnect를 사용하여 쿠버네티스 매니페스트를 작성할 수 있다.
jsonnect는 JSON에 추가 변수, 반복문, 산술문, 조건문, 오류 처리 등의 기능을 제공한다.
또한 프로토타입의 개념을 사용하기 때문에 일반적으로 사용하는 매니페스트 패턴을 찍어낼수 있다.

참고 서적

Clout Native DevOps with Kubernetes

Comments