[cloud native][platform] KubeSphere
Updated:
개요
- https://kubesphere.io/
- 멀티 테넌트 Kubernetes 컨테이너 플랫폼
- Kubernetes를 커널로 사용하는 어플리케이션 관리를 위한 클라우드 네이티브 분산 운영 체제
- 풀 스택 자동화 IT 운영과 간소화된 DevOps 워크플로우 지원
- 플러그 앤 플레이 아키텍처를 제공하여 타사 어플리케이션을 해당 에코시스템에 원활하게 통합 가능
- 인프라팀
- 클라우드에서 데이터센터로 자동 설치, 확장 및 업그레이드
- 리소스 활용도 향상 및 내부 인프라 비용 절감
- 보안 강화를 제공
- 여러 스토리지 및 네트워크 솔루션을 지원
- Kubernetes 플랫폼 및 배포 제공
- 다중 클라우드 및 다중 클러스터 Kubernetes 관리 지원
- 공급업체 종속 방지
- 개발팀
- 모든 어플리케이션 환경에 맞는 툴킷 및 배포 자동화 제공
- 소스 코드에서 재현 가능한 이미지를 빌드하기 위한 즉시 사용 가능한 툴킷을 제공
- 운영팀
- 원스톱 엔터프라이즈급 DevOps 프레임워크 구축
- 인프라에서 어플리케이션에 이르기까지 중앙 집중식 로그 수집, 모니터링, 경고, 이벤트 및 감사 로그 제공
- 지속적인 배포, 테스트, 릴리스, 업그레이드 및 확장의 간소화된 프로세스
- 사용자
- 투명한 기본 인프라를 위해 한 번의 클릭으로 앱 배포 및 업그레이드
- 온디맨드 컨테이너 리소스 및 HPA(Horizontal Pod Autoscaling)를 제공하여 어플리케이션의 안정성과 유연성을 강화
- Helm 리포지토리를 가져와 어플리케이션을 시각적으로 배포 및 업그레이드
- 어플리케이션 측정 및 청구를 포함한 어플리케이션 스토어 운영 지원
아키텍처
- https://kubesphere.io/docs/introduction/architecture/
- 클라우드 네이티브 어플리케이션이며 외부 시스템에서 사용할 수 있는 개방형 표준 REST API를 제공
- 어디에서나 실행 가능하고 모든 Kubernetes에 배포 가능
주요 이점
- https://kubesphere.io/docs/introduction/advantages/
- 클라우드 제공업체 전반의 클러스터 통합 관리
- 강력한 관찰 가능성
- 자동화된 DevOps
- 세분화된 액세스 제어
- 즉시 사용 가능한 마이크로서비스 거버넌스
- 활기찬 오픈 소스 커뮤니티
주요 기능
- https://kubesphere.io/docs/introduction/features/
- 엔터프라이즈 Kubernetes 전략에 필요한 가장 일반적인 기능
- Kubernetes 리소스 관리, DevOps(CI/CD), 어플리케이션 수명 주기 관리,
모니터링, 로깅, 서비스 메시, 멀티 테넌시, 경고 및 알림, 감사, 스토리지 및 네트워킹,
자동 크기 조정, 액세스 제어, GPU 지원, 다중 클러스터 배포 및 관리, 네트워크 정책,
레지스트리 관리, 보안 관리 - Kubernetes와 관련된 광범위한 주요 에코시스템 도구를 통합
- 클라우드 네이티브 앱에서 기본 컨테이너 런타임
- 표준 API를 통해 KubeSphere 콘솔과 상호 작용하는 KubeSphere의 백엔드 구성 요소 역할
- 일관된 사용자 경험을 제공 및 복잡성 감소
- 플러그인 가능하고 선택 사항이기 때문에 플랫폼과 느슨하게 결합
- Kubernetes 프로비저닝 및 유지 관리
- Kubernetes 클러스터 프로비저닝
- 쿠버네티스 리소스 관리
- 클러스터 업그레이드 및 확장
- 다중 클러스터 관리 및 배포
- 데브옵스 지원
- CI/CD 파이프라인
- Source-to-Image(S2I)
- Binary-to-Image(B2I)
- Istio 기반 서비스 메시
- 트래픽 관리
- Canary release
- Blue-green deployment
- Traffic mirroring
- Circuit breaker
- 시각화
- 분산 추적
- 트래픽 관리
- 멀티 테넌트 관리
- 멀티 테넌시
- 통합된 방식으로 역할 기반의 세분화된 인증과 3계층 권한 부여 시스템을 제공
- 통합 인증
- 기업의 경우 KubeSphere는 LDAP 또는 AD 프로토콜을 기반으로 하는 중앙 인증 시스템과 호환
- 테넌트 아이디의 통합 인증을 달성하기 위해 SSO(Single Sign-On)도 지원
- 권한 부여 시스템
- 클러스터, 워크스페이스 및 프로젝트의 세 가지 수준으로 구성
- 리소스 보안을 위해 여러 수준의 서로 다른 역할이 완전히 격리된 상태에서 리소스를 공유
- 멀티 테넌시
- 관찰 가능성
- 다차원 모니터링
- 운영 및 유지 관리의 전체 프로세스를 간소화하는 그래픽 인터페이스가 있는 자체 업데이트 모니터링 시스템을 제공
- 다양한 리소스에 대한 맞춤형 모니터링을 제공하며 발생하는 문제를 즉시 사용자에게 알릴 수 있는 일련의 경고를 포함
- 경고, 이벤트, 감사 및 알림
- 맞춤형 알림 정책 및 규칙
- 정확한 이벤트 추적
- 향상된 감사 보안
- 다양한 알림 방식
- 다차원 모니터링
- 로그 쿼리 및 수집
- 멀티테넌트 로그 관리
- 서로 다른 테넌트는 자신의 로그 정보만 출력
- 멀티 레벨 로그 쿼리
- 다양한 리소스와 관련된 로그 검색 가능
- 멀티 로그 수집기
- Elasticsearch, Kafka 및 Fluentd와 같은 로그 수집기를 선택 가능
- 온디스크 로그 수집
- 로그가 Pod 사이드카에 파일로 저장되는 어플리케이션 대응 가능
- 멀티테넌트 로그 관리
- 어플리케이션 관리 및 오케스트레이션
- 앱 스토어
- OpenPitrix 를 기반으로 하는 앱 스토어를 제공
- 앱 저장소
- 객체 스토리지(예: QingStor 또는 AWS S3 ) 또는 GitHub 에서 호스팅되는 앱 리포지토리 생성 가능
- 앱 리포지토리에 제출되는 앱 패키지는 앱의 Helm Chart 템플릿 파일로 구성
- 앱 템플릿
- 단 한 번의 클릭으로 앱 배포를 위한 시각화된 방법을 제공
- 수명 주기 관리
- 앱 스토어
- 멀티 스토리지 솔루션
- GlusterFS, CephRBD 및 NFS와 같은 오픈 소스 스토리지 솔루션 사용 가능
- 멀티 네트워크 솔루션
- Calico 및 Flannel과 같은 오픈 소스 네트워크 솔루션을 사용 가능
설치
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.4.0/kubesphere-installer.yaml
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.4.0/cluster-configuration.yaml
- 로그
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
삭제
https://github.com/kubesphere/ks-installer/blob/v3.4.0/scripts/kubesphere-delete.sh
멀티 테넌트 흐름
- 쿠버네티스 클러스터 등록
- 워크스페이스 생성 시 클러스터 선택
- 프로젝트 생성(쿠버네티스의 네임스페이스 생성)
- 어플리케이션 워크로드 설정
- 각 단계 별로 권한이 부여된 사용자 생성
- 플랫폼 권환
- Cluster Management
- Access Control
- App Management
- Platform Settings
- 워크스페이스 권환
- Project Management
- DevOps Project Management
- App Management
- Access Control
- Workspace Settings
- 프로젝트 권환
- Application Workloads
- Storage Management
- Configuration Management
- Monitoring & Alerting
- Access Control
- Project Settings
- 플랫폼 권환
클러스터 관리
- https://kubesphere.io/docs/cluster-administration/
- 노드 관리
- 클러스터 상태 모니터링
- 어플리케이션 리소스 모니터링
- 볼륨
- 경고와 알림
- Alertmanager
- Prometheus, kube-events, kube-auditing, … 등이 보낸 경고를 받아서 Notification Manager를 통해 알림
- Alertmanager
- 경고 정책
- 경고 메세지
- 클러스터 설정
- 하나의 클러스터를 여러 워크스페이스에 할당하거나 하나의 워크스페이스에 여러 클러스터 할당 가능
- 게이트웨이
- 클러스터 범위의 게이트웨이 제공
- 로그 수신기
- Elasticsearch, Kafka, Fluentd를 수신기로 추가하여 로그 수신 가능
멀티 클러스터 관리
- https://kubesphere.io/docs/multicluster-management/
- 어플리케이션과 해당 복제본을 퍼블릭 클라우드에서 온프레미스 환경까지 여러 클러스터에 배포할 수 있는 통합 컨트롤 플레인을 사용자에게 제공
- 중앙 집중식 모니터링, 로깅, 이벤트 및 감사 로그를 포함하여 여러 클러스터에서 풍부한 관찰 가능성 제공
- 중앙 제어 평면이 있는 호스트 클러스터와 멤버 클러스터로 구성
- 호스트 클러스터는 중앙 컨트롤 플레인을 사용하여 멤버 클러스터를 관리
- 호스트 클러스터와 멤버 클러스터들은 직접 연결 또는 에이전트 연결을 통해 통신
- 멤버 클러스터는 다른 클러스터의 리소스를 볼 수 없음
워크스페이스
- https://kubesphere.io/docs/workspace-administration/
- 프로젝트 및 DevOps 프로젝트를 구성하고 앱 템플릿 및 앱 리포지토리를 관리 하기 위한 논리적 단위
- 리소스 액세스를 제어하고 팀 내에서 안전한 방식으로 리소스를 공유할 수 있는 곳
- 멤버 및 역할 관리
- 네트워크 격리
- 기본적으로 인그레스 거부, 이그레스 허용
- 리소스 할당량 설정
- cpu, memory
- 부서 관리
- 앱 저장소
- 헬름 차트 업로드
- 앱 리포지토리
- 테스트 및 개발을 위한 자체 앱 저장소 제공
- 헬름 차트 업로드
프로젝트
- https://kubesphere.io/docs/project-user-guide/
- https://kubesphere.io/docs/project-administration/
- 쿠버네티스의 네임스페이스
- 리소스를 겹치지 않는 구룹으로 구성하는데 사용
- 여러 테넌트 간에 클러스터 리소스를 나눌 때 논리적 분할 기능
- 네트워크 격리
- 컨테이너 제한
- 프로젝트의 리소스 할당량만큼의 CPU, MEMORY 제한
- 쿠버네티스의 Limit Ranges를 이용하여 컨테이너의 리소스 조절
- 게이트웨이
- 프로젝트 범위의 게이트웨이 제공
- NGINX Ingress controller
- 로그 수집
- 운영팀이 통합되고 유연한 방식으로 로그를 수집, 관리, 분석할 수 있도록 여러 로그 수집 방법을 지원
- 어플리케이션
- 앱 템플릿
- 사용자가 헬름 차트 형식의 앱을 업로드, 제공 및 관리할 수 있는 방법
- 사용자가 시각화된 방식으로 앱을 배포 및 관리
- 앱 스토어
- 플랫폼의 공용 앱 저장소
- 마이크로서비스에 대해 하나의 앱으로 관리 가능
- 앱 템플릿
- 어플리케이션 워크로드
- Deployments
- StatefulSets
- DaemonSets
- Services
- Jobs
- CronJobs
- Routes
- Pod Settings
- HPA(Horizontal Pod Autoscaling)
- 볼륨 관리
- 볼륨
- 스냅샷
- Configuration
- Secrets
- ConfigMaps
- Image Registries
- Service Accounts
- 그레이스케일 릴리스
- 어플리케이션 배포 시 원활한 전환을 보장하는 릴리스 방법
- 블루-그린 배포
- 다운타임이 없는 배포
- 이전 버전과 신규 버전을 모두 유지한채 신규 버전으로 라우팅
- 문제 발생 시 즉시 이전 버전으로 롤백
- 카나리 릴리스
- 트래픽 양을 이전 버전에서 신규 버전으로 점진적으로 늘려가는 방식
- 영향을 받는 사용자를 국한 시킬 수 있음
- 서비스의 성능과 안정성을 테스트하는 효율적인 방법
- 전체 시스템 안정성에 영향을 미치지 않으면서 실제 환경에서 잠재적인 문제 감지
- 트래픽 미러링
- 트래픽을 복사하여 미러링된 서비스로 전송
- Image Builder
- Source-to-Image(S2I)
- 소스 코드에서 재현 가능한 컨테이너 이미지를 빌드하기 위한 툴킷 및 워크플로우
- 소스 코드를 컨테이너 이미지에 주입하고 컨테이너가 실행을 위해 해당 소스 코드를 준비하도록 하여 바로 실행할 수 있는 이미지를 생성
- 이미지를 자동으로 빌드하고 Dockerfile 없이 Kubernetes에 게시
- Binary-to-Image(B2I)
- Jar, War 및 바이너리 패키지와 같은 바이너리 실행 파일에서 재현 가능한 컨테이너 이미지를 빌드하기 위한 툴킷 및 워크플로우
- S2I Templates
- 프로젝트를 기반으로 Image Builder 템플릿을 사용자 지정하여 S2I 기능 확장 가능
- Webhooks
- 코드 저장소에 관련 활동이 있을 때 Image Builder가 자동으로 트리거 되도록 웹훅 구성 가능
- Source-to-Image(S2I)
- Alerting
- 경고 정책
- 경고 메세지
- 경고 정책
- Custom Application Monitoring
- 사용자 어플리케이션의 메트릭을 모니터링하고 시각화 가능
DevOps
- https://kubesphere.io/docs/devops-user-guide/
- Kubernetes 클러스터에서 CI/CD 작업 및 관련 워크로드를 배포하고 관리
- 기능
- 액세스 제어가 있는 CI/CD 파이프라인을 위한 독립 DevOps 프로젝트
- 복잡한 Jenkins 구성 없이 즉시 사용 가능한 DevOps 기능
- 빠른 이미지 전달을 위한 Source-to-Image(S2I) 및 Binary-to-Image(B2I)
- 여러 코드 저장소를 지원하는 일관된 사용자 경험을 위한 Jenkinsfile 기반 파이프라인
- 학습 곡선이 낮은 파이프라인을 생성하기 위한 그래픽 편집 패널
- 코드 품질 검사를 위한 SonarQube 와 같은 강력한 도구 통합 메커니즘
액세스 제어 및 계정 관리
- https://kubesphere.io/docs/access-control-and-account-management/
- 멀티테넌시
- 과제
- 테넌트 별 리소스와 데이터의 논리적 혹은 물리적 혹은 논리적/물리적인 격리
- 테넌트 별 감사 로그
- 과제
- 워크스페이스
- 가장 작은 테넌트 단위
- 워크스페이스를 통해 사용자는 클러스터 및 프로젝트 간에 리소스 공유
- 사용자를 플랫폼 관리자로 지정하여 클러스터를 관리하거나 워크스페이스에 추가하여 프로젝트에 협력
- 논리적 격리
- Kubernetes와 유사하게 RBAC를 사용하여 사용자에게 부여된 권한을 관리
- 네트워크 격리
- 워크스페이스 및 프로젝트에 대한 네트워크 격리 가능
앱 스토어
- https://kubesphere.io/docs/application-store/
- 멀티 클라우드 어플리케이션 관리 플랫폼인 OpenPitrix로 구동
- 사용자에게 엔터프라이즈급 컨테이너화된 솔루션을 제공
- 앱 템플릿을 통해 자체 앱 업로드 가능
- 테넌트가 원하는 앱을 선택할 수 있도록 어플리케이션 도구 역할을 하는 앱 리포지토리를 추가 가능
- 어플리케이션 수명 주기 관리
- 두가지 종류의 어플리케이션 배포 지원
- Template-Based Apps
- Composed Apps
- 두가지 종류의 어플리케이션 배포 지원
- 릴리즈
- 업그레이드
- 업로드한 버전에 대해 위의 릴리즈 과정 수행
Toolbox
- https://kubesphere.io/docs/toolbox/
- 로그 쿼리
- 테넌트의 관점에서 사용자에게 로그 수집, 쿼리 및 관리 기능을 제공하는 강력하고 사용하기 쉬운 로깅 시스템을 제공
- 테넌트 기반 로깅 시스템은 다른 테넌트가 자신의 로그만 볼 수 있기 때문에 Kibana보다 훨씬 더 유용하므로 보안이 향상
- 일부 중복 정보를 필터링하여 테넌트가 자신에게 유용한 로그에만 집중하게 만듬
- Kibana에 비해 아직까지는 자동완성 기능은 조금 부족해보임
- 이벤트 쿼리
- 클러스터 내부에서 일어나는 일에 대한 통찰력을 제공
- 감사
- 감사 로그
- 개별 사용자, 관리자 또는 시스템의 기타 구성요소에 의해 시스템에 영향을 준 활동의 순서를 문서화하는 보안 관련 시간순 기록 세트를 제공
- KubeSphere에 대한 각 요청은 웹훅에 기록되고 특정 규칙에 따라 처리되는 이벤트를 생성
- 이벤트는 무시되거나 저장되거나 다른 규칙에 따라 경고를 생성
- 감사 로그
- 측정 및 청구
- 클러스터 또는 워크스페이스의 세분화된 수준에서 리소스 소비를 추적
- 자원 소비 통계
- Web Kubectl
- 웹에서 kubectl 명령어 사용 가능