6.2. 运行 Open VSX On-Premises


按照以下说明来部署和配置内部 Eclipse Open VSX 扩展 registry,与 OpenShift Dev Spaces 和 OpenShift 环境完全集成。选择两个设置路径之一:使用 OpenShift Dev Spaces 工作区或 OpenShift CLI (oc)来帮助设置安全、内部的 Open VSX 实例。这包括创建必要的 OpenShift 项目、部署 Open VSX 组件、发布扩展并将 registry 与 OpenShift Dev Spaces 集成。

6.2.1. 使用 OpenShift Dev Spaces 实例

先决条件

  • 以集群管理员身份登录。

流程

  1. 使用 Open VSX 存储库启动工作区。

    使用以下 Eclipse Open VSX 存储库 创建工作区。

    警告

    .devfile.yaml 包含一个 elasticsearch 组件,它不支持 IBM Power (ppc64le)或 IBM Z (s390x)架构。要在这些构架中成功启动工作区,唯一的选项是从 devfile 中删除这个组件。或者,您可以使用 OpenShift CLI 工具 文档,该文档描述了如何在不启动工作区的情况下单独运行 Open VSX。

    提示

    环境(包括所有必要命令)在 .devfile.yaml 文件中定义。

  2. 为 Open VSX 创建一个新的 OpenShift 项目。

    运行 2.1。在工作区(Terminal Run Task… devfile 2.1)中为 OpenVSX 任务创建 Namespace。为 OpenVSX 创建命名空间。应该在集群中创建名为 openvsx 的新项目。

  3. 部署 Open VSX。

    运行 2.4.1。在工作区(Terminal Run Task… devfile 2.4.1 中部署自定义 OpenVSX 任务。部署自定义 OpenVSX)。此任务将要求提供 Open VSX 服务器镜像。在终端输入 registry.redhat.io/devspaces/openvsx-rhel9:3.23。因此,在 OpenShift 控制台中,您可以找到带有两个组件的 openvsx 项目: PostgreSQL 数据库和 Open VSX 服务器。此外,Open VSX UI 应可通过 OpenShift 集群中的公开路由访问。

    提示

    所有部署信息都在 deploy/openshift/openvsx-deployment-no-es.yml 文件中带有一些默认值,如 OVSX_PAT_BASE64

  4. 将带有 PAT 的 Open VSX 用户添加到数据库。

    运行 2.5。将带有 PAT 的 OpenVSX 用户添加到工作区中的 DB 任务(Terminal Run Task… devfile 2.5.将带有 PAT 的 OpenVSX 用户添加到 DB)。命令将要求提供 Open VSX 用户名和用户 PAT。您可以点 enter 来使用默认值。

    重要

    用户 PAT 必须与部署文件中指定的 OVSX_PAT_BASE64 的解码值匹配。如果 OVSX_PAT_BASE64 已更新,请使用新令牌的解码值作为用户 PAT。

  5. 将 OpenShift Dev Spaces 配置为使用内部 Open VSX。

    运行 2.6。将 Che 配置为使用工作区中的内部 Open VSX registry 任务(Terminal Run Task… devfile 2.6。将 Che 配置为使用内部 OpenVSX registry。它将补丁应用到 CheCluster 自定义资源,更新其配置,以使用指定的 Open VSX URL 作为扩展 registry。

  6. .vsix 文件发布扩展。

    开始时,Open VSX 注册表不提供任何扩展。在 openvsx-server pod 正在运行且处于 Ready 状态后,扩展可以发布到 registry。2.8。从 VSIX 文件发布 Visual Studio Code Extension 命令直接从 .vsix 文件向本地 Open VSX registry 发布扩展。它会提示您提供扩展 的命名空间名称.vsix 文件的路径。

  7. 发布扩展列表。

    2.9。发布 Visual Studio Code Extensions 命令列表,根据下载 URL 将预定义的 Microsoft Visual Studio Code 扩展列表发布到内部 Open VSX registry。

    提示

    命令从 deploy/openshift/extensions.txt 文件中读取,该文件列出了要发布的每个扩展的 .vsix 文件的 URL。要将扩展发布到 Open VSX,请根据需要更新 extensions.txt 文件,然后运行 2.9。从工作区中发布 Visual Studio Code Extensions 任务列表: Terminal Run Task… devfile 2.9。发布 Visual Studio Code Extensions 列表

  8. 验证 OpenShift Dev Spaces 使用内部 Open VSX。

    启动任何工作区,并在工作区 IDE 的 Extensions 视图中检查可用的扩展,或者在 OpenVSX OpenShift 项目中打开内部路由。

6.2.2. 使用 OpenShift CLI (oc)工具

先决条件

  • 安装的 oc 工具。
  • 登录到以集群管理员部署 OpenShift Dev Spaces 的 OpenShift 集群。

    提示

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

流程

  1. 为 Open VSX 创建一个新的 OpenShift 项目。

    oc new-project openvsx
    Copy to Clipboard Toggle word wrap
  2. 部署 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 -
    Copy to Clipboard Toggle word wrap
  3. 验证 openvsx 命名空间中的所有 pod 都在运行并就绪。可能需要过几分钟后,所有 pod 才会就绪。运行以下命令:

    oc get pods -n openvsx \
      -o jsonpath='{range .items[*]}{@.metadata.name}{"\t"}{@.status.phase}{"\t"}{.status.containerStatuses[*].ready}{"\n"}{end}'
    Copy to Clipboard Toggle word wrap
  4. 将带有 PAT 的 Open VSX 用户添加到数据库。

    查找 PostgreSQL pod:

    export POSTGRESQL_POD_NAME=$(oc get pods -n openvsx \
       -o jsonpath="{.items[*].metadata.name}" | tr ' ' '\n' | grep '^postgresql' | head -n 1)
    Copy to Clipboard Toggle word wrap

    将用户名插入到 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');\""
    Copy to Clipboard Toggle word wrap

    将用户 PAT 插入到 OpenVSX 数据库:

    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 Toggle word wrap
  5. 将 OpenShift Dev Spaces 配置为使用内部 Open VSX。

    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 Toggle word wrap
    提示

    有关在 OpenShift Dev Spaces 中配置 Open VSX registry URL 的详情,请参考 第 6.3 节 “打开 VSX 注册表 URL”

  6. 使用 ovsx 命令发布 Visual Studio Code 扩展。

    注意

    开始时,Open VSX 注册表不提供任何扩展。

    配置所有内容后,下一步是从 openvsx-server 容器内发布 Visual Studio Code 扩展。要做到这一点,您需要两个信息:扩展 命名空间名称 (用于发布)、.vsix 扩展软件包的下载 URL。获取这些信息后,运行以下命令发布扩展:

    1. 检索运行 Open VSX 服务器的 pod 的名称:

      export OVSX_POD_NAME=$(oc get pods -n openvsx -o jsonpath="{.items[*].metadata.name}" | tr ' ' '\n' | grep ^openvsx-server)
      Copy to Clipboard Toggle word wrap
    2. 下载 .vsix 扩展:

      oc exec -n openvsx "${OVSX_POD_NAME}" -- bash -c "wget -O /tmp/extension.vsix EXTENSION_DOWNLOAD_URL "
      Copy to Clipboard Toggle word wrap
    3. 创建扩展命名空间:

      oc exec -n openvsx "${OVSX_POD_NAME}" -- bash -c "ovsx create-namespace EXTENSION_NAMESPACE_NAME" || true
      Copy to Clipboard Toggle word wrap
    4. 发布扩展:

      oc exec -n openvsx "${OVSX_POD_NAME}" -- bash -c "ovsx publish /tmp/extension.vsix"
      Copy to Clipboard Toggle word wrap
    5. 删除下载的扩展文件:

      oc exec -n openvsx "${OVSX_POD_NAME}" -- bash -c "rm /tmp/extension.vsix"
      Copy to Clipboard Toggle word wrap
      提示

      示例:发布 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"
      Copy to Clipboard Toggle word wrap
  7. 验证 Open VSX 扩展 registry。

    通过导航到 OPENVSX_ROUTE_URL 环境变量中定义的 URL,以检查已发布的扩展列表。

6.2.3. 设置对 Open VSX 服务的内部访问权限

除了使用公共路由来引用 Open VSX registry 外,您还可以将 OpenShift Dev Spaces 配置为设置内部集群服务路由。这个方法通过在集群中保持流量限制来提供更高的安全性,从而避免了公开公开。

流程

内部服务路由的步骤:

  1. 删除公共路由。

    删除与 Open VSX registry 关联的公共路由,以限制外部访问:

    oc delete route internal -n openvsx
    Copy to Clipboard Toggle word wrap
  2. 设置内部 Open VSX 服务 URL。

    更新 CheCluster 自定义资源以使用内部集群服务 DNS:

    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 Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat