6.2. 온프레미스 Open VSX 실행
아래 지침에 따라 OpenShift Dev Spaces 및 OpenShift 환경과 완전히 통합된 온프레미스 Eclipse Open VSX 확장 레지스트리를 배포하고 구성합니다. 두 가지 설정 경로 중 하나를 선택합니다. OpenShift Dev Spaces 작업 공간 사용 또는 OpenShift CLI(oc
)를 사용하여 보안 내부 Open VSX 인스턴스를 설정할 수 있습니다. 여기에는 필요한 OpenShift 프로젝트 생성, Open VSX 구성 요소 배포, 확장 프로그램 게시 및 OpenShift Dev Spaces 레지스트리 통합이 포함됩니다.
6.2.1. OpenShift Dev Spaces 인스턴스 사용 링크 복사링크가 클립보드에 복사되었습니다!
사전 요구 사항
- 클러스터 관리자로 로그인해야 합니다.
프로세스
Open VSX 리포지토리를 사용하여 작업 영역을 시작합니다.
다음 Eclipse Open VSX 리포지토리 를 사용하여 작업 공간을 생성합니다.
주의.devfile.yaml 에는 IBM Power(ppc64le) 또는 IBM Z(s390x) 아키텍처를 지원하지 않는
elasticsearch
구성 요소가 포함되어 있습니다. 이러한 아키텍처에서 작업 공간을 성공적으로 시작하는 유일한 옵션은 devfile에서 이 구성 요소를 제거하는 것입니다. 또는 작업 영역을 시작하지 않고 Open VSX 를 별도로 실행하는 방법을 설명하는 OpenShift CLI 툴 설명서를 참조할 수 있습니다.작은 정보필요한 모든 명령을 포함한 환경은
.devfile.yaml
파일에 정의됩니다.Open VSX용 새 OpenShift 프로젝트를 만듭니다.
2.1을 실행합니다. 작업 공간(
.Terminal
작업의 네임스페이스를 생성합니다. OpenVSX의 네임스페이스 생성Run Task… devfile 2.1에서 OpenVSX openvsx
라는 새 프로젝트를 클러스터에 생성해야 합니다.Open VSX를 배포합니다.
2.4.1을 실행합니다. 작업 공간(
를 배포합니다. 이 작업에서는 Open VSX 서버 이미지를 제공하도록 요청합니다. 터미널에Terminal
작업을 배포합니다. 사용자 지정 OpenVSXRun Task… devfile 2.4.1에 사용자 정의 OpenVSX registry.redhat.io/devspaces/openvsx-rhel9:3.23
을 입력합니다. 결과적으로 OpenShift 콘솔에서PostgreSQL 데이터베이스
및Open VSX 서버
두 가지 구성 요소가 있는openvsx
프로젝트를 찾을 수 있습니다. 또한 Open VSX UI는 OpenShift 클러스터의 노출된 경로를 통해 액세스할 수 있어야 합니다.작은 정보모든 배포 정보는
OVSX_PAT_BASE64
와 같은 몇 가지 기본값이 있는deploy/openshift/openvsx-deployment-no-es.yml
파일에 설명되어 있습니다.PAT가 있는 Open VSX 사용자를 데이터베이스에 추가합니다.
2.5를 실행합니다. PAT를 포함하는 OpenVSX 사용자를 작업 공간(
에 추가합니다. 명령은 Open VSX 사용자 이름 및 사용자 PAT를 요청합니다. Enter를 클릭하면 기본값을 사용할 수 있습니다.Terminal
작업에 추가합니다. PAT를 사용하는 OpenVSX 사용자를 DBRun Task… devfile 2.5)의 DB 중요사용자 PAT는 배포 파일에 지정된
OVSX_PAT_BASE64
의 디코딩된 값과 일치해야 합니다.OVSX_PAT_BASE64
가 업데이트된 경우 새 토큰의 디코딩된 값을 사용자 PAT로 사용합니다.내부 Open VSX를 사용하도록 OpenShift Dev Spaces를 구성합니다.
2.6을 실행합니다. 작업 공간(
.Terminal
작업을 사용하도록 Che를 구성합니다. 내부 OpenVSX 레지스트리를 사용하도록 Che를 구성합니다Run Task… devfile 2.6에서 내부 Open VSX 레지스트리 CheCluster
사용자 정의 리소스에 패치를 적용하여 확장 레지스트리에 지정된 Open VSX URL을 사용하도록 구성을 업데이트합니다..vsix
파일의 확장자를 게시합니다.처음에 Open VSX 레지스트리는 확장을 제공하지 않습니다.
openvsx-server
Pod가 실행 중이고 Ready 상태에서 레지스트리에 확장 기능을 게시할 수 있습니다.2.8입니다. VSIX 파일의 Visual Studio Code Extension을 게시
명령은.vsix
파일에서 직접 로컬 Open VSX 레지스트리에 확장자를 게시합니다. 확장 프로그램의네임스페이스
이름과.vsix
파일의 경로를 입력하라는 메시지를 표시합니다.확장 목록을 게시합니다.
2.9입니다. Visual Studio Code Extensions
명령의 게시 목록은 내부 Open VSX 레지스트리에 다운로드 URL을 기반으로 사전 정의된 Microsoft Visual Studio Code 확장 목록을 게시하는 프로세스를 자동화합니다.작은 정보명령은 게시할 각 확장자에 대한
.vsix
파일의 URL을 나열하는deploy/openshift/extensions.txt
파일에서 읽습니다. 확장 기능을 Open VSX에 게시하려면 필요에 따라extensions.txt
파일을 업데이트한 다음 2.9를 실행합니다. 작업 공간의 Visual Studio Code Extensions 작업 목록 게시:Terminal
.Run Task… devfile 2.9. Visual Studio Code Extensions의 게시 OpenShift Dev Spaces에서 내부 Open VSX를 사용하는지 확인합니다.
모든 작업 영역을 시작하고 OpenVSX OpenShift 프로젝트에서
내부
경로를 열어 작업 공간 IDE의 확장 보기에서 사용 가능한 확장을 확인합니다.
6.2.2. OpenShift CLI(oc) 툴 사용 링크 복사링크가 클립보드에 복사되었습니다!
사전 요구 사항
-
설치된
oc
툴입니다. OpenShift Dev Spaces가 클러스터 관리자로 배포된 OpenShift 클러스터에 로그인합니다.
작은 정보$ oc login https://<openshift_dev_spaces_fqdn> --username=<my_user>
프로세스
Open VSX용 새 OpenShift 프로젝트를 만듭니다.
oc new-project openvsx
oc new-project openvsx
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Open VSX를 배포합니다.
openvsx-deployment-no-es.yml 파일을 파일 시스템에 저장한 다음 해당 디렉터리로 이동한 후 명령을 실행하여 Open VSX를 배포합니다.
oc process -f openvsx-deployment-no-es.yml \ -p OPENVSX_SERVER_IMAGE=registry.redhat.io/devspaces/openvsx-rhel9:3.23 \ | oc apply -f -
oc process -f openvsx-deployment-no-es.yml \ -p OPENVSX_SERVER_IMAGE=registry.redhat.io/devspaces/openvsx-rhel9:3.23 \ | oc apply -f -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openvsx
네임스페이스의 모든 pod가 실행 중이고 준비되었는지 확인합니다. 모든 Pod가 준비되는 데 몇 분이 걸릴 수 있습니다. 다음 명령을 실행합니다.oc get pods -n openvsx \ -o jsonpath='{range .items[*]}{@.metadata.name}{"\t"}{@.status.phase}{"\t"}{.status.containerStatuses[*].ready}{"\n"}{end}'
oc get pods -n openvsx \ -o jsonpath='{range .items[*]}{@.metadata.name}{"\t"}{@.status.phase}{"\t"}{.status.containerStatuses[*].ready}{"\n"}{end}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PAT가 있는 Open VSX 사용자를 데이터베이스에 추가합니다.
PostgreSQL 포드 찾기:
export POSTGRESQL_POD_NAME=$(oc get pods -n openvsx \ -o jsonpath="{.items[*].metadata.name}" | tr ' ' '\n' | grep '^postgresql' | head -n 1)
export POSTGRESQL_POD_NAME=$(oc get pods -n openvsx \ -o jsonpath="{.items[*].metadata.name}" | tr ' ' '\n' | grep '^postgresql' | head -n 1)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenVSX 데이터베이스에 사용자 이름을 삽입합니다.
oc exec -n openvsx "$POSTGRESQL_POD_NAME" -- bash -c \ "psql -d openvsx -c \"INSERT INTO user_data (id, login_name, role) VALUES (1001, 'eclipse-che', 'privileged');\""
oc exec -n openvsx "$POSTGRESQL_POD_NAME" -- bash -c \ "psql -d openvsx -c \"INSERT INTO user_data (id, login_name, role) VALUES (1001, 'eclipse-che', 'privileged');\""
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenVSX 데이터베이스에 사용자 PAT를 삽입합니다.
oc exec -n openvsx "$POSTGRESQL_POD_NAME" -- bash -c \ "psql -d openvsx -c \"INSERT INTO personal_access_token (id, user_data, value, active, created_timestamp, accessed_timestamp, description) VALUES (1001, 1001, 'eclipse_che_token', true, current_timestamp, current_timestamp, 'extensions publisher');\""
oc exec -n openvsx "$POSTGRESQL_POD_NAME" -- bash -c \ "psql -d openvsx -c \"INSERT INTO personal_access_token (id, user_data, value, active, created_timestamp, accessed_timestamp, description) VALUES (1001, 1001, 'eclipse_che_token', true, current_timestamp, current_timestamp, 'extensions publisher');\""
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 내부 Open VSX를 사용하도록 OpenShift Dev Spaces를 구성합니다.
export CHECLUSTER_NAME="$(oc get checluster --all-namespaces -o json | jq -r '.items[0].metadata.name')" && export CHECLUSTER_NAMESPACE="$(oc get checluster --all-namespaces -o json | jq -r '.items[0].metadata.namespace')" && export OPENVSX_ROUTE_URL="$(oc get route internal -n openvsx -o jsonpath='{.spec.host}')" && export PATCH='{"spec":{"components":{"pluginRegistry":{"openVSXURL":"https://'"$OPENVSX_ROUTE_URL"'"}}}}' && oc patch checluster "${CHECLUSTER_NAME}" --type=merge --patch "${PATCH}" -n "${CHECLUSTER_NAMESPACE}"
export CHECLUSTER_NAME="$(oc get checluster --all-namespaces -o json | jq -r '.items[0].metadata.name')" && export CHECLUSTER_NAMESPACE="$(oc get checluster --all-namespaces -o json | jq -r '.items[0].metadata.namespace')" && export OPENVSX_ROUTE_URL="$(oc get route internal -n openvsx -o jsonpath='{.spec.host}')" && export PATCH='{"spec":{"components":{"pluginRegistry":{"openVSXURL":"https://'"$OPENVSX_ROUTE_URL"'"}}}}' && oc patch checluster "${CHECLUSTER_NAME}" --type=merge --patch "${PATCH}" -n "${CHECLUSTER_NAMESPACE}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 작은 정보OpenShift Dev Spaces에서 Open VSX 레지스트리 URL을 구성하는 방법에 대한 자세한 내용은 6.3절. “VSX 레지스트리 URL 열기” 을 참조하십시오.
ovsx
명령을 사용하여 Visual Studio Code 확장을 게시합니다.참고처음에 Open VSX 레지스트리는 확장을 제공하지 않습니다.
모든 항목이 구성되면 다음 단계는 openvsx-server 컨테이너 내부에서 Visual Studio Code 확장을 게시하는 것입니다. 이렇게 하려면 확장
네임스페이스
이름(게시용으로 사용되는)의 두 가지 정보, .vsix 확장 패키지의 다운로드 URL이 필요합니다. 이 정보가 있으면 다음 명령을 실행하여 확장 기능을 게시합니다.Open VSX 서버를 실행하는 Pod의 이름을 검색합니다.
export OVSX_POD_NAME=$(oc get pods -n openvsx -o jsonpath="{.items[*].metadata.name}" | tr ' ' '\n' | grep ^openvsx-server)
export OVSX_POD_NAME=$(oc get pods -n openvsx -o jsonpath="{.items[*].metadata.name}" | tr ' ' '\n' | grep ^openvsx-server)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow .vsix 확장을 다운로드합니다.
oc exec -n openvsx "${OVSX_POD_NAME}" -- bash -c "wget -O /tmp/extension.vsix EXTENSION_DOWNLOAD_URL "
oc exec -n openvsx "${OVSX_POD_NAME}" -- bash -c "wget -O /tmp/extension.vsix EXTENSION_DOWNLOAD_URL "
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 확장 네임스페이스를 생성합니다.
oc exec -n openvsx "${OVSX_POD_NAME}" -- bash -c "ovsx create-namespace EXTENSION_NAMESPACE_NAME" || true
oc exec -n openvsx "${OVSX_POD_NAME}" -- bash -c "ovsx create-namespace EXTENSION_NAMESPACE_NAME" || true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 확장을 게시합니다.
oc exec -n openvsx "${OVSX_POD_NAME}" -- bash -c "ovsx publish /tmp/extension.vsix"
oc exec -n openvsx "${OVSX_POD_NAME}" -- bash -c "ovsx publish /tmp/extension.vsix"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다운로드한 확장자 파일을 삭제합니다.
oc exec -n openvsx "${OVSX_POD_NAME}" -- bash -c "rm /tmp/extension.vsix"
oc exec -n openvsx "${OVSX_POD_NAME}" -- bash -c "rm /tmp/extension.vsix"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 작은 정보예:
redhat.vscode-yaml
확장 버전 1.18.0을 게시합니다.oc exec -n openvsx "${OVSX_POD_NAME}" -- bash -c "wget -O /tmp/extension.vsix https://open-vsx.org/api/redhat/vscode-yaml/1.18.0/file/redhat.vscode-yaml-1.18.0.vsix " && oc exec -n openvsx "${OVSX_POD_NAME}" -- bash -c "ovsx create-namespace redhat" || true && oc exec -n openvsx "${OVSX_POD_NAME}" -- bash -c "ovsx publish /tmp/extension.vsix" && oc exec -n openvsx "${OVSX_POD_NAME}" -- bash -c "rm /tmp/extension.vsix"
oc exec -n openvsx "${OVSX_POD_NAME}" -- bash -c "wget -O /tmp/extension.vsix https://open-vsx.org/api/redhat/vscode-yaml/1.18.0/file/redhat.vscode-yaml-1.18.0.vsix " && oc exec -n openvsx "${OVSX_POD_NAME}" -- bash -c "ovsx create-namespace redhat" || true && oc exec -n openvsx "${OVSX_POD_NAME}" -- bash -c "ovsx publish /tmp/extension.vsix" && oc exec -n openvsx "${OVSX_POD_NAME}" -- bash -c "rm /tmp/extension.vsix"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Open VSX 확장 레지스트리를 확인합니다.
OPENVSX_ROUTE_URL 환경 변수에 정의된 URL로 이동하여 게시된 확장 프로그램 목록을 확인합니다.
6.2.3. Open VSX 서비스에 대한 내부 액세스 설정 링크 복사링크가 클립보드에 복사되었습니다!
공개 경로를 사용하여 Open VSX 레지스트리를 참조하는 것 외에도 OpenShift Dev Spaces를 구성하여 내부 클러스터 서비스 라우팅을 설정할 수도 있습니다. 이 방법은 트래픽을 클러스터 내에서 제한하여 공용 노출을 방지하여 향상된 보안을 제공합니다.
프로세스
내부 서비스 라우팅 단계:
공개 경로를 제거합니다.
Open VSX 레지스트리와 연결된 공용 경로를 삭제하여 외부 액세스를 제한합니다.
oc delete route internal -n openvsx
oc delete route internal -n openvsx
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 내부 Open VSX 서비스 URL을 설정합니다.
내부 클러스터 서비스 DNS를 사용하도록 CheCluster 사용자 정의 리소스를 업데이트합니다.
export CHECLUSTER_NAME="$(oc get checluster --all-namespaces -o json | jq -r '.items[0].metadata.name')" && export CHECLUSTER_NAMESPACE="$(oc get checluster --all-namespaces -o json | jq -r '.items[0].metadata.namespace')" && export PATCH='{"spec":{"components":{"pluginRegistry":{"openVSXURL":"http://openvsx-server.openvsx.svc:8080"}}}}' && oc patch checluster "${CHECLUSTER_NAME}" --type=merge --patch "${PATCH}" -n "${CHECLUSTER_NAMESPACE}"
export CHECLUSTER_NAME="$(oc get checluster --all-namespaces -o json | jq -r '.items[0].metadata.name')" && export CHECLUSTER_NAMESPACE="$(oc get checluster --all-namespaces -o json | jq -r '.items[0].metadata.namespace')" && export PATCH='{"spec":{"components":{"pluginRegistry":{"openVSXURL":"http://openvsx-server.openvsx.svc:8080"}}}}' && oc patch checluster "${CHECLUSTER_NAME}" --type=merge --patch "${PATCH}" -n "${CHECLUSTER_NAMESPACE}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow