3.3. 아키텍처


그림 3.1. Dev Workspace Operator를 사용한 고급 OpenShift Dev Spaces 아키텍처

OpenShift Dev Spaces는 세 가지 구성 요소 그룹에서 실행됩니다.

OpenShift Dev Spaces 서버 구성 요소
사용자 프로젝트 및 작업 공간을 관리합니다. 기본 구성 요소는 사용자가 작업 공간을 제어하는 사용자 대시보드입니다.
dev Workspace Operator
사용자 작업 영역을 실행하는 데 필요한 OpenShift 오브젝트를 생성하고 제어합니다. Pod,서비스PersistentVolume을 포함합니다.
사용자 작업 공간
컨테이너 기반 개발 환경인 IDE가 포함되어 있습니다.

이러한 OpenShift 기능의 역할은 핵심입니다.

dev Workspace 사용자 정의 리소스
유효한 OpenShift 오브젝트는 사용자 작업 공간을 나타내며 OpenShift Dev Spaces에서 조작합니다. 구성 요소의 세 그룹에 대한 통신 채널입니다.
OpenShift 역할 기반 액세스 제어(RBAC)
모든 리소스에 대한 액세스를 제어합니다.

3.3.1. 서버 구성 요소

OpenShift Dev Spaces 서버 구성 요소는 멀티 테넌시 및 작업 공간 관리를 보장합니다.

그림 3.2. OpenShift Dev Spaces 서버 구성 요소는 Dev Workspace Operator와 상호 작용

3.3.1.1. dev Spaces Operator

OpenShift Dev Spaces Operator는 OpenShift Dev Spaces 서버 구성 요소의 전체 라이프사이클 관리를 보장합니다. 도입할 수 있습니다.

CheCluster CRD(사용자 정의 리소스 정의)
CheCluster OpenShift 오브젝트를 정의합니다.
OpenShift Dev Spaces 컨트롤러
포드, 서비스, 영구 볼륨과 같은 OpenShift Dev Spaces 인스턴스를 실행하는 데 필요한 OpenShift 오브젝트를 생성하고 제어합니다.
CheCluster CR(사용자 정의 리소스)

OpenShift Dev Spaces Operator가 있는 클러스터에서 CheCluster CR(사용자 정의 리소스)을 생성할 수 있습니다. OpenShift Dev Spaces Operator는 이 OpenShift Dev Spaces 인스턴스에서 OpenShift Dev Spaces 서버 구성 요소의 전체 라이프사이클 관리를 보장합니다.

3.3.1.2. dev Workspace Operator

Dev Workspace Operator (DWO)는 OpenShift Dev Spaces의 종속성이며 OpenShift Dev Spaces의 기능 중 일부입니다. DWO의 주요 역할 중 하나는 Dev Workspace CR(사용자 정의 리소스)을 조정하는 것입니다.

Dev Workspace CR은 OpenShift Dev Spaces 작업 공간을 보여주는 OpenShift 리소스입니다. 사용자가 백그라운드에서 OpenShift Dev Spaces를 사용하여 작업 공간을 생성할 때마다 Dashboard OpenShift Dev Spaces는 클러스터에 Dev Workspace CR을 생성합니다. 모든 OpenShift Dev Spaces 작업 공간에는 클러스터에 기본 Dev Workspace CR이 있습니다.

그림 1은 클러스터에 Dev Workspace CR의 예를 보여줍니다.

그림 3.3. 클러스터의 Dev Workspace CR 예

devfile을 사용하여 OpenShift Dev Spaces로 작업 공간을 생성할 때 Dev Workspace CR에 devfile 세부 정보가 포함됩니다. 또한 OpenShift Dev Spaces는 작업 공간에 대해 선택한 편집기에 따라 편집기 정의를 Dev Workspace CR에 추가합니다. OpenShift Dev Spaces는 Dev Workspace에 특성을 추가하여 CheCluster CR을 구성하는 방법에 따라 작업 공간을 추가로 구성합니다.

DevWorkspaceTemplate 은 Dev Workspaces에 재사용 가능한 spec.template 을 정의하는 사용자 정의 리소스입니다.

작업 공간이 시작되면 DWO에서 해당 Dev Workspace CR을 읽고 배포, 보안, configmaps와 같은 필요한 리소스를 생성합니다. 따라서 결국 devfile에 정의된 개발 환경을 나타내는 작업 공간 Pod가 생성됩니다.

