Updated:

7 minute read

개요

  • https://kubesphere.io/
  • 멀티 테넌트 Kubernetes 컨테이너 플랫폼
  • Kubernetes를 커널로 사용하는 어플리케이션 관리를 위한 클라우드 네이티브 분산 운영 체제
  • 풀 스택 자동화 IT 운영과 간소화된 DevOps 워크플로우 지원
  • 플러그 앤 플레이 아키텍처를 제공하여 타사 어플리케이션을 해당 에코시스템에 원활하게 통합 가능
  • 인프라팀
    • 클라우드에서 데이터센터로 자동 설치, 확장 및 업그레이드
    • 리소스 활용도 향상 및 내부 인프라 비용 절감
    • 보안 강화를 제공
    • 여러 스토리지 및 네트워크 솔루션을 지원
    • Kubernetes 플랫폼 및 배포 제공
    • 다중 클라우드 및 다중 클러스터 Kubernetes 관리 지원
    • 공급업체 종속 방지
  • 개발팀
    • 모든 어플리케이션 환경에 맞는 툴킷 및 배포 자동화 제공
    • 소스 코드에서 재현 가능한 이미지를 빌드하기 위한 즉시 사용 가능한 툴킷을 제공
  • 운영팀
    • 원스톱 엔터프라이즈급 DevOps 프레임워크 구축
    • 인프라에서 어플리케이션에 이르기까지 중앙 집중식 로그 수집, 모니터링, 경고, 이벤트 및 감사 로그 제공
    • 지속적인 배포, 테스트, 릴리스, 업그레이드 및 확장의 간소화된 프로세스
  • 사용자
    • 투명한 기본 인프라를 위해 한 번의 클릭으로 앱 배포 및 업그레이드
    • 온디맨드 컨테이너 리소스 및 HPA(Horizontal Pod Autoscaling)를 제공하여 어플리케이션의 안정성과 유연성을 강화
    • Helm 리포지토리를 가져와 어플리케이션을 시각적으로 배포 및 업그레이드
    • 어플리케이션 측정 및 청구를 포함한 어플리케이션 스토어 운영 지원


아키텍처


주요 이점

  • 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를 통해 알림
  • 경고 정책
  • 경고 메세지
  • 클러스터 설정
    • 하나의 클러스터를 여러 워크스페이스에 할당하거나 하나의 워크스페이스에 여러 클러스터 할당 가능
    • 게이트웨이
      • 클러스터 범위의 게이트웨이 제공
    • 로그 수신기
      • 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가 자동으로 트리거 되도록 웹훅 구성 가능
  • 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 명령어 사용 가능