8장. OpenShift와 통합
8.1. OpenShift API를 사용하여 작업 공간 관리
조직의 OpenShift 클러스터에서 OpenShift Dev Spaces 작업 공간은 동일한 이름의 DevWorkspace
사용자 정의 리소스로 표시됩니다. 결과적으로 OpenShift Dev Spaces 대시보드에 my-workspace
라는 작업 공간이 있는 경우 클러스터의 사용자 프로젝트에 my-workspace
라는 해당 DevWorkspace
사용자 지정 리소스가 있습니다.
클러스터의 각 DevWorkspace
사용자 지정 리소스는 OpenShift Dev Spaces 작업 공간을 나타내기 때문에 명령줄 oc
와 같은 클라이언트와 OpenShift API를 사용하여 OpenShift Dev Spaces 작업 공간을 관리할 수 있습니다.
각 DevWorkspace
사용자 정의 리소스에는 작업 공간에 복제된 Git 리포지토리의 devfile에서 파생된 세부 정보가 포함되어 있습니다. 예를 들어 devfile은 devfile 명령 및 작업 공간 컨테이너 구성을 제공할 수 있습니다.
8.1.1. 모든 작업 공간 나열
사용자는 명령줄을 사용하여 작업 영역을 나열할 수 있습니다.
사전 요구 사항
-
클러스터의 프로젝트에서
DevWorkspace
리소스를가져올 수
있는 권한이 있는 활성oc
세션입니다. CLI 시작하기를 참조하십시오. 클러스터에서 관련 OpenShift Dev Spaces 사용자 네임스페이스를 알고 있습니다.
작은 정보https:// <openshift_dev_spaces_fqdn> /api/kubernetes/namespace를
방문하여 OpenShift Dev Spaces 사용자 네임스페이스를이름으로
가져올 수 있습니다.클러스터의 OpenShift Dev Spaces 사용자 네임스페이스에 있습니다.
작은 정보OpenShift에서 명령줄
oc
툴을 사용하여 현재 네임스페이스를 표시하거나 네임스페이스로 전환할 수 있습니다.
절차
작업 영역을 나열하려면 명령줄에 다음을 입력합니다.
$ oc get devworkspaces
예 8.1. 출력 결과
NAMESPACE NAME DEVWORKSPACE ID PHASE INFO user1-dev spring-petclinic workspace6d99e9ffb9784491 Running https://url-to-workspace.com user1-dev golang-example workspacedf64e4a492cd4701 Stopped Stopped user1-dev python-hello-world workspace69c26884bbc141f2 Failed Container tooling has state CrashLoopBackOff
이 명령에 --watch
플래그를 추가하여 PHASE 변경 사항을 라이브로 볼 수 있습니다.
클러스터에 대한 관리자 권한이 있는 사용자는 --all-namespaces
플래그를 포함하여 모든 OpenShift Dev Spaces 사용자의 모든 작업 공간을 나열할 수 있습니다.
8.1.2. 작업 공간 생성
사용 사례에서 OpenShift Dev Spaces 대시보드 사용을 허용하지 않는 경우 클러스터에 사용자 정의 리소스를 적용하여 OpenShift API로 작업 공간을 생성할 수 있습니다.
OpenShift Dev Spaces 대시보드를 통해 작업 공간을 생성하면 명령줄 사용과 비교하여 사용자 환경 및 구성 이점이 향상됩니다.
- 사용자는 자동으로 클러스터에 로그인됩니다.
- OpenShift 클라이언트가 자동으로 작동합니다.
-
OpenShift Dev Spaces 및 해당 구성 요소는 대상 Git 리포지토리의 devfile을 클러스터의
DevWorkspace
및DevWorkspaceTemplate
사용자 정의 리소스로 자동으로 변환합니다. -
작업 공간에 대한 액세스는 기본적으로 작업 공간의
DevWorkspace
에서routingClass: che
를 사용하여 보호됩니다. -
DevWorkspaceOperatorConfig
구성에 대한 인식은 OpenShift Dev Spaces에서 관리합니다. CheCluster
사용자 정의 리소스에 지정된spec.devEnvironments
의 구성 인식은 다음을 포함합니다.-
영구 스토리지 전략은
devEnvironments.storage
를 사용하여 지정합니다. -
기본 IDE는
devEnvironments.defaultEditor
로 지정됩니다. -
기본 플러그인은
devEnvironments.defaultPlugins
로 지정됩니다. -
컨테이너 빌드 구성은
devEnvironments.containerBuildConfiguration
을 사용하여 지정됩니다.
-
영구 스토리지 전략은
사전 요구 사항
-
클러스터의 프로젝트에서
DevWorkspace
리소스를 생성할 수 있는 권한이 있는 활성oc
세션입니다. CLI 시작하기를 참조하십시오. 클러스터에서 관련 OpenShift Dev Spaces 사용자 네임스페이스를 알고 있습니다.
작은 정보https:// <openshift_dev_spaces_fqdn> /api/kubernetes/namespace를
방문하여 OpenShift Dev Spaces 사용자 네임스페이스를이름으로
가져올 수 있습니다.클러스터의 OpenShift Dev Spaces 사용자 네임스페이스에 있습니다.
작은 정보OpenShift에서 명령줄
oc
툴을 사용하여 현재 네임스페이스를 표시하거나 네임스페이스로 전환할 수 있습니다.참고다른 사용자를 위한 작업 공간을 생성하려는 OpenShift Dev Spaces 관리자는 OpenShift Dev Spaces 또는 관리자가 프로비저닝한 사용자 네임스페이스에
DevWorkspace
사용자 정의 리소스를 생성해야 합니다. https://access.redhat.com/documentation/en-us/red_hat_openshift_dev_spaces/3.19/html-single/administration_guide/index#administration-guide:configuring-namespace-provisioning 을 참조하십시오.
절차
DevWorkspace
사용자 정의 리소스를 준비하려면 대상 Git 리포지토리의 devfile 내용을 복사합니다.예 8.2.
schemaVersion을 사용하여 devfile 콘텐츠 복사: 2.2.0
components: - name: tooling-container container: image: quay.io/devfile/universal-developer-image:ubi8-latest
작은 정보자세한 내용은 devfile v2 문서를 참조하십시오.
이전 단계의 devfile 콘텐츠를
spec.template
필드 아래에 붙여넣는DevWorkspace
사용자 정의 리소스를 생성합니다.예 8.3.
DevWorkspace
사용자 정의 리소스kind: DevWorkspace apiVersion: workspace.devfile.io/v1alpha2 metadata: name: my-devworkspace1 namespace: user1-dev2 spec: routingClass: che started: true3 contributions:4 - name: ide uri: http://devspaces-dashboard.openshift-devspaces.svc.cluster.local:8080/dashboard/api/editors/devfile?che-editor=che-incubator/che-code/latest template: projects:5 - name: my-project-name git: remotes: origin: https://github.com/eclipse-che/che-docs components:6 - name: tooling-container container: image: quay.io/devfile/universal-developer-image:ubi8-latest
-
DevWorkspace
사용자 정의 리소스를 클러스터에 적용합니다.
검증
DevWorkspace
의 PHASE 상태를 확인하여 작업 공간이 시작되었는지 확인합니다.$ oc get devworkspaces -n <user_project> --watch
예 8.4. 출력 결과
NAMESPACE NAME DEVWORKSPACE ID PHASE INFO user1-dev my-devworkspace workspacedf64e4a492cd4701 Starting Waiting for workspace deployment
작업 공간이 성공적으로 시작되면
oc get devworkspaces
명령의 출력에서 PHASE 상태가 Running 으로 변경됩니다.예 8.5. 출력 결과
NAMESPACE NAME DEVWORKSPACE ID PHASE INFO user1-dev my-devworkspace workspacedf64e4a492cd4701 Running https://url-to-workspace.com
그런 다음 다음 옵션 중 하나를 사용하여 작업 영역을 열 수 있습니다.
-
oc get devworkspaces
명령 출력의 INFO 섹션에 제공된 URL을 방문합니다. - OpenShift Dev Spaces 대시보드에서 작업 공간을 엽니다.
-
8.1.3. 작업 공간 중지
Devworkspace
사용자 정의 리소스의 spec.started
필드를 false
로 설정하여 작업 공간을 중지할 수 있습니다.
사전 요구 사항
-
클러스터의 활성
oc
세션입니다. CLI 시작하기를 참조하십시오. 작업 공간 이름을 알고 있습니다.
작은 정보$ oc get devworkspaces
출력에서 관련 작업 공간 이름을 찾을 수 있습니다.클러스터에서 관련 OpenShift Dev Spaces 사용자 네임스페이스를 알고 있습니다.
작은 정보https:// <openshift_dev_spaces_fqdn> /api/kubernetes/namespace를
방문하여 OpenShift Dev Spaces 사용자 네임스페이스를이름으로
가져올 수 있습니다.클러스터의 OpenShift Dev Spaces 사용자 네임스페이스에 있습니다.
작은 정보OpenShift에서 명령줄
oc
툴을 사용하여 현재 네임스페이스를 표시하거나 네임스페이스로 전환할 수 있습니다.
절차
다음 명령을 실행하여 작업 공간을 중지합니다.
$ oc patch devworkspace <workspace_name> \ -p '{"spec":{"started":false}}' \ --type=merge -n <user_namespace> && \ oc wait --for=jsonpath='{.status.phase}'=Stopped \ dw/<workspace_name> -n <user_namespace>
8.1.4. 중지된 작업 공간 시작
Devworkspace
사용자 정의 리소스에서 spec.started
필드를 true
로 설정하여 중지된 작업 공간을 시작할 수 있습니다.
사전 요구 사항
-
클러스터의 활성
oc
세션입니다. CLI 시작하기를 참조하십시오. 작업 공간 이름을 알고 있습니다.
작은 정보$ oc get devworkspaces
출력에서 관련 작업 공간 이름을 찾을 수 있습니다.클러스터에서 관련 OpenShift Dev Spaces 사용자 네임스페이스를 알고 있습니다.
작은 정보https:// <openshift_dev_spaces_fqdn> /api/kubernetes/namespace를
방문하여 OpenShift Dev Spaces 사용자 네임스페이스를이름으로
가져올 수 있습니다.클러스터의 OpenShift Dev Spaces 사용자 네임스페이스에 있습니다.
작은 정보OpenShift에서 명령줄
oc
툴을 사용하여 현재 네임스페이스를 표시하거나 네임스페이스로 전환할 수 있습니다.
절차
다음 명령을 실행하여 중지된 작업 영역을 시작합니다.
$ oc patch devworkspace <workspace_name> \ -p '{"spec":{"started":true}}' \ --type=merge -n <user_namespace> && \ oc wait --for=jsonpath='{.status.phase}'=Running \ dw/<workspace_name> -n <user_namespace>
8.1.5. 작업 공간 제거
DevWorkspace
사용자 정의 리소스를 간단히 삭제하여 작업 공간을 제거할 수 있습니다.
DevWorkspace
사용자 정의 리소스를 삭제하면 OpenShift Dev Spaces에서 생성한 경우 다른 작업 공간 리소스도 삭제됩니다(예: 참조된 DevWorkspaceTemplate
및 per-workspace PersistentVolumeClaims
).
가능한 경우 OpenShift Dev Spaces 대시보드를 사용하여 작업 공간을 제거합니다.
사전 요구 사항
-
클러스터의 활성
oc
세션입니다. CLI 시작하기를 참조하십시오. 작업 공간 이름을 알고 있습니다.
작은 정보$ oc get devworkspaces
출력에서 관련 작업 공간 이름을 찾을 수 있습니다.클러스터에서 관련 OpenShift Dev Spaces 사용자 네임스페이스를 알고 있습니다.
작은 정보https:// <openshift_dev_spaces_fqdn> /api/kubernetes/namespace를
방문하여 OpenShift Dev Spaces 사용자 네임스페이스를이름으로
가져올 수 있습니다.클러스터의 OpenShift Dev Spaces 사용자 네임스페이스에 있습니다.
작은 정보OpenShift에서 명령줄
oc
툴을 사용하여 현재 네임스페이스를 표시하거나 네임스페이스로 전환할 수 있습니다.
절차
다음 명령을 실행하여 작업 공간을 제거합니다.
$ oc delete devworkspace <workspace_name> -n <user_namespace>