사용자 정의 리소스 개요

다음 사용자 정의 리소스 정의는 Dev Workspace Operator에서 제공합니다.

  • dev Workspace
  • DevWorkspaceTemplate
  • DevWorkspaceOperatorConfig
  • DevWorkspaceRouting

dev Workspace

Dev Workspace 사용자 지정 리소스에는 OpenShift Dev Spaces 작업 공간에 대한 세부 정보가 포함되어 있습니다. 특히 devfile 세부 정보와 편집기 정의에 대한 참조가 포함되어 있습니다.

DevWorkspaceTemplate

OpenShift Dev Spaces에서 DevWorkspaceTemplate 사용자 지정 리소스는 일반적으로 OpenShift Dev Spaces 작업 공간에 대한 편집기(예: Visual Studio Code - 오픈 소스)를 정의하는 데 사용됩니다. 이 사용자 지정 리소스를 사용하여 여러 Dev Workspace에서 재사용할 수 있는 재사용 가능한 spec.template 콘텐츠를 정의할 수 있습니다.

DevWorkspaceOperatorConfig

DevWorkspaceOperatorConfig (DWOC) 사용자 정의 리소스는 DWO의 구성 옵션을 정의합니다. DWOC에는 두 가지 유형이 있습니다.

  • 글로벌 구성
  • 글로벌 외 구성

글로벌 구성은 devworkspace-operator-config 라는 DWOC 사용자 지정 리소스이며 일반적으로 DWO 설치 네임스페이스에 있습니다. 기본적으로 글로벌 구성은 설치 시 생성되지 않습니다. 글로벌 구성에 설정된 구성 필드는 DWO 및 모든 Dev Workspaces에 적용됩니다. 그러나 DWOC 구성은 글로벌이 아닌 구성으로 재정의할 수 있습니다.

devworkspace-operator-config 이외의 다른 DWOC 사용자 지정 리소스는 글로벌이 아닌 구성으로 간주됩니다. Dev Workspace에 DWOC에 대한 참조가 포함되지 않는 한 글로벌 외 구성은 모든 Dev Workspace에 적용되지 않습니다. 글로벌 구성 및 비 글로벌 구성의 필드가 동일한 경우 글로벌 구성 필드가 우선합니다.

Expand
표 3.1. 글로벌 DWOC 및 OpenShift Dev Spaces 소유 DWOC 비교
 글로벌 DWOCOpenShift Dev Spaces 소유 DWOC

리소스 이름

devworkspace-operator-config

devworkspace-config

네임스페이스

DWO 설치 네임스페이스

OpenShift Dev Spaces 설치 네임스페이스

기본 생성

DWO 설치 시 기본적으로 생성되지 않음

OpenShift Dev Spaces 설치에서 기본적으로 생성됨

범위

DWO 자체 및 DWO에서 관리하는 모든 Dev Workspace에 적용됩니다.

OpenShift Dev Spaces에서 생성한 Dev Workspace에 적용됩니다.

우선순위

OpenShift Dev Spaces 소유 구성에 설정된 필드로 재정의

둘 다 동일한 필드를 정의하는 경우 글로벌 구성보다 우선합니다.

기본 사용 사례

일반적으로 DWO에 적용되는 기본 광범위한 설정을 정의하는 데 사용됩니다.

OpenShift Dev Spaces에서 생성한 Dev Workspace에 대한 특정 구성을 정의하는 데 사용됩니다.

예를 들어 기본적으로 OpenShift Dev Spaces는 devworkspace-config 라는 OpenShift Dev Spaces 네임스페이스에서 글로벌 DWOC를 생성하고 관리합니다. 이 DWOC에는 OpenShift Dev Spaces 작업 공간에 고유한 구성이 포함되어 있으며 CheCluster CR 구성 방법에 따라 OpenShift Dev Spaces에서 유지 관리합니다. OpenShift Dev Spaces가 작업 영역을 생성할 때 OpenShift Dev Spaces는 controller.devfile.io/devworkspace-config 특성을 사용하여 OpenShift Dev Spaces 소유 DWOC에 대한 참조를 추가합니다.

그림 3.4. Dev Workspace 구성 속성의 예

DevWorkspaceRouting

DevWorkspaceRouting 사용자 정의 리소스는 Dev Workspace의 끝점에 대한 세부 정보를 정의합니다. 모든 Dev Workspace에는 작업 공간의 컨테이너 엔드포인트를 지정하는 해당 DevWorkspaceRouting 오브젝트가 있습니다. devfile에서 정의하고 편집기 정의로 정의된 끝점은 DevWorkspaceRouting 사용자 정의 리소스에 표시됩니다.

apiVersion: controller.devfile.io/v1alpha1
kind: DevWorkspaceRouting
metadata:
  annotations:
    controller.devfile.io/devworkspace-started: 'false'
  name: routing-workspaceb14aa33254674065
  labels:
    controller.devfile.io/devworkspace_id: workspaceb14aa33254674065
spec:
  devworkspaceId: workspaceb14aa33254674065
  endpoints:
    universal-developer-image:
      - attributes:
          cookiesAuthEnabled: true
          discoverable: false
          type: main
          urlRewriteSupported: true
        exposure: public
        name: che-code
        protocol: https
        secure: true
        targetPort: 3100
  podSelector:
    controller.devfile.io/devworkspace_id: workspaceb14aa33254674065
  routingClass: che
status:
  exposedEndpoints:
    ...
Copy to Clipboard Toggle word wrap
3.3.1.2.1. dev Workspace Operator의 피연산자

Dev Workspace Operator에는 두 가지 피연산자가 있습니다.

  • 컨트롤러 배포
  • Webhook 배포.
$ oc get pods -l 'app.kubernetes.io/part-of=devworkspace-operator' -o custom-columns=NAME:.metadata.name -n openshift-operators
NAME
devworkspace-controller-manager-66c6f674f5-l7rhj 
1

devworkspace-webhook-server-d4958d9cd-gh7vr 
2

devworkspace-webhook-server-d4958d9cd-rfvj6 
3
Copy to Clipboard Toggle word wrap
1
사용자 정의 리소스 조정을 담당하는 Dev Workspace 컨트롤러 Pod
2 3
Dev Workspace Operator 웹 후크 서버 Pod

Dev Workspace-controller-manager 배포 구성

Dev Workspace Operator Subscription 오브젝트에서 devworkspace-controller-manager Pod를 구성할 수 있습니다.

apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: devworkspace-operator
  namespace: openshift-operators
spec:
  config:
    affinity:
      nodeAffinity: ...
      podAffinity: ...
    resources:
      limits:
        memory: ...
        cpu: ...
      requests:
        memory: ...
        cpu: ...
Copy to Clipboard Toggle word wrap

문서 의 구성에 대해 자세히 알아보십시오.

Dev Workspace-webhook-server 배포 구성

글로벌 DWOC에서 devworkspace-webhook-server 배포를 구성할 수 있습니다.

apiVersion: controller.devfile.io/v1alpha1
kind: DevWorkspaceOperatorConfig
metadata:
  name: devworkspace-operator-config
  namespace: <DWO install namespace>
config:
  webhooks:
    nodeSelector: <map[string]string>
    replicas: <int>
    tolerations: <[]corev1.Toleration>
Copy to Clipboard Toggle word wrap

3.3.1.3. 게이트웨이

추가 리소스

OpenShift Dev Spaces 게이트웨이에는 다음과 같은 역할이 있습니다.

  • 라우팅 요청. trle fik를 사용합니다.
  • OpenID Connect(OIDC)로 사용자 인증. OpenShift OAuth2 프록시 를 사용합니다.
  • OpenShift Dev Spaces 리소스에 대한 액세스를 제어하는 OpenShift 역할 기반 액세스 제어(RBAC) 정책을 적용합니다. 'kube-rbac-proxy' 를 사용합니다.

OpenShift Dev Spaces Operator는 이를 che-gateway 배포로 관리합니다.

다음에 대한 액세스를 제어합니다.

그림 3.5. OpenShift Dev Spaces 게이트웨이와 다른 구성 요소 간의 상호 작용

3.3.1.4. 사용자 대시보드

사용자 대시보드는 Red Hat OpenShift Dev Spaces의 방문 페이지입니다. OpenShift Dev Spaces 사용자는 사용자 대시보드를 검색하여 작업 공간에 액세스하고 관리합니다. 이는 React 애플리케이션입니다. OpenShift Dev Spaces 배포는 devspaces-dashboard Deployment에서 시작합니다.

액세스할 수 있어야 합니다.

그림 3.6. 다른 구성 요소와 사용자 대시보드 상호 작용

사용자가 사용자 대시보드를 요청하여 작업 영역을 시작할 때 사용자 대시보드는 이러한 작업 시퀀스를 실행합니다.

  1. 리포지토리 URL을 3.3.1.5절. “dev Spaces 서버” 로 전송하고 사용자가 원격 devfile에서 작업 공간을 생성할 때 반환되는 devfile이 필요합니다.
  2. 작업 공간을 설명하는 devfile을 읽습니다.
  3. 3.3.1.6절. “플러그인 레지스트리” 에서 추가 메타데이터를 수집합니다.
  4. 정보를 Dev Workspace 사용자 정의 리소스로 변환합니다.
  5. OpenShift API를 사용하여 사용자 프로젝트에서 Dev Workspace 사용자 지정 리소스를 생성합니다.
  6. Dev Workspace 사용자 정의 리소스 상태를 감시합니다.
  7. 사용자를 실행 중인 작업 공간 IDE로 리디렉션합니다.

3.3.1.5. dev Spaces 서버

추가 리소스

OpenShift Dev Spaces 서버 주요 기능은 다음과 같습니다.

  • 사용자 네임스페이스 생성.
  • 필수 보안 및 구성 맵을 사용하여 사용자 네임스페이스를 프로비저닝합니다.
  • Git 서비스 공급자와 통합하여 devfile 및 인증을 가져오고 검증합니다.

OpenShift Dev Spaces 서버는 HTTP REST API를 노출하는 Java 웹 서비스이며 다음에 액세스해야 합니다.

  • Git 서비스 공급자
  • OpenShift API

그림 3.7. OpenShift Dev Spaces 다른 구성 요소와의 서버 상호 작용

3.3.1.6. 플러그인 레지스트리

각 OpenShift Dev Spaces 작업 공간은 특정 편집기와 관련 확장 세트로 시작됩니다. OpenShift Dev Spaces 플러그인 레지스트리는 사용 가능한 편집기 및 편집기 확장 목록을 제공합니다. Devfile v2는 각 편집기 또는 확장을 설명합니다.

3.3.1.4절. “사용자 대시보드” 에서 레지스트리 콘텐츠를 읽고 있습니다.

그림 3.8. 다른 구성 요소와의 플러그인 레지스트리 상호 작용

3.3.2. 사용자 작업 공간

그림 3.9. 다른 구성 요소와의 사용자 작업 공간 상호 작용

사용자 작업 영역은 컨테이너에서 실행되는 웹 IDE입니다.

사용자 작업 공간은 웹 애플리케이션입니다. 브라우저에서 실행되는 최신 IDE의 모든 서비스를 제공하는 컨테이너에서 실행되는 마이크로 서비스로 구성됩니다.

  • 편집기
  • 언어 자동 완료
  • 언어 서버
  • 디버깅 툴
  • 플러그인
  • 애플리케이션 런타임

작업 공간은 작업 공간 컨테이너 및 활성화된 플러그인과 관련 OpenShift 구성 요소를 포함하는 하나의 OpenShift Deployment입니다.

  • 컨테이너
  • ConfigMaps
  • 서비스
  • 끝점
  • 인그레스 또는 경로
  • 보안
  • 영구 볼륨(PV)

OpenShift Dev Spaces 작업 공간에는 프로젝트의 소스 코드가 포함되어 있으며 OpenShift PV(영구 볼륨)에 유지됩니다. 마이크로 서비스에는 이 공유 디렉터리에 대한 읽기/쓰기 액세스 권한이 있습니다.

devfile v2 형식을 사용하여 OpenShift Dev Spaces 작업 공간의 툴 및 런타임 애플리케이션을 지정합니다.

다음 다이어그램에서는 OpenShift Dev Spaces 작업 공간 및 해당 구성 요소를 실행하는 방법을 보여줍니다.

그림 3.10. OpenShift Dev Spaces 작업 공간 구성 요소

다이어그램에는 실행 중인 작업 공간이 하나씩 있습니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat