사용자 가이드


Red Hat OpenShift Dev Spaces 3.18

Red Hat OpenShift Dev Spaces 3.18 사용

Red Hat Developer Group Documentation Team

초록

Red Hat OpenShift Dev Spaces를 사용하는 사용자를 위한 정보입니다.

1장. Dev Spaces 시작하기

조직에서 이미 OpenShift Dev Spaces 인스턴스를 실행 중인 경우 새 작업 공간을 시작하고, 작업 영역을 관리하고, 작업 영역에서 Git 서버로 인증하는 방법을 학습하여 새 사용자로 시작할 수 있습니다.

1.1. Git 리포지토리 URL에서 작업 공간 시작

OpenShift Dev Spaces를 사용하면 브라우저에서 URL을 사용하여 Git 리포지토리 복제본이 포함된 새 작업 공간을 시작할 수 있습니다. 이렇게 하면 GitHub, GitLab, Bitbucket 또는 Microsoft Azure DevOps 서버 인스턴스에서 호스팅되는 Git 리포지토리를 복제할 수 있습니다.

작은 정보

OpenShift Dev Spaces 대시보드의 Create Workspace 페이지에서 Git Repository URL 필드를 사용하여 Git 리포지토리의 URL을 입력하여 새 작업 영역을 시작할 수도 있습니다.

중요
  • SSH URL을 사용하여 새 작업 공간을 시작하는 경우 SSH 키를 전파해야 합니다. 자세한 내용은 Git 작업에 SSH 키를 사용하도록 DevWorkspaces 구성 을 참조하십시오.
  • SSH URL이 개인 리포지토리를 가리키는 경우 devfile.yaml 콘텐츠를 가져올 수 있도록 액세스 토큰을 적용해야 합니다. SCM 인증 페이지를 수락하거나 개인 액세스 토큰 절차에 따라 이 작업을 수행할 수 있습니다.
중요

개인 리포지토리에 액세스하도록 개인 액세스 토큰을 구성합니다. 6.1.2절. “Git-provider 액세스 토큰 사용”을 참조하십시오.

사전 요구 사항

  • 조직에는 실행 중인 OpenShift Dev Spaces 인스턴스가 있습니다.
  • 조직의 OpenShift Dev Spaces 인스턴스의 FQDN URL을 알고 있습니다. https:// <openshift_dev_spaces_fqdn>.
  • 선택 사항: Git 서버 구성에 대한 인증이 있어야 합니다.
  • Git 리포지토리 유지 관리자는 devfile.yaml 또는 .devfile.yaml 파일을 Git 리포지토리의 루트 디렉터리에 유지합니다. (다른 파일 이름 및 파일 경로는 1.1.1절. “새 작업 공간을 시작하기 위한 URL의 선택적 매개변수” 을 참조하십시오.)

    작은 정보

    devfile이 없는 Git 리포지토리의 URL을 제공하여 새 작업 공간을 시작할 수도 있습니다. 이렇게 하면 Universal Developer Image 및 Microsoft Visual Studio Code가 있는 작업 공간 - 작업 공간 IDE로 오픈 소스가 생성됩니다.

프로세스

Git 리포지토리 복제본으로 새 작업 공간을 시작하려면 다음을 수행합니다.

  1. 선택 사항: OpenShift Dev Spaces 대시보드 페이지를 방문하여 조직의 OpenShift Dev Spaces 인스턴스에 인증합니다.
  2. URL을 방문하여 기본 구문을 사용하여 새 작업 공간을 시작합니다.

    https://<openshift_dev_spaces_fqdn>#<git_repository_url>
    Copy to Clipboard Toggle word wrap
    작은 정보

    선택적 매개변수를 사용하여 이 URL을 확장할 수 있습니다.

    https://<openshift_dev_spaces_fqdn>#<git_repository_url>?<optional_parameters> 
    1
    Copy to Clipboard Toggle word wrap
    작은 정보

    Git+SSH URL을 사용하여 새 작업 공간을 시작할 수 있습니다. Git 작업에 SSH 키를 사용하도록 DevWorkspaces 구성을참조하십시오.

    예 1.1. 새 작업 공간을 시작하기 위한 URL

    • https://<openshift_dev_spaces_fqdn>#https://github.com/che-samples/cpp-hello-world
    • https://<openshift_dev_spaces_fqdn>#git@github.com:che-samples/cpp-hello-world.git

    예 1.2. GitHub 인스턴스 리포지토리 복제본으로 새 작업 공간을 시작하기 위한 URL 구문

    • https:// <openshift_dev_spaces_fqdn> #https:/// <user_or_org> / <repository >는 기본 분기의 복제본으로 새 작업 공간을 시작합니다.
    • https:// <openshift_dev_spaces_fqdn> #https:/// <user_or_org> / <repository> /tree/ <branch_name >은 지정된 분기의 복제로 새 작업 영역을 시작합니다.
    • https:// <openshift_dev_spaces_fqdn> #https:/// <user_or_org> / <repository> /pull/ <pull_request_id >는 가져오기 요청 분기의 분기 복제를 사용하여 새 작업 영역을 시작합니다.
    • https:// <openshift_dev_spaces_fqdn> #git@: <user_or_org> / <repository > .git 은 Git+SSH URL에서 새 작업 영역을 시작합니다.

    예 1.3. GitLab 인스턴스 리포지토리 복제본으로 새 작업 공간을 시작하기 위한 URL 구문

    • https:// <openshift_dev_spaces_fqdn> #https:/// <user_or_org> / <repository >는 기본 분기의 복제본으로 새 작업 공간을 시작합니다.
    • https:// <openshift_dev_spaces_fqdn> #https:/// <user_or_org> / <repository> /-/tree/ <branch_name >은 지정된 분기의 복제본으로 새 작업 영역을 시작합니다.
    • https:// <openshift_dev_spaces_fqdn> #git@: <user_or_org> / <repository > .git 은 Git+SSH URL에서 새 작업 영역을 시작합니다.

    예 1.4. BitBucket Server 리포지토리 복제본으로 새 작업 공간을 시작하기 위한 URL 구문

    • https:// <openshift_dev_spaces_fqdn> #https:// <bb_host> /scm/ <project-key> / <repository > .git 은 기본 분기를 복제하여 새 작업 영역을 시작합니다.
    • HTTPS :// <openshift_dev_spaces_fqdn> #https:// <bb_host> /users/ <user_slug> /repos/ <repository > /repository는 사용자 프로필 아래에 리포지토리가 생성된 경우 기본 분기의 복제본으로 새 작업 영역을 시작합니다.
    • https:// <openshift_dev_spaces_fqdn> #https:// <bb_host> /users/ <user-slug> /repos/ <repository> /browse?at=refs%2Fheads%2F <branch-name >은 지정된 분기의 복제본으로 새 작업 공간을 시작합니다.
    • https:// <openshift_dev_spaces_fqdn> #git@ <bb_host > : <user_slug> / <repository > .git 은 Git+SSH URL에서 새 작업 영역을 시작합니다.

    예 1.5. Microsoft Azure DevOps Git 리포지토리 복제본으로 새 작업 공간을 시작하기 위한 URL 구문

    • https:// <openshift_dev_spaces_fqdn> #https:// <organization> @dev.azure.com/ <organization> / <project> /_git/ <repository >는 기본 분기의 복제본이 포함된 새 작업 영역을 시작합니다.
    • https:// <openshift_dev_spaces_fqdn> #https:// <organization> @dev.azure.com/ <organization> / <project> /_git/ <repository > ?version=GB <branch >는 특정 분기 복제를 사용하여 새 작업 영역을 시작합니다.
    • HTTPS :// <openshift_dev_spaces_fqdn> #git@ssh.dev.azure.com:v3/ <organization> / <project> / <repository >는 Git+SSH URL에서 새 작업 공간을 시작합니다.

    URL을 입력하여 브라우저 탭에서 새 작업 공간을 시작하면 작업 영역 시작 페이지가 표시됩니다.

    새 작업 공간이 준비되면 작업 공간 IDE가 브라우저 탭에 로드됩니다.

    Git 리포지토리의 복제본이 새 작업 공간의 파일 시스템에 있습니다.

    작업 공간의 고유 URL은 https:// <openshift_dev_spaces_fqdn> / <user_name> / <unique_url >입니다.

1.1.1. 새 작업 공간을 시작하기 위한 URL의 선택적 매개변수

새 작업 공간을 시작할 때 OpenShift Dev Spaces는 devfile의 지침에 따라 작업 공간을 구성합니다. URL을 사용하여 새 작업 영역을 시작할 때 작업 영역을 추가로 구성하는 URL에 선택적 매개변수를 추가할 수 있습니다. 이러한 매개변수를 사용하여 작업 공간 IDE를 지정하고, 중복된 작업 공간을 시작하고, devfile 파일 이름 또는 경로를 지정할 수 있습니다.

1.1.1.1. URL 매개변수 연결

새 작업 공간을 시작하기 위한 URL은 다음 URL 구문과 함께 & amp;를 사용하여 여러 선택적 URL 매개변수를 연결할 수 있도록 지원합니다.

HTTPS:// <openshift_dev_spaces_fqdn> #? <url_parameter_1> & <url_parameter_2> & <url_parameter_3>

예 1.6. Git 리포지토리의 URL 및 선택적 URL 매개변수를 사용하여 새 작업 공간을 시작하는 URL

브라우저의 전체 URL:

https:// &lt;openshift_dev_spaces_fqdn&gt; #https://github.com/che-samples/cpp-hello-world?new&che-editor=che-incubator/intellij-community/latest&devfilePath=tests/testdevfile.yaml

URL 부분에 대한 설명:

https://<openshift_dev_spaces_fqdn> 
1

#https://github.com/che-samples/cpp-hello-world 
2

?new&che-editor=che-incubator/intellij-community/latest&devfilePath=tests/testdevfile.yaml 
3
Copy to Clipboard Toggle word wrap
1
OpenShift Dev Spaces URL.
2
새 작업 공간에 복제할 Git 리포지토리의 URL입니다.
3
연결된 선택적 URL 매개변수입니다.
1.1.1.2. IDE의 URL 매개변수

che-editor= URL 매개변수를 사용하여 작업 영역을 시작할 때 지원되는 IDE를 지정할 수 있습니다.

작은 정보

소스 코드 Git 리포지토리에서 /.che/che-editor.yaml 파일을 추가하거나 편집할 수 없는 경우 che-editor= 매개변수를 사용하여 작업 공간에 복제하십시오.

참고

che-editor= 매개변수는 /.che/che-editor.yaml 파일을 재정의합니다.

이 매개변수는 다음 두 가지 유형의 값을 허용합니다.

  • che-editor=<editor_key>

    https://<openshift_dev_spaces_fqdn>#<git_repository_url>?che-editor=<editor_key>
    Copy to Clipboard Toggle word wrap
    Expand
    표 1.1. 지원되는 IDE에 대한 URL 매개변수 <editor_key > 값
    IDE<editor_key> value참고

    Microsoft Visual Studio Code - 오픈 소스

    che-incubator/che-code/latest

    이는 URL 매개변수 또는 che-editor.yaml 이 사용되지 않을 때 새 작업 공간에 로드되는 기본 IDE입니다.

    JetBrains IntelliJ IDEA Community Edition

    che-incubator/che-idea/latest

    기술 프리뷰. 대시보드를 사용하여 이 IDE를 선택합니다.

  • che-editor=<url_to_a_file>

    https://<openshift_dev_spaces_fqdn>#<git_repository_url>?che-editor=<url_to_a_file>
    1
    Copy to Clipboard Toggle word wrap
    1
    devfile 콘텐츠 가 있는 파일의 URL입니다.
    작은 정보
    • URL은 원시 파일 콘텐츠를 가리켜야 합니다.
    • 이 매개변수를 che-editor.yaml 파일과 함께 사용하려면 다른 이름 또는 경로가 있는 파일을 복사한 다음 파일에서 인라인 으로 행을 제거합니다.
1.1.1.3. IDE 이미지의 URL 매개변수

editor-image 매개변수를 사용하여 작업 공간에 대한 사용자 지정 IDE 이미지를 설정할 수 있습니다.

중요
  • Git 리포지토리에 /.che/che-editor.yaml 파일이 포함된 경우 사용자 지정 편집기가 새 IDE 이미지로 재정의됩니다.
  • Git 리포지토리에 /.che/che-editor.yaml 파일이 없으면 기본 편집기가 새 IDE 이미지로 재정의됩니다.
  • 지원되는 IDE를 재정의하고 대상 편집기 이미지를 변경하려면 che-editoreditor-image URL 매개변수를 모두 함께 사용할 수 있습니다.

IDE 이미지를 재정의하는 URL 매개변수는 editor-image=:입니다.

https://<openshift_dev_spaces_fqdn>#<git_repository_url>?editor-image=<container_registry/image_name:image_tag>
Copy to Clipboard Toggle word wrap

예제:

https:// &lt;openshift_dev_spaces_fqdn&gt; #https://github.com/eclipse-che/che-docs?editor-image=quay.io/che-incubator/che-code:next

또는

https:// &lt;openshift_dev_spaces_fqdn&gt; #https://github.com/eclipse-che/che-docs?che-editor=che-incubator/che-code/latest&editor-image=quay.io/che-incubator/che-code:next

1.1.1.4. 중복 작업 공간을 시작하기 위한 URL 매개변수

새 작업 공간을 시작하기 위한 URL을 방문하면 devfile 및 연결된 Git 리포지토리 복제본에 따라 새 작업 공간이 생성됩니다.

devfile 및 연결된 Git 리포지토리와 관련하여 중복된 작업 공간이 여러 개 있어야 하는 경우도 있습니다. URL 매개변수로 새 작업 영역을 시작하기 위해 동일한 URL을 방문하여 이 작업을 수행할 수 있습니다.

중복 작업 공간을 시작하기 위한 URL 매개변수는 다음과 같습니다.

https://<openshift_dev_spaces_fqdn>#<git_repository_url>?new
Copy to Clipboard Toggle word wrap
참고

현재 URL을 사용하여 시작한 작업 공간이 있는 경우 URL 매개변수 없이 URL을 다시 방문하면 오류 메시지가 표시됩니다.

1.1.1.5. devfile 파일 이름에 대한 URL 매개변수

새 작업 공간을 시작하기 위해 URL을 방문하면 OpenShift Dev Spaces에서 파일 이름 .devfile.yaml 또는 devfile.yaml 을 사용하여 devfile의 연결된 Git 리포지토리를 검색합니다. 연결된 Git 리포지토리의 devfile은 이 file-naming 규칙을 따라야 합니다.

경우에 따라 devfile에 대해 서로 다르고 일치하지 않는 파일 이름을 지정해야 할 수 있습니다.

devfile의 일관되지 않은 파일 이름을 지정하는 URL 매개변수는 df= <filename> . yaml 입니다.

https://<openshift_dev_spaces_fqdn>#<git_repository_url>?df=<filename>.yaml 
1
Copy to Clipboard Toggle word wrap
1
<filename > .yaml 은 연결된 Git 리포지토리에 있는 devfile의 일관되지 않은 파일 이름입니다.
작은 정보

df= <filename > .yaml 매개변수에도 긴 버전: devfilePath= <filename > .yaml 이 있습니다.

1.1.1.6. devfile 파일 경로에 대한 URL 매개변수

새 작업 공간을 시작하기 위해 URL을 방문하면 OpenShift Dev Spaces는 연결된 Git 리포지토리의 루트 디렉터리를 파일 이름 .devfile.yaml 또는 devfile.yaml 을 사용하여 devfile을 검색합니다. 연결된 Git 리포지토리에 있는 devfile의 파일 경로는 이 경로 규칙을 따라야 합니다.

연결된 Git 리포지토리에서 devfile에 대한 다른 비충분한 파일 경로를 지정해야 하는 경우도 있습니다.

devfile의 일관되지 않은 파일 경로를 지정하는 URL 매개변수는 devfilePath= <relative_file_path >입니다.

https://<openshift_dev_spaces_fqdn>#<git_repository_url>?devfilePath=<relative_file_path> 
1
Copy to Clipboard Toggle word wrap
1
<relative_file_path >는 연결된 Git 리포지토리에 있는 devfile의 일관되지 않은 파일 경로입니다.
1.1.1.7. 작업 공간 스토리지에 대한 URL 매개변수

새 작업 공간을 시작하기 위한 URL에 스토리지 유형을 지정하는 URL 매개 변수가 없으면 CheCluster 사용자 정의 리소스에서 기본 스토리지 유형으로 정의된 임시 또는 영구 스토리지로 새 작업 공간이 생성됩니다.

작업 공간에 스토리지 유형을 지정하는 URL 매개변수는 storage Type= <storage_type >입니다.

https://<openshift_dev_spaces_fqdn>#<git_repository_url>?storageType=<storage_type> 
1
Copy to Clipboard Toggle word wrap
1
가능한 &lt ;storage_type> 값은 다음과 같습니다.
  • 임시
  • 사용자별 (영구)
  • 작업당 (persistent)
작은 정보

임시 또는 작업별 스토리지 유형을 사용하면 여러 작업 공간을 동시에 실행할 수 있으며 기본 사용자당 스토리지 유형은 사용할 수 없습니다.

1.1.1.8. 추가 원격에 대한 URL 매개변수

새 작업 공간을 시작하기 위해 URL을 방문하면 OpenShift Dev Spaces는 원본 원격을 조직의 OpenShift Dev Spaces 인스턴스의 FQDN URL 뒤에 # 로 지정한 Git 리포지토리로 구성합니다.

작업 공간에 대한 추가 원격 복제 및 구성을 위한 URL 매개변수는 remotes=:입니다.

https://<openshift_dev_spaces_fqdn>#<git_repository_url>?remotes={{<name_1>,<url_1>},{<name_2>,<url_2>},{<name_3>,<url_3>},...}
Copy to Clipboard Toggle word wrap
중요
  • 추가 원격의 이름 원본 을 입력하지 않으면 의 원격 이 복제되고 origin 이라는 이름이 기본적으로 지정되고 예상되는 분기가 자동으로 확인됩니다.
  • 추가 원격 중 하나에 대한 이름 원본 을 입력하면 기본 분기가 자동으로 선택되지만 의 원격은 작업 공간에 대해 복제되지 않습니다.
1.1.1.9. 컨테이너 이미지의 URL 매개변수

다음 시나리오에서 image 매개변수를 사용하여 컨테이너 이미지에 대한 사용자 정의 참조를 사용할 수 있습니다.

  • Git 리포지토리에는 devfile이 없으며 사용자 지정 이미지로 새 작업 공간을 시작하려고 합니다.
  • Git 리포지토리에는 devfile이 포함되어 있으며 devfile의 구성 요소 섹션에 나열된 첫 번째 컨테이너 이미지를 재정의하려고 합니다.

컨테이너 이미지 경로의 URL 매개변수는 image=:입니다.

https://<openshift_dev_spaces_fqdn>#<git_repository_url>?image=<container_image_url>
Copy to Clipboard Toggle word wrap

https:// &lt;openshift_dev_spaces_fqdn&gt; #https://github.com/eclipse-che/che-docs?image=quay.io/devfile/universal-developer-image:ubi8-latest

1.2. 원시 devfile URL에서 작업 공간 시작

OpenShift Dev Spaces를 사용하면 브라우저에서 devfile URL을 열어 새 작업 공간을 시작할 수 있습니다.

작은 정보

OpenShift Dev Spaces 대시보드의 Create Workspace 페이지에서 Git Repo URL 필드를 사용하여 devfile 의 URL을 입력하여 새 작업 영역을 시작할 수 있습니다.

중요

새 작업 공간의 파일 시스템에서 Git 리포지토리 복제본을 시작하려면 devfile에 프로젝트 정보가 포함되어야 합니다.

https://devfile.io/docs/2.2.0/adding-projects 을 참조하십시오.

사전 요구 사항

  • 조직에는 실행 중인 OpenShift Dev Spaces 인스턴스가 있습니다.
  • 조직의 OpenShift Dev Spaces 인스턴스의 FQDN URL을 알고 있습니다. https:// <openshift_dev_spaces_fqdn>.

프로세스

devfile URL에서 새 작업 공간을 시작하려면 다음을 수행합니다.

  1. 선택 사항: OpenShift Dev Spaces 대시보드 페이지를 방문하여 조직의 OpenShift Dev Spaces 인스턴스에 인증합니다.
  2. URL을 방문하여 기본 구문을 사용하여 공용 리포지토리에서 새 작업 공간을 시작합니다.

    https://<openshift_dev_spaces_fqdn>#<devfile_url>
    Copy to Clipboard Toggle word wrap

    개인 액세스 토큰을 URL에 전달하여 프라이빗 리포지토리에서 devfile에 액세스할 수 있습니다.

    https://<openshift_dev_spaces_fqdn>#https://<token>@<host>/<path_to_devfile> 
    1
    Copy to Clipboard Toggle word wrap
    1
    Git 공급자의 웹 사이트에서 생성한 개인 액세스 토큰입니다.

    이는 GitHub, GitLab, Bitbucket, Microsoft Azure 및 개인 액세스 토큰을 지원하는 기타 공급자에서 작동합니다.

    중요

    이 경우 자동화된 Git 인증 정보 삽입이 작동하지 않습니다. Git 자격 증명을 구성하려면 개인 액세스 토큰 구성 가이드를 사용합니다.

    작은 정보

    선택적 매개변수를 사용하여 이 URL을 확장할 수 있습니다.

    https://<openshift_dev_spaces_fqdn>#<devfile_url>?<optional_parameters> 
    1
    Copy to Clipboard Toggle word wrap

    예 1.7. 공용 리포지토리에서 새 작업 공간을 시작하기 위한 URL

    https:// &lt;openshift_dev_spaces_fqdn&gt; #https://raw.githubusercontent.com/che-samples/cpp-hello-world/main/devfile.yaml

    예 1.8. 프라이빗 리포지토리에서 새 작업 공간을 시작하기 위한 URL

    https:// <openshift_dev_spaces_fqdn> #https:// <token> @raw.githubusercontent.com/che-samples/cpp-hello-world/main/devfile.yaml

    검증

    URL을 입력하여 브라우저 탭에서 새 작업 공간을 시작하면 작업 영역 시작 페이지가 표시됩니다. 새 작업 공간이 준비되면 작업 공간 IDE가 브라우저 탭에 로드됩니다.

    작업 공간의 고유 URL은 https:// <openshift_dev_spaces_fqdn> / <user_name> / <unique_url >입니다.

1.3. 작업 영역에서 수행할 수 있는 기본 작업

OpenShift Dev Spaces 대시보드의 작업 공간을 관리하고 현재 작업 공간 페이지(https:// <openshift_dev_spaces_fqdn> /dashboard/#/workspaces)에서 현재 상태를 확인합니다.

새 작업 공간을 시작한 후 Workspaces 페이지에서 다음 작업을 수행할 수 있습니다.

Expand
표 1.2. 작업 영역에서 수행할 수 있는 기본 작업
동작Workspace 페이지의 GUI 단계

실행 중인 작업 공간 다시 열기

Open 을 클릭합니다.

실행 중인 작업 공간 재시작

Cryostat & gt; Restart Workspace 로 이동합니다.

실행 중인 작업 공간 중지

Cryostat & gt; Stop Workspace 로 이동합니다.

중지된 작업 공간 시작

Open 을 클릭합니다.

작업 공간 삭제

Cryostat & gt; Delete Workspace 로 이동합니다.

1.4. 작업 영역에서 Git 서버에 인증

작업 영역에서 원격 개인 Git 리포지토리 복제 또는 원격 공용 또는 프라이빗 Git 리포지토리로 내보내는 것과 같은 사용자 인증이 필요한 Git 명령을 실행할 수 있습니다.

작업 영역에서 Git 서버에 대한 사용자 인증은 관리자 또는 경우에 따라 개별 사용자가 구성합니다.

1.5. Podman 및 Buildah에 fuse-overlayfs 스토리지 드라이버 사용

기본적으로 devfile을 지정하지 않는 새로 생성된 작업 공간은 UDI(Universal Developer Image)를 사용합니다. UDI에는 일반적으로 개발자가 사용하는 공통 개발 툴과 종속성이 포함되어 있습니다.

Podman 및 Buildah는 UDI에 포함되어 있어 개발자가 작업 영역에서 컨테이너 이미지를 빌드하고 내보낼 수 있습니다.

기본적으로 UDI의 Podman 및 Buildah는 vfs 스토리지 드라이버를 사용하도록 구성됩니다. 보다 효율적인 이미지 관리를 위해 루트 없는 환경에서 COW(Copy-On-Write)를 지원하는 fuse-overlayfs 스토리지 드라이버를 사용하십시오.

작업 영역에서 fuse-overlayfs를 사용하려면 다음 요구 사항을 충족해야 합니다.

  1. 4.15 이전 버전의 OpenShift의 경우 관리자는 https://access.redhat.com/documentation/en-us/red_hat_openshift_dev_spaces/3.18/html-single/administration_guide/index#administration-guide:configuring-fuse 에 따라 클러스터에서 /dev/fuse 액세스를 활성화했습니다.
  2. 작업 공간에는 /dev/fuse 장치를 사용하는 데 필요한 주석이 있습니다. 1.5.1절. “/dev/fuse에 액세스”을 참조하십시오.
  3. 작업 공간 컨테이너의 storage.conf 파일이 fuse-overlayfs를 사용하도록 구성되어 있습니다. 1.5.2절. “ConfigMap을 사용하여 fuse-overlayfs 활성화”을 참조하십시오.

추가 리소스

1.5.1. /dev/fuse에 액세스

fuse-overlayfs를 사용하려면 /dev/fuse 에 액세스할 수 있어야 합니다. 이 섹션에서는 작업 공간 컨테이너에서 /dev/fuse 를 액세스하는 방법을 설명합니다.

사전 요구 사항

프로세스

  1. pod-overrides 속성을 사용하여 https://access.redhat.com/documentation/en-us/red_hat_openshift_dev_spaces/3.18/html-single/administration_guide/index#administration-guide:configuring-fuse 에 정의된 필수 주석을 작업 공간에 추가합니다. pod-overrides 특성을 사용하면 작업 공간 Pod의 사양에서 특정 필드를 병합할 수 있습니다.

    4.15 이전 버전의 OpenShift의 경우:

    $ oc patch devworkspace <DevWorkspace_name> \
      --patch '{"spec":{"template":{"attributes":{"pod-overrides":{"metadata":{"annotations":{"io.kubernetes.cri-o.Devices":"/dev/fuse","io.openshift.podman-fuse":""}}}}}}}' \
      --type=merge
    Copy to Clipboard Toggle word wrap

    OpenShift 버전 4.15 이상의 경우:

    $ oc patch devworkspace <DevWorkspace_name> \
      --patch '{"spec":{"template":{"attributes":{"pod-overrides":{"metadata":{"annotations":{"io.kubernetes.cri-o.Devices":"/dev/fuse"}}}}}}}' \
      --type=merge
    Copy to Clipboard Toggle word wrap

검증 단계

  1. 작업 영역을 시작하고 작업 공간 컨테이너에서 /dev/fuse 를 사용할 수 있는지 확인합니다.

    $ stat /dev/fuse
    Copy to Clipboard Toggle word wrap

이 절차를 완료한 후 1.5.2절. “ConfigMap을 사용하여 fuse-overlayfs 활성화” 의 단계에 따라 Podman에 fuse-overlayfs를 사용합니다.

1.5.2. ConfigMap을 사용하여 fuse-overlayfs 활성화

~/.config/containers/storage.conf 파일에서 Podman 및 Buildah의 스토리지 드라이버를 정의할 수 있습니다. 다음은 UDI 컨테이너에 있는 /home/user/.config/containers/storage.conf 파일의 기본 내용입니다.

storage.conf

[storage]
driver = "vfs"
Copy to Clipboard Toggle word wrap

fuse-overlayfs를 사용하려면 storage.conf 를 다음으로 설정할 수 있습니다.

storage.conf

[storage]
driver = "overlay"

[storage.options.overlay]
mount_program="/usr/bin/fuse-overlayfs" 
1
Copy to Clipboard Toggle word wrap

1
fuse-overlayfs 바이너리의 절대 경로입니다. /usr/bin/fuse-overlayfs 경로는 UDI의 기본값입니다.

작업 영역을 시작한 후 수동으로 이 작업을 수행할 수 있습니다. 또 다른 옵션은 storage.conf 변경 사항으로 UDI를 기반으로 새 이미지를 빌드하고 작업 공간에 새 이미지를 사용하는 것입니다.

그렇지 않으면 업데이트된 파일을 마운트하는 ConfigMap을 생성하여 프로젝트의 모든 작업 공간에 대해 /home/user/.config/containers/storage.conf 를 업데이트할 수 있습니다. 6.2절. “마운트 ConfigMap”을 참조하십시오.

사전 요구 사항

참고

이 가이드에 따라 마운트된 ConfigMap은 ConfigMap의 데이터를 모든 작업 공간에 마운트하므로 이 절차에 따라 모든 작업 공간에 대한 스토리지 드라이버를 fuse-overlayfs로 설정합니다. 1.5.1절. “/dev/fuse에 액세스” 에서 fuse-overlayfs를 사용하는 데 필요한 주석이 작업 공간에 포함되어 있는지 확인합니다.

프로세스

  1. 프로젝트에 /home/user/.config/containers/storage.conf 파일을 마운트하는 ConfigMap을 적용합니다.

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: fuse-overlay
      labels:
        controller.devfile.io/mount-to-devworkspace: 'true'
        controller.devfile.io/watch-configmap: 'true'
      annotations:
        controller.devfile.io/mount-as: subpath
        controller.devfile.io/mount-path: /home/user/.config/containers
    data:
      storage.conf: |
        [storage]
        driver = "overlay"
    
        [storage.options.overlay]
        mount_program="/usr/bin/fuse-overlayfs"
    Copy to Clipboard Toggle word wrap
    주의

    이 ConfigMap을 생성하면 실행 중인 모든 작업 공간이 다시 시작됩니다.

검증 단계

  1. 필요한 주석이 포함된 작업 공간을 시작하고 스토리지 드라이버가 오버레이 인지 확인합니다.

    $ podman info | grep overlay
    Copy to Clipboard Toggle word wrap

    출력 예:

    graphDriverName: overlay
      overlay.mount_program:
        Executable: /usr/bin/fuse-overlayfs
        Package: fuse-overlayfs-1.12-1.module+el8.9.0+20326+387084d0.x86_64
          fuse-overlayfs: version 1.12
      Backing Filesystem: overlayfs
    Copy to Clipboard Toggle word wrap
    참고

    기존 작업 공간에 대해 다음 오류가 발생할 수 있습니다.

    ERRO[0000] User-selected graph driver "overlay" overwritten by graph driver "vfs" from database - delete libpod local files ("/home/user/.local/share/containers/storage") to resolve.  May prevent use of images created by other tools
    Copy to Clipboard Toggle word wrap

    이 경우 오류 메시지에 언급된 libpod 로컬 파일을 삭제합니다.

1.6. kubedock으로 컨테이너 실행

Kubedock 은 OpenShift Dev Spaces 작업 공간 내에서 Podman/docker와 같은 환경을 제공하는 최소 컨테이너 엔진 구현입니다. Kubedock은 아래 나열된 사용 사례와 같이 임시, 임시 및 테스트 컨테이너를 처리할 때 특히 유용합니다.

  • Testcontainers 프레임워크를 사용하는 애플리케이션 테스트 실행.
  • Quarkus Dev Services 사용
  • 로컬 개발 목적으로 원격 컨테이너 레지스트리에 저장된 컨테이너 실행
중요

kubedock과 함께 사용하려는 이미지는 Openshift Container Platform 지침을 준수해야 합니다. 그러지 않으면 kubedock으로 이미지를 실행하면 동일한 이미지가 문제 없이 로컬로 실행되는 경우에도 오류가 발생합니다.

kubedock 활성화

kubedock 환경 변수를 활성화한 후 kubedock은 다음 podman 명령을 실행합니다.

  • podman run
  • podman ps
  • podman exec
  • podman cp
  • Podman 로그
  • podman inspect
  • podman kill
  • podman rm
  • podman wait
  • podman stop
  • podman start

podman build 와 같은 기타 명령은 로컬 Podman에서 시작합니다.

중요

kubedock에서 podman 명령을 사용하면 다음과 같은 제한 사항이 있습니다.

  • podman build -t <image> . && podman run <image > 명령이 실패합니다. podman build -t <image> . && podman push <image> && podman run <image >을 대신 사용하십시오.
  • podman generate kube 명령은 지원되지 않습니다.
  • --env 옵션을 사용하면 podman run 명령이 실패합니다.

사전 요구 사항

프로세스

  • devfile에 KUBEDOCK_ENABLED=true 환경 변수를 추가합니다.

    • (OPTIONAL) KUBEDOCK_PARAM 변수를 사용하여 추가 kubedock 매개변수를 지정합니다. 변수 목록은 여기에서 사용할 수 있습니다. 또는 다음 명령을 사용하여 사용 가능한 옵션을 볼 수 있습니다.

      # kubedock server --help
      Copy to Clipboard Toggle word wrap

schemaVersion: 2.2.0
metadata:
  name: kubedock-sample-devfile
components:
  - name: tools
    container:
      image: quay.io/devfile/universal-developer-image:latest
      memoryLimit: 8Gi
      memoryRequest: 1Gi
      cpuLimit: "2"
      cpuRequest: 200m
      env:
        - name: KUBEDOCK_PARAMS
          value: "--reverse-proxy --kubeconfig /home/user/.kube/config --initimage quay.io/agiertli/kubedock:0.13.0"
        - name: USE_JAVA17
          value: "true"
        - value: /home/jboss/.m2
          name: MAVEN_CONFIG
        - value: -Xmx4G -Xss128M -XX:MetaspaceSize=1G -XX:MaxMetaspaceSize=2G
          name: MAVEN_OPTS
        - name: KUBEDOCK_ENABLED
          value: 'true'
        - name: DOCKER_HOST
          value: 'tcp://127.0.0.1:2475'
        - name: TESTCONTAINERS_RYUK_DISABLED
          value: 'true'
        - name: TESTCONTAINERS_CHECKS_DISABLE
          value: 'true'
      endpoints:
        - exposure: none
          name: kubedock
          protocol: tcp
          targetPort: 2475
        - exposure: public
          name: http-booster
          protocol: http
          targetPort: 8080
          attributes:
            discoverable: true
            urlRewriteSupported: true
        - exposure: internal
          name: debug
          protocol: http
          targetPort: 5005
      volumeMounts:
        - name: m2
          path: /home/user/.m2
  - name: m2
    volume:
      size: 10G
Copy to Clipboard Toggle word wrap

중요

컨테이너를 실행할 때 kubedock 설정 CONTAINER_HOST=tcp://127.0.0.1:2475 또는 DOCKER_HOST=tcp://127.0.0.1:2475 를 가리키도록 Podman 또는 Docker API를 구성해야 합니다.

동시에 컨테이너를 빌드할 때 로컬 Podman을 가리키도록 Podman을 구성해야 합니다.

2장. 팀 워크플로에서 Dev Spaces 사용

다음 문서를 통해 조직에서 OpenShift Dev Spaces를 사용할 때의 이점에 대해 알아보십시오.

2.1. 첫 번째 기여자를 위한 배지

최초 기여자가 프로젝트로 작업 공간을 시작할 수 있도록 하려면 OpenShift Dev Spaces 인스턴스에 대한 링크가 포함된 배지를 추가합니다.

그림 2.1. 팩토리 배지

프로세스

  1. OpenShift Dev Spaces URL(https:// <openshift_dev_spaces_fqdn> ) 및 리포지토리 URL( <your_repository_url> )을 대체하고 프로젝트 README.md 파일의 리포지토리에 링크를 추가합니다.

    [![Contribute](https://www.eclipse.org/che/contribute.svg)](https://<openshift_dev_spaces_fqdn>/#https://<your_repository_url>)
    Copy to Clipboard Toggle word wrap
  2. Git 공급자 웹 인터페이스의 README.md 파일에는 팩토리 배지가 표시됩니다. 배지를 클릭하여 OpenShift Dev Spaces 인스턴스에서 프로젝트의 작업 공간을 엽니다.

2.2. 가져오기 및 병합 요청 검토

Red Hat OpenShift Dev Spaces 작업 공간에는 가져오기 및 병합 요청을 처음부터 끝까지 검토하는 데 필요한 모든 툴이 포함되어 있습니다. OpenShift Dev Spaces 링크를 클릭하면 linter, 단위 테스트, 빌드 등을 실행할 수 있는 즉시 사용 가능한 작업 공간을 사용하여 Red Hat OpenShift Dev Spaces 지원 웹 IDE에 액세스할 수 있습니다.

사전 요구 사항

  • Git 공급자가 호스팅하는 리포지토리에 액세스할 수 있습니다.
  • OpenShift Dev Spaces 인스턴스에 액세스할 수 있습니다.

프로세스

  1. 기능 분기를 열어 OpenShift Dev Spaces에서 검토합니다. 디버깅 및 테스트를 위한 도구가 포함된 작업 영역에서 분기 복제가 열립니다.
  2. 가져오기 또는 병합 요청 변경 사항을 확인합니다.
  3. 원하는 디버깅 및 테스트 도구를 실행합니다.

    • linter를 실행합니다.
    • 단위 테스트를 실행합니다.
    • 빌드를 실행합니다.
    • 애플리케이션을 실행하여 문제를 확인합니다.
  4. Git 공급자의 UI로 이동하여 의견을 남기고 할당된 요청을 가져오거나 병합합니다.

검증

  • (선택 사항) 리포지토리의 주요 분기를 사용하여 두 번째 작업 영역을 열어 문제를 재현합니다.

2.3. 웹 IDE GitHub 작업에서 사용해 보십시오.

Try in Web IDE GitHub 작업을 GitHub 리포지토리 워크플로에 추가하여 검토자가 Red Hat에서 호스팅하는 Eclipse Che에 대한 가져오기 요청을 신속하게 테스트할 수 있습니다. 이 작업은 요청 가져오기 이벤트를 청취하고 주석, 상태 점검 또는 둘 다를 생성하여 팩토리 URL을 제공하여 이를 수행합니다. 이 팩토리 URL은 Red Hat에서 호스팅하는 Eclipse Che의 가져오기 요청 분기에서 새 작업 공간을 생성합니다.

참고

Che 문서 리포지토리( https://github.com/eclipse/che-docs)는 웹 IDE GitHub 작업에서 Try in Web IDE GitHub 작업을 통해 가져오기 요청을 신속하게 테스트하는 데 도움이 되는 실제 예제입니다.https://github.com/eclipse/che-docs 최근 가져오기 요청으로 이동하고 팩토리 URL을 열어 워크플로우를 경험하십시오.

그림 2.2. Try in Web IDE GitHub 작업에서 생성한 가져오기 요청 주석입니다. 배지를 클릭하면 검토자가 가져오기 요청을 테스트할 수 있는 새 작업 공간이 열립니다.

그림 2.3. Try in Web IDE GitHub 작업에서 생성한 가져오기 요청 상태 점검입니다. "세부 정보" 링크를 클릭하면 검토자가 가져오기 요청을 테스트할 수 있는 새 작업 공간이 열립니다.

2.3.1. GitHub 리포지토리 워크플로에 작업 추가

이 섹션에서는 Try in Web IDE GitHub 작업을 GitHub 리포지토리 워크플로에 통합하는 방법을 설명합니다.

사전 요구 사항

  • GitHub 리포지토리
  • GitHub 리포지토리의 루트에 있는 devfile입니다.

프로세스

  1. GitHub 리포지토리에서 아직 없는 경우 .github/workflows 디렉터리를 만듭니다.
  2. 다음 콘텐츠를 사용하여 .github/workflows 디렉터리에 example.yml 파일을 생성합니다.

    예 2.1. example.yml

    name: Try in Web IDE example
    
    on:
      pull_request_target:
        types: [opened]
    
    jobs:
      add-link:
        runs-on: ubuntu-20.04
        steps:
          - name: Web IDE Pull Request Check
            id: try-in-web-ide
            uses: redhat-actions/try-in-web-ide@v1
            with:
              # GitHub action inputs
    
              # required
              github_token: ${{ secrets.GITHUB_TOKEN }}
    
              # optional - defaults to true
              add_comment: true
    
              # optional - defaults to true
              add_status: true
    Copy to Clipboard Toggle word wrap

    이 코드 조각은 redhat-actions/try- in-web-ide 커뮤니티 작업의 v1 버전을 실행하는 작업을 사용하여 Web IDE 예제에서 Try 라는 워크플로를 생성합니다. 열린 활동 유형의 pull_request_target 이벤트에서 워크플로가 트리거됩니다.

  3. 필요한 경우 워크플로우 트리거 시 사용자 지정하도록 on.pull_request_target.types 필드에서 활동 유형을 구성합니다. 다시 열리거나 동기화 같은 활동 유형은 유용할 수 있습니다.

    예 2.2. 열린 활동 유형 및 동기화 활동 유형 모두에서 워크플로 트리거

    on:
      pull_request_target:
        types: [opened, synchronize]
    Copy to Clipboard Toggle word wrap
  4. 선택적으로 example.yml 에서 add_commentadd_status GitHub 작업 입력을 구성합니다. 이러한 입력은 주석 및 상태 검사를 수행할지 여부를 사용자 지정하기 위해 Web IDE GitHub 작업에서 Try in Web IDE GitHub 작업으로 전송됩니다.

2.3.2. devfile 제공

리포지토리의 루트 디렉터리에 devfile 을 제공하는 것이 좋습니다. 팩토리 URL에서 생성한 작업 공간의 개발 환경을 정의하는 것이 좋습니다. 이러한 방식으로 작업 공간에는 플러그인, 개발 명령 및 기타 환경 설정과 같은 가져오기 요청을 검토하는 데 필요한 모든 항목이 포함되어 있습니다.

Che 문서 리포지토리 devfile 은 잘 정의되고 효과적인 devfile의 예입니다.

3장. 작업 공간 구성 요소 사용자 정의

작업 공간 구성 요소를 사용자 지정하려면 다음을 수행합니다.

4장. Dev Spaces에서 devfile 소개

devfile 은 개발 환경 사용자 지정에 사용되는 yaml 텍스트 파일입니다. 이를 사용하여 특정 요구에 맞게 devfile을 구성하고 여러 작업 영역에서 사용자 지정 devfile을 공유하여 팀 전체의 동일한 사용자 환경을 유지하고 실행하며 동작을 배포하도록 합니다.

Red Hat OpenShift Dev Spaces별 devfile 기능

Red Hat OpenShift Dev Spaces는 devfile의 구성 요소 섹션에 정의된 대부분의 널리 사용되는 이미지와 함께 작동할 것으로 예상됩니다. 프로덕션 용도의 경우 Cloud Development Environment를 정의하기 위한 기본 이미지로 Universal Base Images 중 하나를 사용하는 것이 좋습니다.

주의

일부 이미지는 Visual Studio Code - 오픈 소스("Code - OSS")가 누락된 openssllibbrotli 가 있는 컨테이너에서 시작할 수 없기 때문에 클라우드 개발 환경을 정의하는 데 사용할 수 없습니다. 누락된 라이브러리는 Dockerfile 수준에 명시적으로 설치해야 합니다. 예를 들어 RUN yum install compat-openssl11 libbrotli

devfile 및 Universal Developer Image

작업 영역을 시작하는 데 devfile이 필요하지 않습니다. 프로젝트 리포지토리에 devfile을 포함하지 않는 경우 Red Hat OpenShift Dev Spaces는 UDI(Universal Developer Image)를 사용하여 기본 devfile을 자동으로 로드합니다.

devfile 레지스트리

devfile Registry 에는 다양한 언어 및 기술을 위해 즉시 사용할 수 있는 커뮤니티 지원 devfile이 포함되어 있습니다. 레지스트리에 포함된 devfile은 템플릿이 아닌 샘플로 처리되어야 합니다.

5장. 작업 공간의 IDE

5.1. 지원되는 IDE

새 작업 공간의 기본 IDE는 Microsoft Visual Studio Code - 오픈 소스입니다. 또는 다른 지원되는 IDE를 선택할 수 있습니다.

Expand
표 5.1. 지원되는 IDE
IDEid참고

Microsoft Visual Studio Code - 오픈 소스

che-incubator/che-code/latest

이는 URL 매개변수 또는 che-editor.yaml 이 사용되지 않을 때 새 작업 공간에 로드되는 기본 IDE입니다.

JetBrains IntelliJ IDEA Community Edition

che-incubator/che-idea/latest

기술 프리뷰. 대시보드를 사용하여 이 IDE를 선택합니다.

5.2. OpenShift Dev Spaces의 리포지토리 수준 IDE 구성

프로젝트 소스 코드가 포함된 원격 Git 리포지토리에 직접 IDE 구성 파일을 저장할 수 있습니다. 이렇게 하면 해당 리포지토리의 복제본이 있는 모든 새 작업 공간에 하나의 공통 IDE 구성이 적용됩니다. 이러한 IDE 구성 파일에는 다음이 포함될 수 있습니다.

5.3. Microsoft Visual Studio Code - 오픈 소스

Microsoft Visual Studio Code의 OpenShift Dev Spaces 빌드 - 오픈 소스 는 새 작업 공간의 기본 IDE입니다.

작업 공간 시작 시 Open VSX 레지스트리에서 Microsoft Visual Studio Code 확장 프로그램의 설치를 자동화할 수 있습니다. 작업 영역 시작 시 Microsoft Visual Studio Code 확장 프로그램 자동 설치를 참조하십시오.

작은 정보
작은 정보

명령줄 을 호출하고 Preferences: Open Workspace Settings 을 선택하여 Workspace별로 IDE 기본 설정을 구성합니다.

참고

브랜드화된 빌드를 통해 조직에서 사용자 정의하면 이 IDE에서 조직의 브랜딩을 확인할 수 있습니다.

Microsoft Visual Studio Code - Open Source IDE에서 선택한 확장을 자동으로 설치하려면 프로젝트 소스 코드가 포함된 원격 Git 리포지토리에 extensions.json 파일을 추가하고 작업 공간에 복제할 수 있습니다.

사전 요구 사항

프로세스

  1. 선택한 각 확장의 게시자 및 확장 이름을 가져옵니다.

    1. Open VSX 레지스트리 웹 사이트에서 확장을 찾고 확장 프로그램 목록 페이지의 URL을 복사합니다.
    2. 복사한 URL에서 <publisher > 및 <extension> 이름을 추출합니다.

      https://www.open-vsx.org/extension/<publisher>/<extension>
      Copy to Clipboard Toggle word wrap
  2. 원격 Git 리포지토리에 .vscode/extensions.json 파일을 생성합니다.
  3. 다음과 같이 extensions.json 파일에 < publisher > 및 <extension> 이름을 추가합니다.

      {
        "recommendations": [
          "<publisher_A>.<extension_B>",
          "<publisher_C>.<extension_D>",
          "<publisher_E>.<extension_F>"
        ]
      }
    Copy to Clipboard Toggle word wrap

검증

  1. 생성된 extensions.json 파일이 포함된 원격 Git 리포지토리의 URL을 사용하여 새 작업 공간을 시작합니다.
  2. 작업 공간의 IDE에서 Ctrl+Shift+X 를 클릭하거나 Extensions 로 이동하여 파일에 나열된 각 확장 기능을 찾습니다.
  3. 확장에는 This extension is enabled globally 라는 레이블이 있습니다.

5.4. 공통 IDE 정의

1.1.1.2절. “IDE의 URL 매개변수” 를 사용하면 지원되는 IDE의 개인 선택으로 작업 공간을 시작할 수 있지만 동일한 소스 코드 Git 리포지토리에 대한 모든 작업 공간에 대해 동일한 IDE를 정의하는 것이 더 편리합니다. 이렇게 하려면 che-editor.yaml 파일을 사용합니다. 이 파일은 자세한 IDE 구성도 지원합니다.

작은 정보

Microsoft Visual Studio Code - Open Source 이외의 동일한 IDE로 조직의 작업 공간을 대부분 또는 모두 시작하려는 경우, 조직의 OpenShift Dev Spaces 인스턴스의 관리자가 OpenShift Dev Spaces 인스턴스 수준에서 다른 지원되는 IDE를 기본 IDE로 지정하는 것이 대안입니다. 이 작업은 CheCluster 사용자 정의 리소스의 .spec.devEnvironments.defaultEditor 를 사용하여 수행할 수 있습니다.

5.4.1. che-editor.yaml 설정

che-editor.yaml 파일을 사용하면 팀에 공통 기본 IDE를 설정하고 프로젝트 소스 코드에 가장 적합한 IDE를 새 기여자에게 제공할 수 있습니다. 조직의 OpenShift Dev Spaces 인스턴스의 기본 IDE 대신 특정 소스 코드 Git 리포지토리에 대해 다른 IDE 기본값을 설정해야 하는 경우 che-editor.yaml 파일을 사용할 수도 있습니다.

프로세스

  • 프로젝트 소스 코드의 원격 Git 리포지토리에서 관련 매개 변수를 지정하는 행을 사용하여 /.che/che-editor.yaml 파일을 생성합니다.

검증

  1. Git 리포지토리 복제본으로 새 작업 공간을 시작합니다.
  2. 지정된 IDE가 시작된 작업 공간의 브라우저 탭에 로드되는지 확인합니다.

5.4.2. che-editor.yaml 매개변수

che-editor.yaml 에서 IDE를 선택하는 가장 간단한 방법은 지원되는 IDE 표에서 IDE의 ID를 지정하는 것입니다.

Expand
표 5.2. 지원되는 IDE
IDEid참고

Microsoft Visual Studio Code - 오픈 소스

che-incubator/che-code/latest

이는 URL 매개변수 또는 che-editor.yaml 이 사용되지 않을 때 새 작업 공간에 로드되는 기본 IDE입니다.

JetBrains IntelliJ IDEA Community Edition

che-incubator/che-idea/latest

기술 프리뷰. 대시보드를 사용하여 이 IDE를 선택합니다.

예 5.1. id 플러그인 레지스트리에서 IDE 선택

id: che-incubator/che-idea/latest
Copy to Clipboard Toggle word wrap

id 매개변수를 제공하는 대신 che-editor.yaml 파일은 다른 che-editor.yaml 파일의 URL 또는 플러그인 레지스트리 외부의 IDE에 대한 인라인 정의를 지원합니다.

예 5.2. 원격 che-editor.yaml 파일을 참조합니다.

reference: https://<hostname_and_path_to_a_remote_file>/che-editor.yaml
Copy to Clipboard Toggle word wrap

예 5.3. 인라인 은 플러그인 레지스트리 없이 사용자 지정 IDE에 대한 전체 정의를 지정합니다.

inline:
  schemaVersion: 2.1.0
  metadata:
    name: JetBrains IntelliJ IDEA Community IDE
  components:
    - name: intellij
      container:
        image: 'quay.io/che-incubator/che-idea:next'
        volumeMounts:
          - name: projector-user
            path: /home/projector-user
        mountSources: true
        memoryLimit: 2048M
        memoryRequest: 32Mi
        cpuLimit: 1500m
        cpuRequest: 100m
        endpoints:
          - name: intellij
            attributes:
              type: main
              cookiesAuthEnabled: true
              urlRewriteSupported: true
              discoverable: false
              path: /?backgroundColor=434343&wss
            targetPort: 8887
            exposure: public
            secure: false
            protocol: https
      attributes: {}
    - name: projector-user
      volume: {}
Copy to Clipboard Toggle word wrap

더 복잡한 시나리오의 경우 che-editor.yaml 파일은 registryUrloverride 매개변수를 지원합니다.

예 5.4. registryUrl 은 기본 OpenShift Dev Spaces 플러그인 레지스트리 대신 사용자 정의 플러그인 레지스트리를 가리킵니다.

id: <editor_id> 
1

registryUrl: <url_of_custom_plugin_registry>
Copy to Clipboard Toggle word wrap
1
사용자 정의 플러그인 레지스트리에 있는 IDE의 ID입니다.

예 5.5. IDE의 하나 이상의 정의된 속성의 기본값 재정의

... 
1

override:
  containers:
    - name: che-idea
      memoryLimit: 1280Mi
      cpuLimit: 1510m
      cpuRequest: 102m
    ...
Copy to Clipboard Toggle word wrap
1
ID:, registryUrl:, 또는 reference:.

6장. 작업 영역에서 인증 정보 및 구성 사용

작업 영역에서 인증 정보 및 구성을 사용할 수 있습니다.

이렇게 하려면 조직의 OpenShift Dev Spaces 인스턴스의 OpenShift 클러스터에 있는 Dev Workspace 컨테이너에 인증 정보 및 구성을 마운트합니다.

클러스터의 Dev Workspace Pod가 인증이 필요한 컨테이너 레지스트리에 액세스하도록 허용해야 하는 경우 Dev Workspace Pod에 대한 이미지 가져오기 보안 을 생성합니다.

마운트 프로세스에서는 표준 Kubernetes 마운트 메커니즘을 사용하며 기존 리소스에 추가 라벨 및 주석을 적용해야 합니다. 새 작업 영역을 시작하거나 기존 작업 영역을 다시 시작할 때 리소스가 마운트됩니다.

다양한 구성 요소에 대한 영구 마운트 지점을 생성할 수 있습니다.

6.1. 마운트 보안

기밀 데이터를 작업 공간에 마운트하려면 Kubernetes 보안을 사용합니다.

Kubernetes 보안을 사용하면 사용자 이름, 암호, SSH 키 쌍, 인증 토큰(예: AWS) 및 중요한 구성을 마운트할 수 있습니다.

조직의 OpenShift Dev Spaces 인스턴스의 OpenShift 클러스터에 있는 Dev Workspace 컨테이너에 Kubernetes 보안을 마운트합니다.

사전 요구 사항

  • 대상 OpenShift 클러스터에 대한 관리 권한이 있는 활성 oc 세션. CLI 시작하기를 참조하십시오.
  • 사용자 프로젝트에서 새 시크릿을 생성하거나 모든 Dev Workspace 컨테이너에 마운트할 기존 보안을 선택했습니다.

프로세스

  1. 시크릿을 마운트하는 데 필요한 레이블을 시크릿에 추가합니다.

    $ oc label secret <Secret_name> \
            controller.devfile.io/mount-to-devworkspace=true \
            controller.devfile.io/watch-secret=true
    Copy to Clipboard Toggle word wrap
  2. 선택 사항: 주석을 사용하여 시크릿 마운트 방법을 구성합니다.

    Expand
    표 6.1. 선택적 주석
    주석설명

    controller.devfile.io/mount-path:

    마운트 경로를 지정합니다.

    기본값은 /etc/secret/ <Secret_name>입니다.

    controller.devfile.io/mount-as:

    리소스를 마운트하는 방법( file,subpath 또는 env )을 지정합니다.

    기본값은 file 입니다.

    mount-as: 파일은 키와 값을 마운트 경로에 파일로 마운트합니다.

    mount-as: 하위 경로는 subpath 볼륨 마운트를 사용하여 마운트 경로 내에 키와 값을 마운트합니다.

    mount-as: env 는 모든 Dev Workspace 컨테이너에서 키와 값을 환경 변수로 마운트합니다.

예 6.1. 시크릿을 파일로 마운트

apiVersion: v1
kind: Secret
metadata:
  name: mvn-settings-secret
  labels:
    controller.devfile.io/mount-to-devworkspace: 'true'
    controller.devfile.io/watch-secret: 'true'
  annotations:
    controller.devfile.io/mount-path: '/home/user/.m2'
data:
  settings.xml: <Base64_encoded_content>
Copy to Clipboard Toggle word wrap

작업 영역을 시작하면 Dev Workspace 컨테이너에서 /home/user/.m2/settings.xml 파일을 사용할 수 있습니다.

Maven을 사용하면 settings.xml 파일의 사용자 지정 경로를 설정할 수 있습니다. 예를 들면 다음과 같습니다.

$ mvn --settings /home/user/.m2/settings.xml clean install
Copy to Clipboard Toggle word wrap

6.1.1. 이미지 가져오기 보안 생성

조직의 OpenShift Dev Spaces 인스턴스의 OpenShift 클러스터에 있는 Dev Workspace Pod가 인증이 필요한 컨테이너 레지스트리에 액세스할 수 있도록 하려면 이미지 가져오기 보안을 생성합니다.

oc 또는 .dockercfg 파일 또는 config.json 파일을 사용하여 이미지 가져오기 보안을 생성할 수 있습니다.

6.1.1.1. oc를 사용하여 이미지 가져오기 보안 생성

사전 요구 사항

  • 대상 OpenShift 클러스터에 대한 관리 권한이 있는 활성 oc 세션. CLI 시작하기를 참조하십시오.

프로세스

  1. 사용자 프로젝트에서 개인 컨테이너 레지스트리 세부 정보 및 인증 정보를 사용하여 이미지 가져오기 보안을 생성합니다.

    $ oc create secret docker-registry <Secret_name> \
        --docker-server=<registry_server> \
        --docker-username=<username> \
        --docker-password=<password> \
        --docker-email=<email_address>
    Copy to Clipboard Toggle word wrap
  2. 이미지 가져오기 보안에 다음 라벨을 추가합니다.

    $ oc label secret <Secret_name> controller.devfile.io/devworkspace_pullsecret=true controller.devfile.io/watch-secret=true
    Copy to Clipboard Toggle word wrap
6.1.1.2. .dockercfg 파일에서 이미지 가져오기 보안 생성

프라이빗 컨테이너 레지스트리의 인증 정보를 .dockercfg 파일에 이미 저장한 경우 해당 파일을 사용하여 이미지 가져오기 보안을 생성할 수 있습니다.

사전 요구 사항

  • 대상 OpenShift 클러스터에 대한 관리 권한이 있는 활성 oc 세션. CLI 시작하기를 참조하십시오.
  • base64 명령줄 툴은 사용 중인 운영 체제에 설치됩니다.

프로세스

  1. .dockercfg 파일을 Base64로 인코딩합니다.

    $ cat .dockercfg | base64 | tr -d '\n'
    Copy to Clipboard Toggle word wrap
  2. 사용자 프로젝트에 새 OpenShift 보안을 생성합니다.

    apiVersion: v1
    kind: Secret
    metadata:
      name: <Secret_name>
      labels:
        controller.devfile.io/devworkspace_pullsecret: 'true'
        controller.devfile.io/watch-secret: 'true'
    data:
      .dockercfg: <Base64_content_of_.dockercfg>
    type: kubernetes.io/dockercfg
    Copy to Clipboard Toggle word wrap
  3. 보안을 적용합니다.

    $ oc apply -f - <<EOF
    <Secret_prepared_in_the_previous_step>
    EOF
    Copy to Clipboard Toggle word wrap
6.1.1.3. config.json 파일에서 이미지 가져오기 보안 생성

개인 컨테이너 레지스트리에 대한 인증 정보를 $HOME/.docker/config.json 파일에 이미 저장한 경우 해당 파일을 사용하여 이미지 가져오기 보안을 생성할 수 있습니다.

사전 요구 사항

  • 대상 OpenShift 클러스터에 대한 관리 권한이 있는 활성 oc 세션. CLI 시작하기를 참조하십시오.
  • base64 명령줄 툴은 사용 중인 운영 체제에 설치됩니다.

프로세스

  1. $HOME/.docker/config.json 파일을 Base64로 인코딩합니다.

    $ cat config.json | base64 | tr -d '\n'
    Copy to Clipboard Toggle word wrap
  2. 사용자 프로젝트에 새 OpenShift 보안을 생성합니다.

    apiVersion: v1
    kind: Secret
    metadata:
      name: <Secret_name>
      labels:
        controller.devfile.io/devworkspace_pullsecret: 'true'
        controller.devfile.io/watch-secret: 'true'
    data:
      .dockerconfigjson: <Base64_content_of_config.json>
    type: kubernetes.io/dockerconfigjson
    Copy to Clipboard Toggle word wrap
  3. 보안을 적용합니다.

    $ oc apply -f - <<EOF
    <Secret_prepared_in_the_previous_step>
    EOF
    Copy to Clipboard Toggle word wrap

6.1.2. Git-provider 액세스 토큰 사용

GitHub, GitLab, Bitbucket 또는 Microsoft Azure Repos에 대한 OAuth는 조직의 OpenShift Dev Spaces 인스턴스 관리자가 구성해야 합니다. 관리자가 OpenShift Dev Spaces 사용자에 대해 구성할 수 없는 경우 개인 액세스 토큰을 사용하는 해결 방법이 있습니다. OpenShift Dev Spaces 대시보드의 사용자 환경 설정 페이지에서 개인 액세스 토큰을 구성할 수 있습니다. https:// <openshift_dev_spaces_fqdn> /dashboard/#/user-preferences?tab=personal-access-tokens, 또는 네임스페이스의 Kubernetes 시크릿으로 수동으로 적용할 수 있습니다.

액세스 토큰을 Secret으로 마운트하면 OpenShift Dev Spaces Server가 리포지토리의 /.che/.vscode 폴더에 대한 액세스를 포함하여 작업 공간 생성 중에 복제된 원격 리포지토리에 액세스할 수 있습니다.

조직의 OpenShift Dev Spaces 인스턴스의 OpenShift 클러스터의 사용자 프로젝트에 보안을 적용합니다.

시크릿을 적용한 후 GitHub, GitLab, Bitbucket Server 또는 Microsoft Azure Repos에서 호스팅되는 개인 Git 리포지토리 복제를 사용하여 작업 영역을 생성할 수 있습니다.

Git 공급자당 여러 access-token 시크릿을 생성하고 적용할 수 있습니다. 사용자 프로젝트의 각 시크릿을 적용해야 합니다.

사전 요구 사항

  • 클러스터에 로그인했습니다.

    작은 정보

    OpenShift에서 oc 명령줄 툴을 사용하여 클러스터에 로그인할 수 있습니다.

    $ oc login https:// <openshift_dev_spaces_fqdn > --username= <my_user>

프로세스

  1. Git 공급자의 웹 사이트에서 액세스 토큰을 생성합니다.

    중요

    개인 액세스 토큰은 민감한 정보이며 기밀로 유지되어야 합니다. 암호처럼 취급합니다. 인증에 문제가 있는 경우 올바른 토큰을 사용하고 있으며 리포지토리 복제에 적절한 권한이 있는지 확인합니다.

    1. 컴퓨터에서 로컬로 터미널을 엽니다.
    2. 개인 액세스 토큰을 사용하여 리포지토리를 복제하려면 git 명령을 사용합니다. git 명령의 형식은 Git 공급자에 따라 다릅니다. 예를 들어 다음 명령을 사용하여 GitHub 개인 액세스 토큰 확인을 수행할 수 있습니다.
    git clone https://<PAT>@github.com/username/repo.git
    Copy to Clipboard Toggle word wrap

    & lt;PAT >를 개인 액세스 토큰으로 바꾸고 username/repo 를 적절한 리포지토리 경로로 바꿉니다. 토큰이 유효하고 필요한 권한이 있는 경우 복제 프로세스에 성공해야 합니다. 그렇지 않으면 잘못된 개인 액세스 토큰, 사용 권한이 부족하거나 기타 문제가 있음을 나타냅니다.

    중요

    GitHub Enterprise Cloud의 경우 조직 내에서 토큰을 사용할 수 있는 권한이 있는지 확인합니다.

  2. 웹 브라우저에서 https:// <openshift_dev_spaces_fqdn> /api/user/id 로 이동하여 OpenShift Dev Spaces 사용자 ID를 가져옵니다.
  3. 새 OpenShift 시크릿을 준비합니다.

    kind: Secret
    apiVersion: v1
    metadata:
      name: personal-access-token-<your_choice_of_name_for_this_token>
      labels:
        app.kubernetes.io/component: scm-personal-access-token
        app.kubernetes.io/part-of: che.eclipse.org
      annotations:
        che.eclipse.org/che-userid: <devspaces_user_id>
    1
    
        che.eclipse.org/scm-personal-access-token-name: <git_provider_name>
    2
    
        che.eclipse.org/scm-url: <git_provider_endpoint>
    3
    
        che.eclipse.org/scm-organization: <git_provider_organization>
    4
    
    stringData:
      token: <Content_of_access_token>
    type: Opaque
    Copy to Clipboard Toggle word wrap
    1
    OpenShift Dev Spaces 사용자 ID입니다.
    2
    Git 공급자 이름: github 또는 gitlab 또는 bitbucket-server 또는 azure-devops.
    3
    Git 공급자 URL입니다.
    4
    이 행은 azure-devops: Git 공급자 사용자 조직에만 적용됩니다.
  4. https:// <openshift_dev_spaces_fqdn> /api/kubernetes/namespace 를 방문하여 OpenShift Dev Spaces 사용자 네임스페이스를 이름으로 가져옵니다.
  5. 클러스터의 OpenShift Dev Spaces 사용자 네임스페이스로 전환합니다.

    작은 정보

    On OpenShift:

    • oc 명령줄 툴에서 현재 클러스터에 있는 네임스페이스를 반환할 수 있습니다. 현재 네임스페이스를 확인하는 데 사용할 수 있습니다.

      $ oc project

    • 필요한 경우 명령줄에서 OpenShift Dev Spaces 사용자 네임스페이스로 전환할 수 있습니다.

      $ oc project &lt ;your_user_namespace>

  6. 시크릿을 적용합니다.

    작은 정보

    OpenShift에서는 oc 명령줄 툴을 사용할 수 있습니다.

    $ oc apply -f - <<EOF
    <Secret_prepared_in_step_5>
    EOF
    Copy to Clipboard Toggle word wrap

검증

  1. Git 공급자가 호스팅하는 원격 Git 리포지토리의 URL을 사용하여 새 작업 공간을 시작합니다.
  2. 일부 변경 사항을 수행하고 작업 영역에서 원격 Git 리포지토리로 내보냅니다.

6.2. 마운트 ConfigMap

기밀이 아닌 구성 데이터를 작업 공간에 마운트하려면 Kubernetes ConfigMap을 사용합니다.

Kubernetes ConfigMaps를 사용하면 애플리케이션의 구성 값과 같은 중요하지 않은 데이터를 마운트할 수 있습니다.

Kubernetes ConfigMap을 조직의 OpenShift Dev Spaces 인스턴스의 OpenShift 클러스터에 있는 Dev Workspace 컨테이너에 마운트합니다.

사전 요구 사항

  • 대상 OpenShift 클러스터에 대한 관리 권한이 있는 활성 oc 세션. CLI 시작하기를 참조하십시오.
  • 사용자 프로젝트에서 새 ConfigMap을 생성하거나 모든 Dev Workspace 컨테이너에 마운트할 기존 ConfigMap을 확인했습니다.

프로세스

  1. ConfigMap을 마운트하는 데 필요한 레이블을 ConfigMap에 추가합니다.

    $ oc label configmap <ConfigMap_name> \
            controller.devfile.io/mount-to-devworkspace=true \
            controller.devfile.io/watch-configmap=true
    Copy to Clipboard Toggle word wrap
  2. 선택 사항: 주석을 사용하여 ConfigMap이 마운트되는 방법을 구성합니다.

    Expand
    표 6.2. 선택적 주석
    주석설명

    controller.devfile.io/mount-path:

    마운트 경로를 지정합니다.

    기본값은 /etc/config/ <ConfigMap_name>입니다.

    controller.devfile.io/mount-as:

    리소스를 마운트하는 방법( file,subpath 또는 env )을 지정합니다.

    기본값은 file 입니다.

    mount-as:file 은 키와 값을 마운트 경로 내에 파일로 마운트합니다.

    mount-as:subpath 는 subpath 볼륨 마운트를 사용하여 마운트 경로 내에 키와 값을 마운트합니다.

    mount-as:env 는 모든 Dev Workspace 컨테이너에서 키와 값을 환경 변수로 마운트합니다.

예 6.2. ConfigMap을 환경 변수로 마운트

kind: ConfigMap
apiVersion: v1
metadata:
  name: my-settings
  labels:
    controller.devfile.io/mount-to-devworkspace: 'true'
    controller.devfile.io/watch-configmap: 'true'
  annotations:
    controller.devfile.io/mount-as: env
data:
  <env_var_1>: <value_1>
  <env_var_2>: <value_2>
Copy to Clipboard Toggle word wrap

작업 영역을 시작하면 Dev Workspace 컨테이너에서 < env_var_1 > 및 < env_var_2 > 환경 변수를 사용할 수 있습니다.

6.2.1. Git 구성 마운트

참고

user.nameuser.email 필드는 Git-provider 액세스 토큰 또는 OAuth를 통해 생성된 토큰에 의해 OpenShift Dev Spaces에 연결된 git 공급자의 gitconfig 콘텐츠로 자동으로 설정됩니다. 사용자 이름 및 이메일이 공급자의 사용자 프로필 페이지에 설정되어 있는 경우입니다.

아래 지침에 따라 작업 공간에 Git 구성 파일을 마운트합니다.

사전 요구 사항

  • 클러스터에 로그인했습니다.

프로세스

  1. 새 OpenShift ConfigMap을 준비합니다.

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: workspace-userdata-gitconfig-configmap
      namespace: <user_namespace> 
    1
    
      labels:
        controller.devfile.io/mount-to-devworkspace: 'true'
        controller.devfile.io/watch-configmap: 'true'
      annotations:
        controller.devfile.io/mount-as: subpath
        controller.devfile.io/mount-path: /etc/
    data:
      gitconfig: <gitconfig content> 
    2
    Copy to Clipboard Toggle word wrap
    1
    사용자 네임스페이스입니다. https:// <openshift_dev_spaces_fqdn> /api/kubernetes/namespace 를 방문하여 OpenShift Dev Spaces 사용자 네임스페이스를 이름으로 가져옵니다.
    2
    gitconfig 파일 콘텐츠의 내용입니다.
  2. ConfigMap을 적용합니다.

    $ oc apply -f - <<EOF
    <ConfigMap_prepared_in_step_1>
    EOF
    Copy to Clipboard Toggle word wrap

검증

  1. Git 공급자가 호스팅하는 원격 Git 리포지토리의 URL을 사용하여 새 작업 공간을 시작합니다.
  2. 작업 공간이 시작되면 컨테이너에서 새 터미널을 열고 git config --get-regexp user.* 를 실행합니다. Git 사용자 이름과 이메일이 출력에 표시되어야 합니다.

6.3. 제한된 환경에서 아티팩트 리포지토리 활성화

기술 스택을 구성하면 자체 서명된 인증서를 사용하여 사내 리포지토리의 아티팩트로 작업할 수 있습니다.

6.3.1. Maven

제한된 환경에서 실행되는 Maven 작업 영역에서 Maven 아티팩트 리포지토리를 활성화할 수 있습니다.

사전 요구 사항

  • Maven 작업 영역을 실행하고 있지 않습니다.
  • < username> -devspaces 인 사용자 네임스페이스를 알고 있습니다. 여기서 < username >은 OpenShift Dev Spaces 사용자 이름입니다.

프로세스

  1. &lt ;username&gt; -devspaces 네임스페이스에서 TLS 인증서에 대한 보안을 적용합니다.

    kind: Secret
    apiVersion: v1
    metadata:
      name: tls-cer
      annotations:
        controller.devfile.io/mount-path: /home/user/certs
        controller.devfile.io/mount-as: file
      labels:
        controller.devfile.io/mount-to-devworkspace: 'true'
        controller.devfile.io/watch-secret: 'true'
    data:
      tls.cer: >-
        <Base64_encoded_content_of_public_cert> 
    1
    Copy to Clipboard Toggle word wrap
    1
    비활성화된 줄 래핑을 사용한 Base64 인코딩.
  2. &lt ;username&gt; -devspaces 네임스페이스에서 ConfigMap을 적용하여 settings.xml 파일을 생성합니다.

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: settings-xml
      annotations:
        controller.devfile.io/mount-as: subpath
        controller.devfile.io/mount-path: /home/user/.m2
      labels:
        controller.devfile.io/mount-to-devworkspace: 'true'
        controller.devfile.io/watch-configmap: 'true'
    data:
      settings.xml: |
        <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
          <localRepository/>
          <interactiveMode/>
          <offline/>
          <pluginGroups/>
          <servers/>
          <mirrors>
            <mirror>
              <id>redhat-ga-mirror</id>
              <name>Red Hat GA</name>
              <url>https://<maven_artifact_repository_route>/repository/redhat-ga/</url>
              <mirrorOf>redhat-ga</mirrorOf>
            </mirror>
            <mirror>
              <id>maven-central-mirror</id>
              <name>Maven Central</name>
              <url>https://<maven_artifact_repository_route>/repository/maven-central/</url>
              <mirrorOf>maven-central</mirrorOf>
            </mirror>
            <mirror>
              <id>jboss-public-repository-mirror</id>
              <name>JBoss Public Maven Repository</name>
              <url>https://<maven_artifact_repository_route>/repository/jboss-public/</url>
              <mirrorOf>jboss-public-repository</mirrorOf>
            </mirror>
          </mirrors>
          <proxies/>
          <profiles/>
          <activeProfiles/>
        </settings>
    Copy to Clipboard Toggle word wrap
  3. 선택 사항: JBoss EAP 기반 devfile을 사용하는 경우 < username> -devspaces 네임스페이스에 두 번째 settings- xml ConfigMap을 적용하고 동일한 콘텐츠, 다른 이름 및 /home/jboss/.m2 마운트 경로를 적용합니다.
  4. &lt ;username&gt; -devspaces 네임스페이스에서 TrustStore 초기화 스크립트에 대한 ConfigMap을 적용합니다.

    Java 8

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: init-truststore
      annotations:
        controller.devfile.io/mount-as: subpath
        controller.devfile.io/mount-path: /home/user/
      labels:
        controller.devfile.io/mount-to-devworkspace: 'true'
        controller.devfile.io/watch-configmap: 'true'
    data:
      init-java8-truststore.sh: |
        #!/usr/bin/env bash
    
        keytool -importcert -noprompt -file /home/user/certs/tls.cer -trustcacerts -keystore ~/.java/current/jre/lib/security/cacerts -storepass changeit
    Copy to Clipboard Toggle word wrap

    Java 11

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: init-truststore
      annotations:
        controller.devfile.io/mount-as: subpath
        controller.devfile.io/mount-path: /home/user/
      labels:
        controller.devfile.io/mount-to-devworkspace: 'true'
        controller.devfile.io/watch-configmap: 'true'
    data:
      init-java11-truststore.sh: |
        #!/usr/bin/env bash
    
        keytool -importcert -noprompt -file /home/user/certs/tls.cer -cacerts -storepass changeit
    Copy to Clipboard Toggle word wrap

  5. Maven 작업 공간을 시작합니다.
  6. tools 컨테이너에서 새 터미널을 엽니다.
  7. ~/init-truststore.sh 를 실행합니다.

6.3.2. gradle

제한된 환경에서 실행되는 Gradle 작업 영역에서 Gradle 아티팩트 리포지토리를 활성화할 수 있습니다.

사전 요구 사항

  • Gradle 작업 영역을 실행하지 않습니다.

프로세스

  1. TLS 인증서의 보안을 적용합니다.

    kind: Secret
    apiVersion: v1
    metadata:
      name: tls-cer
      annotations:
        controller.devfile.io/mount-path: /home/user/certs
        controller.devfile.io/mount-as: file
      labels:
        controller.devfile.io/mount-to-devworkspace: 'true'
        controller.devfile.io/watch-secret: 'true'
    data:
      tls.cer: >-
        <Base64_encoded_content_of_public_cert> 
    1
    Copy to Clipboard Toggle word wrap
    1
    비활성화된 줄 래핑을 사용한 Base64 인코딩.
  2. TrustStore 초기화 스크립트의 ConfigMap을 적용합니다.

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: init-truststore
      annotations:
        controller.devfile.io/mount-as: subpath
        controller.devfile.io/mount-path: /home/user/
      labels:
        controller.devfile.io/mount-to-devworkspace: 'true'
        controller.devfile.io/watch-configmap: 'true'
    data:
      init-truststore.sh: |
        #!/usr/bin/env bash
    
        keytool -importcert -noprompt -file /home/user/certs/tls.cer -cacerts -storepass changeit
    Copy to Clipboard Toggle word wrap
  3. Gradle init 스크립트의 ConfigMap을 적용합니다.

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: init-gradle
      annotations:
        controller.devfile.io/mount-as: subpath
        controller.devfile.io/mount-path: /home/user/.gradle
      labels:
        controller.devfile.io/mount-to-devworkspace: 'true'
        controller.devfile.io/watch-configmap: 'true'
    data:
      init.gradle: |
        allprojects {
          repositories {
            mavenLocal ()
            maven {
              url "https://<gradle_artifact_repository_route>/repository/maven-public/"
              credentials {
                username "admin"
                password "passwd"
              }
            }
          }
        }
    Copy to Clipboard Toggle word wrap
  4. Gradle 작업 영역을 시작합니다.
  5. tools 컨테이너에서 새 터미널을 엽니다.
  6. ~/init-truststore.sh 를 실행합니다.

6.3.3. npm

제한된 환경에서 실행되는 npm 작업 영역에서 npm 아티팩트 리포지토리를 활성화할 수 있습니다.

사전 요구 사항

  • npm 작업 영역을 실행하지 않습니다.
주의

환경 변수를 설정하는 ConfigMap을 적용하면 작업 공간 부팅 루프가 발생할 수 있습니다.

이 동작이 발생하면 ConfigMap 을 제거하고 devfile을 직접 편집합니다.

프로세스

  1. TLS 인증서의 보안을 적용합니다.

    kind: Secret
    apiVersion: v1
    metadata:
      name: tls-cer
      annotations:
        controller.devfile.io/mount-path: /public-certs
        controller.devfile.io/mount-as: file
      labels:
        controller.devfile.io/mount-to-devworkspace: 'true'
        controller.devfile.io/watch-secret: 'true'
    data:
      nexus.cer: >-
        <Base64_encoded_content_of_public_cert>__ 
    1
    Copy to Clipboard Toggle word wrap
    1
    비활성화된 줄 래핑을 사용한 Base64 인코딩.
  2. 컨테이너에서 다음 환경 변수를 설정하려면 ConfigMap을 적용합니다.

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: disconnected-env
      annotations:
        controller.devfile.io/mount-as: env
      labels:
        controller.devfile.io/mount-to-devworkspace: 'true'
        controller.devfile.io/watch-configmap: 'true'
    data:
      NPM_CONFIG_REGISTRY: >-
        https://<npm_artifact_repository_route>/repository/npm-all/
    Copy to Clipboard Toggle word wrap
6.3.3.1. 자체 서명된 인증서 검증 비활성화

아래 명령을 실행하여 자체 서명된 인증서의 검증을 바이패스하여 SSL/TLS를 비활성화합니다. 이는 잠재적인 보안 위험입니다. 더 나은 솔루션을 위해 NODE_EXTRA_CA_CERTS 를 사용하여 신뢰하는 자체 서명된 인증서를 구성합니다.

프로세스

  • 터미널에서 다음 명령을 실행합니다.

    npm config set strict-ssl false
    Copy to Clipboard Toggle word wrap
6.3.3.2. 인증서를 사용하도록 NODE_EXTRA_CA_CERTS 구성

아래 명령을 사용하여 SSL/TLS 인증서가 있는 위치를 가리키도록 NODE_EXTRA_CA_CERTS를 설정합니다.

프로세스

  • 터미널에서 다음 명령을 실행합니다.

    `export NODE_EXTRA_CA_CERTS=/public-certs/nexus.cer` 
    1
    
    `npm install`
    Copy to Clipboard Toggle word wrap
    1
    /public-certs/ Cryostat.cer 는 Nexus 아티팩트의 자체 서명된 SSL/TLS 인증서의 경로입니다.

6.3.4. Python

제한된 환경에서 실행되는 Python 작업 영역에서 Python 아티팩트 리포지토리를 활성화할 수 있습니다.

사전 요구 사항

  • Python 작업 영역을 실행하지 않습니다.
주의

환경 변수를 설정하는 ConfigMap을 적용하면 작업 공간 부팅 루프가 발생할 수 있습니다.

이 동작이 발생하면 ConfigMap 을 제거하고 devfile을 직접 편집합니다.

프로세스

  1. TLS 인증서의 보안을 적용합니다.

    kind: Secret
    apiVersion: v1
    metadata:
      name: tls-cer
      annotations:
        controller.devfile.io/mount-path: /home/user/certs
        controller.devfile.io/mount-as: file
      labels:
        controller.devfile.io/mount-to-devworkspace: 'true'
        controller.devfile.io/watch-secret: 'true'
    data:
      tls.cer: >-
        <Base64_encoded_content_of_public_cert> 
    1
    Copy to Clipboard Toggle word wrap
    1
    비활성화된 줄 래핑을 사용한 Base64 인코딩.
  2. 컨테이너에서 다음 환경 변수를 설정하려면 ConfigMap을 적용합니다.

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: disconnected-env
      annotations:
        controller.devfile.io/mount-as: env
      labels:
        controller.devfile.io/mount-to-devworkspace: 'true'
        controller.devfile.io/watch-configmap: 'true'
    data:
      PIP_INDEX_URL: >-
        https://<python_artifact_repository_route>/repository/pypi-all/
      PIP_CERT: /home/user/certs/tls.cer
    Copy to Clipboard Toggle word wrap

6.3.5. Go

제한된 환경에서 실행되는 Go 작업 영역에서 Go 아티팩트 리포지토리를 활성화할 수 있습니다.

사전 요구 사항

  • Go 작업 영역을 실행하지 않습니다.
주의

환경 변수를 설정하는 ConfigMap을 적용하면 작업 공간 부팅 루프가 발생할 수 있습니다.

이 동작이 발생하면 ConfigMap 을 제거하고 devfile을 직접 편집합니다.

프로세스

  1. TLS 인증서의 보안을 적용합니다.

    kind: Secret
    apiVersion: v1
    metadata:
      name: tls-cer
      annotations:
        controller.devfile.io/mount-path: /home/user/certs
        controller.devfile.io/mount-as: file
      labels:
        controller.devfile.io/mount-to-devworkspace: 'true'
        controller.devfile.io/watch-secret: 'true'
    data:
      tls.cer: >-
        <Base64_encoded_content_of_public_cert> 
    1
    Copy to Clipboard Toggle word wrap
    1
    비활성화된 줄 래핑을 사용한 Base64 인코딩.
  2. 컨테이너에서 다음 환경 변수를 설정하려면 ConfigMap을 적용합니다.

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: disconnected-env
      annotations:
        controller.devfile.io/mount-as: env
      labels:
        controller.devfile.io/mount-to-devworkspace: 'true'
        controller.devfile.io/watch-configmap: 'true'
    data:
      GOPROXY: >-
        http://<athens_proxy_route>
      SSL_CERT_FILE: /home/user/certs/tls.cer
    Copy to Clipboard Toggle word wrap

6.3.6. NuGet

제한된 환경에서 실행되는 Cryostat 작업 영역에서 Cryostat 아티팩트 리포지토리를 활성화할 수 있습니다.

사전 요구 사항

  • Cryostat 작업 영역을 실행 중이 아닙니다.
주의

환경 변수를 설정하는 ConfigMap을 적용하면 작업 공간 부팅 루프가 발생할 수 있습니다.

이 동작이 발생하면 ConfigMap 을 제거하고 devfile을 직접 편집합니다.

프로세스

  1. TLS 인증서의 보안을 적용합니다.

    kind: Secret
    apiVersion: v1
    metadata:
      name: tls-cer
      annotations:
        controller.devfile.io/mount-path: /home/user/certs
        controller.devfile.io/mount-as: file
      labels:
        controller.devfile.io/mount-to-devworkspace: 'true'
        controller.devfile.io/watch-secret: 'true'
    data:
      tls.cer: >-
        <Base64_encoded_content_of_public_cert> 
    1
    Copy to Clipboard Toggle word wrap
    1
    비활성화된 줄 래핑을 사용한 Base64 인코딩.
  2. ConfigMap을 적용하여 컨테이너에서 TLS 인증서 파일 경로에 대한 환경 변수를 설정합니다.

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: disconnected-env
      annotations:
        controller.devfile.io/mount-as: env
      labels:
        controller.devfile.io/mount-to-devworkspace: 'true'
        controller.devfile.io/watch-configmap: 'true'
    data:
      SSL_CERT_FILE: /home/user/certs/tls.cer
    Copy to Clipboard Toggle word wrap
  3. ConfigMap을 적용하여 nuget.config 파일을 생성합니다.

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: init-nuget
      annotations:
        controller.devfile.io/mount-as: subpath
        controller.devfile.io/mount-path: /projects
      labels:
        controller.devfile.io/mount-to-devworkspace: 'true'
        controller.devfile.io/watch-configmap: 'true'
    data:
      nuget.config: |
        <?xml version="1.0" encoding="UTF-8"?>
        <configuration>
          <packageSources>
            <add key="nexus2" value="https://<nuget_artifact_repository_route>/repository/nuget-group/"/>
          </packageSources>
          <packageSourceCredentials>
            <nexus2>
                <add key="Username" value="admin" />
                <add key="Password" value="passwd" />
            </nexus2>
          </packageSourceCredentials>
        </configuration>
    Copy to Clipboard Toggle word wrap

7장. 작업 공간에 영구 스토리지 요청

OpenShift Dev Spaces 작업 공간 및 작업 공간 데이터는 임시이며 작업 공간이 중지되면 손실됩니다.

작업 공간이 중지되는 동안 영구 스토리지에 작업 공간 상태를 유지하려면 조직의 OpenShift Dev Spaces 인스턴스의 OpenShift 클러스터에서 Dev Workspace 컨테이너에 대한 Kubernetes PersistentVolume(PV)을 요청합니다.

devfile 또는 Kubernetes PersistentVolumeClaim(PVC)을 사용하여 PV를 요청할 수 있습니다.

PV의 예로는 임시이 아닌 작업 공간에 대해 기본적으로 마운트된 작업 공간의 /projects/ 디렉터리가 있습니다.

영구 볼륨은 비용이 많이 듭니다. 영구 볼륨을 연결하면 작업 공간 시작 속도가 느려집니다.

주의

ReadWriteOnce PV 를 사용하여 동시에 실행 중인 다른 작업 공간을 시작하면 실패할 수 있습니다.

7.1. devfile에서 영구 스토리지 요청

작업 공간에 자체 영구 스토리지가 필요한 경우 devfile에서 PersistentVolume(PV)을 요청하고 OpenShift Dev Spaces는 필요한 PersistentVolumeClaims를 자동으로 관리합니다.

사전 요구 사항

  • 작업 공간을 시작하지 않았습니다.

프로세스

  1. devfile에 볼륨 구성 요소를 추가합니다.

    ...
    components:
      ...
      - name: <chosen_volume_name>
        volume:
          size: <requested_volume_size>G
      ...
    Copy to Clipboard Toggle word wrap
  2. devfile에서 관련 컨테이너에 대한 volumeMount 를 추가합니다.

    ...
    components:
      - name: ...
        container:
          ...
          volumeMounts:
            - name: <chosen_volume_name_from_previous_step>
              path: <path_where_to_mount_the_PV>
          ...
    Copy to Clipboard Toggle word wrap

예 7.1. 컨테이너에 작업 공간 PV를 프로비저닝하는 devfile

다음 devfile으로 작업 영역을 시작하면 캐시 PV가 ./ cache 컨테이너 경로의 golang 컨테이너에 프로비저닝됩니다.

schemaVersion: 2.1.0
metadata:
  name: mydevfile
components:
  - name: golang
    container:
      image: golang
      memoryLimit: 512Mi
      mountSources: true
      command: ['sleep', 'infinity']
      volumeMounts:
        - name: cache
          path: /.cache
  - name: cache
    volume:
      size: 2Gi
Copy to Clipboard Toggle word wrap

7.2. PVC에서 영구 스토리지 요청

다음과 같은 경우 PVC(PersistentVolumeClaim)를 적용하여 작업 공간에 PersistentVolume(PV)을 요청할 수 있습니다.

  • 모든 프로젝트에 PV가 필요한 것은 아닙니다.
  • PV 라이프사이클은 단일 작업 공간의 라이프사이클을 초과합니다.
  • PV에 포함된 데이터는 작업 공간 간에 공유됩니다.
작은 정보

작업 공간이 임시이고 devfile에 controller.devfile.io/storage-type: ephemeral 속성이 포함된 경우에도 Dev Workspace 컨테이너에 PVC를 적용할 수 있습니다.

사전 요구 사항

  • 작업 공간을 시작하지 않았습니다.
  • 대상 OpenShift 클러스터에 대한 관리 권한이 있는 활성 oc 세션. CLI 시작하기를 참조하십시오.
  • 모든 Dev Workspace 컨테이너에 마운트할 사용자 프로젝트에 PVC가 생성됩니다.

프로세스

  1. PVC에 controller.devfile.io/mount-to-devworkspace: true 라벨을 추가합니다.

    $ oc label persistentvolumeclaim <PVC_name> \ controller.devfile.io/mount-to-devworkspace=true
    Copy to Clipboard Toggle word wrap
  2. 선택 사항: 주석을 사용하여 PVC가 마운트되는 방법을 구성합니다.

    Expand
    표 7.1. 선택적 주석
    주석설명

    controller.devfile.io/mount-path:

    PVC의 마운트 경로입니다.

    기본값은 /tmp/ <PVC_name>입니다.

    controller.devfile.io/read-only:

    'true' 또는 'false' 로 설정하여 PVC를 읽기 전용으로 마운트할지 여부를 지정합니다.

    기본값은 'false' 로, PVC가 읽기/쓰기로 마운트됩니다.

예 7.2. 읽기 전용 PVC 마운트

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: <pvc_name>
  labels:
    controller.devfile.io/mount-to-devworkspace: 'true'
  annotations:
    controller.devfile.io/mount-path: </example/directory> 
1

    controller.devfile.io/read-only: 'true'
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi 
2

  storageClassName: <storage_class_name> 
3

  volumeMode: Filesystem
Copy to Clipboard Toggle word wrap
1
마운트된 PV는 작업 공간의 에서</example/directory> 사용할 수 있습니다.
2
요청된 스토리지의 크기 값의 예.
3
클레임에 필요한 StorageClass의 이름입니다. 기본 StorageClass를 사용하려면 이 행을 제거합니다.

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
    Copy to Clipboard Toggle word wrap

    예 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
    Copy to Clipboard Toggle word wrap
작은 정보

이 명령에 --watch 플래그를 추가하여 PHASE 변경 사항을 라이브로 볼 수 있습니다.

참고

클러스터에 대한 관리자 권한이 있는 사용자는 --all-namespaces 플래그를 포함하여 모든 OpenShift Dev Spaces 사용자의 모든 작업 공간을 나열할 수 있습니다.

8.1.2. 작업 공간 생성

사용 사례에서 OpenShift Dev Spaces 대시보드 사용을 허용하지 않는 경우 클러스터에 사용자 정의 리소스를 적용하여 OpenShift API로 작업 공간을 생성할 수 있습니다.

참고

OpenShift Dev Spaces 대시보드를 통해 작업 공간을 생성하면 명령줄 사용과 비교하여 사용자 환경 및 구성 이점이 향상됩니다.

  • 사용자는 자동으로 클러스터에 로그인됩니다.
  • OpenShift 클라이언트가 자동으로 작동합니다.
  • OpenShift Dev Spaces 및 해당 구성 요소는 대상 Git 리포지토리의 devfile을 클러스터의 DevWorkspaceDevWorkspaceTemplate 사용자 정의 리소스로 자동으로 변환합니다.
  • 작업 공간에 대한 액세스는 기본적으로 작업 공간의 DevWorkspace 에서 routingClass: che 를 사용하여 보호됩니다.
  • DevWorkspaceOperatorConfig 구성에 대한 인식은 OpenShift Dev Spaces에서 관리합니다.
  • CheCluster 사용자 정의 리소스에 지정된 spec.devEnvironments 의 구성 인식은 다음을 포함합니다.

    • 영구 스토리지 전략은 devEnvironments.storage 를 사용하여 지정합니다.
    • 기본 IDE는 devEnvironments.defaultEditor 로 지정됩니다.
    • 기본 플러그인은 devEnvironments.defaultPlugins 로 지정됩니다.
    • 컨테이너 빌드 구성은 devEnvironments.containerBuildConfiguration 을 사용하여 지정됩니다.

사전 요구 사항

프로세스

  1. DevWorkspace 사용자 정의 리소스를 준비하려면 대상 Git 리포지토리의 devfile 내용을 복사합니다.

    예 8.2. schemaVersion을 사용하여 devfile 콘텐츠 복사: 2.2.0

    components:
      - name: tooling-container
        container:
          image: quay.io/devfile/universal-developer-image:ubi8-latest
    Copy to Clipboard Toggle word wrap
    작은 정보
  2. 이전 단계의 devfile 콘텐츠를 spec.template 필드 아래에 붙여넣는 DevWorkspace 사용자 정의 리소스를 생성합니다.

    예 8.3. DevWorkspace 사용자 정의 리소스

    kind: DevWorkspace
    apiVersion: workspace.devfile.io/v1alpha2
    metadata:
      name: my-devworkspace
    1
    
      namespace: user1-dev
    2
    
    spec:
      routingClass: che
      started: true
    3
    
      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
    Copy to Clipboard Toggle word wrap
    1
    DevWorkspace 사용자 정의 리소스의 이름입니다. 새 작업 공간의 이름이 됩니다.
    2
    새 작업 공간의 대상 프로젝트인 사용자 네임스페이스입니다.
    3
    DevWorkspace 사용자 정의 리소스를 만들 때 작업 공간을 시작해야 하는지 여부를 결정합니다.
    4
    5
    시작할 때 작업 공간에 복제할 Git 리포지토리에 대한 세부 정보입니다.
    6
    작업 공간 컨테이너 및 볼륨 구성 요소와 같은 구성 요소 목록입니다.
  3. DevWorkspace 사용자 정의 리소스를 클러스터에 적용합니다.

검증

  1. DevWorkspacePHASE 상태를 확인하여 작업 공간이 시작되었는지 확인합니다.

    $ oc get devworkspaces -n <user_project> --watch
    Copy to Clipboard Toggle word wrap

    예 8.4. 출력 결과

    NAMESPACE        NAME                  DEVWORKSPACE ID             PHASE      INFO
    user1-dev        my-devworkspace       workspacedf64e4a492cd4701   Starting   Waiting for workspace deployment
    Copy to Clipboard Toggle word wrap
  2. 작업 공간이 성공적으로 시작되면 oc get devworkspaces 명령의 출력에서 PHASE 상태가 Running 으로 변경됩니다.

    예 8.5. 출력 결과

    NAMESPACE            NAME                  DEVWORKSPACE ID             PHASE      INFO
    user1-dev            my-devworkspace       workspacedf64e4a492cd4701   Running    https://url-to-workspace.com
    Copy to Clipboard Toggle word wrap

    그런 다음 다음 옵션 중 하나를 사용하여 작업 영역을 열 수 있습니다.

    • 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>
    Copy to Clipboard Toggle word wrap

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>
    Copy to Clipboard Toggle word wrap

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>
    Copy to Clipboard Toggle word wrap

8.2. 자동 OpenShift 토큰 삽입

이 섹션에서는 OpenShift 클러스터에 대해 OpenShift Dev Spaces CLI 명령을 실행할 수 있는 작업 공간 컨테이너에 자동으로 삽입되는 OpenShift 사용자 토큰을 사용하는 방법을 설명합니다.

프로세스

  1. OpenShift Dev Spaces 대시보드를 열고 작업 공간을 시작합니다.
  2. 작업 공간이 시작되면 OpenShift Dev Spaces CLI가 포함된 컨테이너에서 터미널을 엽니다.
  3. OpenShift 클러스터에 대해 명령을 실행할 수 있는 OpenShift Dev Spaces CLI 명령을 실행합니다. CLI는 애플리케이션 배포, 클러스터 리소스 검사 및 관리, 로그 보기에 사용할 수 있습니다. OpenShift 사용자 토큰은 명령을 실행하는 동안 사용됩니다.

주의

자동 토큰 삽입은 현재 OpenShift 인프라에서만 작동합니다.

9장. Dev Spaces 문제 해결

이 섹션에서는 사용자가 충돌할 수 있는 가장 빈번한 문제에 대한 문제 해결 절차를 제공합니다.

9.1. Dev Spaces 작업 공간 로그 보기

문제가 발생할 경우 OpenShift Dev Spaces 로그를 확인하여 백그라운드 프로세스를 더 잘 이해하고 디버깅할 수 있습니다.

IDE 확장이 잘못되었거나 디버깅이 필요합니다.
로그는 편집기에서 로드한 플러그인을 나열합니다.
컨테이너가 메모리 부족
로그에 OOMKilled 오류 메시지가 포함됩니다. 컨테이너에서 실행되는 프로세스는 컨테이너에서 사용할 수 있도록 구성된 것보다 더 많은 메모리를 요청하려고 했습니다.
프로세스가 메모리 부족
로그에 OutOfMemoryException 과 같은 오류 메시지가 포함되어 있습니다. 컨테이너 내부의 프로세스는 컨테이너 알림 없이 메모리 부족을 실행했습니다.

9.1.1. CLI의 Workspace 로그

OpenShift CLI를 사용하여 OpenShift Dev Spaces 작업 공간 로그를 확인할 수 있습니다.

사전 요구 사항

  • OpenShift Dev Spaces 작업 공간 &lt ;workspace_name> 이 실행 중입니다.
  • OpenShift CLI 세션은 이 작업 영역을 포함하는 OpenShift 프로젝트 < namespace_name >에 액세스할 수 있습니다.

프로세스

  • < namespace _name> 프로젝트의 < workspace_name > 작업 공간을 실행하는 Pod에서 로그를 가져옵니다.

    $ oc logs --follow --namespace='<workspace_namespace>' \
      --selector='controller.devfile.io/devworkspace_name=<workspace_name>'
    Copy to Clipboard Toggle word wrap

9.1.2. OpenShift 콘솔의 Workspace 로그

OpenShift 콘솔을 사용하여 OpenShift Dev Spaces 작업 공간 로그를 확인할 수 있습니다.

프로세스

  1. OpenShift Dev Spaces 대시보드에서 Workspace 로 이동합니다.
  2. 작업 공간 이름을 클릭하여 작업 공간 개요 페이지를 표시합니다. 이 페이지에는 OpenShift 프로젝트 이름 < project_name>이 표시됩니다.
  3. 오른쪽 상단에 있는 애플리케이션 메뉴를 클릭하고 OpenShift 콘솔 링크를 클릭합니다.
  4. 관리자 화면에서 OpenShift 콘솔에서 다음 단계를 실행합니다.
  5. 워크로드 > Pod 를 클릭하여 모든 활성 작업 공간 목록을 확인합니다.
  6. 프로젝트 드롭다운 메뉴에서 < project_name> 프로젝트를 선택하여 검색 범위를 좁힙니다.
  7. 작업 영역을 실행하는 실행 중인 Pod의 이름을 클릭합니다. 세부 정보 탭에는 추가 정보가 있는 모든 컨테이너 목록이 포함되어 있습니다.
  8. 로그 탭으로 이동합니다.

9.1.3. 편집기의 언어 서버 및 디버그 어댑터 로그

Microsoft Visual Studio Code - 작업 영역에서 실행되는 오픈 소스 편집기에서 설치된 언어 서버 및 디버그 어댑터 확장을 구성하여 로그를 볼 수 있습니다.

프로세스

  1. 확장 기능을 구성합니다. File > Preferences > Settings 을 클릭하고 Extensions 섹션을 확장하고, 확장을 검색하고, trace.server 또는 유사한 구성이 있는 경우 verbose 로 설정합니다. 추가 구성은 확장 설명서를 참조하십시오.
  2. 보기 → 출력을 클릭하고 출력 보기 의 드롭다운 목록에서 언어 서버를 선택하여 언어 서버 로그를 확인합니다.

추가 리소스

9.2. 느린 작업 공간 문제 해결

작업 공간을 시작하는 데 시간이 오래 걸릴 수 있습니다. 튜닝을 사용하면 이 시작 시간을 줄일 수 있습니다. 옵션에 따라 관리자 또는 사용자는 튜닝을 수행할 수 있습니다.

이 섹션에는 작업 공간을 더 빨리 시작하거나 작업 공간 런타임 성능을 개선하기 위한 몇 가지 튜닝 옵션이 포함되어 있습니다.

9.2.1. 작업 공간 시작 시간 개선

이미지 가져오기를 사용하여 이미지 캐싱

역할: 관리자

작업 영역을 시작할 때 OpenShift는 레지스트리에서 이미지를 가져옵니다. 작업 공간에는 OpenShift가 포드의 이미지(컨테이너당 하나씩)를 가져오는 많은 컨테이너가 포함될 수 있습니다. 이미지 크기와 대역폭에 따라 시간이 오래 걸릴 수 있습니다.

이미지 Puller는 각 OpenShift 노드에서 이미지를 캐시할 수 있는 툴입니다. 따라서 이미지를 미리 가져오면 시작 시간이 단축될 수 있습니다. https://access.redhat.com/documentation/en-us/red_hat_openshift_dev_spaces/3.18/html-single/administration_guide/index#administration-guide:caching-images-for-faster-workspace-start 을 참조하십시오.

더 나은 스토리지 유형 선택

역할: 관리자 및 사용자

모든 작업 공간에는 공유 볼륨이 연결되어 있습니다. 이 볼륨은 프로젝트 파일을 저장하므로 작업 영역을 다시 시작할 때 변경 사항을 계속 사용할 수 있습니다. 스토리지에 따라 연결 시간이 몇 분 정도 걸릴 수 있으며 I/O 속도가 느려질 수 있습니다.

오프라인 설치

역할: 관리자

OpenShift Dev Spaces의 구성 요소는 OCI 이미지입니다. 처음부터 모든 항목을 사용할 수 있어야 하므로 런타임 시 추가 다운로드를 줄이기 위해 Red Hat OpenShift Dev Spaces를 오프라인 모드로 설정합니다. https://access.redhat.com/documentation/en-us/red_hat_openshift_dev_spaces/3.18/html-single/administration_guide/index#administration-guide:installing-che-in-a-restricted-environment 을 참조하십시오.

공용 끝점 수 감소

역할: 관리자

OpenShift는 각 끝점에 OpenShift Route 오브젝트를 생성하고 있습니다. 기본 구성에 따라 이 생성 속도가 느려질 수 있습니다.

이 문제를 방지하려면 노출을 줄입니다. 예를 들어 컨테이너 내부에서 수신 대기하는 새 포트를 자동으로 감지하고 로컬 IP 주소(127.0.0.1)를 사용하여 프로세스의 트래픽을 리디렉션하기 위해 Microsoft Visual Code에는 세 가지 선택적 경로가 있습니다.

끝점 수를 줄이고 모든 플러그인의 끝점을 확인하면 작업 공간 시작이 더 빨라질 수 있습니다.

9.2.2. 작업 공간 런타임 성능 개선

충분한 CPU 리소스 제공

플러그인은 CPU 리소스를 사용합니다. 예를 들어 플러그인이 Cryostat 기능을 제공하는 경우 CPU 리소스를 더 추가하면 성능이 향상될 수 있습니다.

devfile 정의 devfile.yaml 의 CPU 설정이 올바른지 확인합니다.

components:
  - name: tools
    container:
      image: quay.io/devfile/universal-developer-image:ubi8-latest
      cpuLimit: 4000m 
1

      cpuRequest: 1000m 
2
Copy to Clipboard Toggle word wrap
1
CPU 제한을 지정합니다.
2
CPU 요청을 지정합니다.
충분한 메모리 제공

플러그인은 CPU 및 메모리 리소스를 사용합니다. 예를 들어 플러그인이 Cryostat 기능을 제공하는 경우 데이터를 수집하면 컨테이너에 할당된 모든 메모리를 사용할 수 있습니다.

컨테이너에 더 많은 메모리를 제공하면 성능이 향상될 수 있습니다. devfile 정의 devfile.yaml 파일의 메모리 설정이 올바른지 확인합니다.

components:
  - name: tools
    container:
      image: quay.io/devfile/universal-developer-image:ubi8-latest
      memoryLimit: 6G 
1

      memoryRequest: 512Mi 
2
Copy to Clipboard Toggle word wrap
1
메모리 제한을 지정합니다.
2
메모리 요청을 지정합니다.

9.3. 네트워크 문제 해결

이 섹션에서는 네트워크 정책과 관련된 문제를 방지하거나 해결하는 방법을 설명합니다. OpenShift Dev Spaces에는 WebSocket 보안(WSS) 연결을 사용할 수 있어야 합니다. 보안 WebSocket 연결은 잘못된 프록시의 간섭 위험을 줄이기 때문에 기밀성과 신뢰성을 향상시킵니다.

사전 요구 사항

  • 포트 443의 WebSocket 보안(WSS) 연결은 네트워크에서 사용할 수 있어야 합니다. 방화벽 및 프록시에는 추가 구성이 필요할 수 있습니다.

프로세스

  1. 브라우저가 WebSocket 프로토콜을 지원하는지 확인합니다. 웹 소켓 테스트 검색을 참조하십시오.
  2. 포트 443의 방화벽 설정: WebSocket Secure (WSS) 연결을 사용할 수 있어야 합니다.
  3. 프록시 서버 설정 확인: 프록시는 포트 443에서 WebSocket 보안(WSS) 연결을 전송 및 가로채기합니다.

9.4. 웹 뷰 로드 오류 문제 해결

Microsoft Visual Studio Code - 비공개 검색 창에서 오픈 소스 를 사용하는 경우 오류 메시지: 웹 뷰 로드 중 오류: 서비스 작업자를 등록할 수 없습니다.

이는 다음 브라우저에 영향을 미치는 알려진 문제입니다.

  • Google Chrome in Incognito 모드
  • Private Browsing 모드에서 Mozilla Firefox
Expand
표 9.1. 개인 검색 창에서 웹 뷰 오류 처리
브라우저

해결방법

Google Chrome

설정개인 정보 보호 및 보안쿠키 및 기타 사이트 데이터모든 쿠키 허용 으로 이동합니다.

Mozilla Firefox

Private Browsing 모드에서는 웹 뷰가 지원되지 않습니다. 자세한 내용은 보고된 버그 를 참조하십시오.

법적 공지

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat